
신경망에서 활성화 함수(activation function)는 매우 중요한 역할을 한다.
신경망은 기본적으로 입력 에 가중치 와 편향 를 곱해 선형 변환을 수행한다.
만약 이 값 그대로를 다음 층으로 넘긴다면, 아무리 층을 쌓아도 결국 하나의 선형 함수와 다르지 않다.
선형 함수는 직선(또는 초평면)으로만 데이터를 나눌 수 있기 때문에 XOR 같은 비선형 패턴을 표현할 수 없다.
따라서 비선형성을 도입하는 장치, 즉 활성화 함수가 반드시 필요하다.

시그모이드는 어떤 입력 값이 들어와도 출력을 0과 1 사이로 눌러주는 S자 곡선 함수다.
출력이 확률처럼 해석될 수 있기 때문에 이진 분류 문제의 출력층에서 직관적으로 사용된다. 하지만 입력 값이 너무 크거나 작을 때는 기울기가 거의 0에 가까워져 역전파가 제대로 전달되지 않는다. 이를 기울기 소실(Vanishing Gradient)이라고 부른다. 또한 출력이 0을 중심으로 대칭적이지 않아서 학습이 더딜 수 있다는 한계가 있다.

Tanh 함수는 시그모이드와 형태가 비슷하지만 출력 범위가 -1에서 1 사이로 확장된다.
출력이 0을 중심으로 대칭이기 때문에 시그모이드보다 학습이 좀 더 안정적이다. 그러나 값이 커지거나 작아질수록 기울기가 0으로 수렴하는 문제는 여전히 남아 있다. 따라서 기울기 소실 문제 때문에 심층 신경망에서는 잘 쓰이지 않는다.

ReLU는 지금 가장 널리 사용되는 활성화 함수다.
0보다 크면 입력을 그대로 통과시키고, 0 이하에서는 0을 출력한다. 계산이 단순하고 양수 구간에서 기울기가 항상 1이라 기울기 소실 문제를 크게 완화한다. 하지만 입력이 0 이하인 경우에는 기울기가 아예 0이 되어 뉴런이 학습에서 배제될 수 있다. 이 현상을 dying ReLU 문제라고 부르며, 이 문제는 뒤에 나오는 Leaky ReLU 등으로 완화할 수 있다.

Leaky ReLU는 ReLU의 변형으로, 음수 구간에서도 아주 작은 기울기를 남겨둔다.
이 방식은 dying ReLU 문제를 완화한다. 음수 입력에서도 조금씩 가중치가 업데이트되기 때문에 뉴런이 죽어버리는 상황을 줄여준다. 다만 이때 사용하는 (\alpha) 값은 임의적으로 정해야 하고, 최적의 값을 찾기 위해 실험이 필요하다.

Softmax는 주로 다중 분류 문제에서 출력층에 사용된다.
여러 개의 입력을 받아 각 클래스에 대해 0과 1 사이의 확률을 출력하며, 전체 합이 1이 된다. 그래서 각 출력 노드는 해당 클래스일 확률을 의미한다. 다만 값이 큰 쪽에 확률이 몰리는 경향이 있어서, log-sum-exp trick 같은 수치적 안정화 기법을 적용하는 경우가 많다.
선형 변환만 있으면 아무리 층을 쌓아도 전체는 하나의 선형 함수와 같다.
따라서 은닉층에는 반드시 활성화 함수를 넣어 비선형성을 주어야 한다.
여기서 선택한 함수가 학습 효율, 속도, 성능에 큰 영향을 준다.
출력층에서는 문제의 성격에 맞는 활성화 함수를 선택한다.
모든 문제에서 쓰이는 건 아니고, 목표 값의 의미에 따라 달라진다.
기본적으로는 ReLU부터 시작하고, 문제가 생기면 변형 함수들을 고려한다.
이진 분류 → Sigmoid
출력이 0~1로 제한되어 “양성 클래스일 확률”처럼 해석할 수 있다.
손실 함수로 Binary Cross-Entropy를 함께 사용한다.
다중 분류 → Softmax
각 클래스에 대해 확률 분포를 만들어준다.
손실 함수는 Cross-Entropy를 사용한다.
회귀 문제 → 없음 (Linear)
예측해야 할 값이 확률이 아니라 실제 수치이기 때문이다.
출력층은 그대로 실수 값을 출력하며, 보통 형태로 표현된다.
