
Sigmoid와 ReLU를 넘어: Leaky ReLU, ELU, Swish, 그리고 Softmax
요약
ReLU의 '죽은 뉴런(dying neurons)' 문제를 해결하기 위한 다양한 활성화 함수들을 비교 분석합니다. Leaky ReLU, ELU, Swish 등 각 함수의 수학적 특성과 장단점을 다룹니다.
핵심 포인트
- ReLU는 음수 입력 시 기울기가 0이 되어 뉴런이 죽는 문제가 발생함
- Leaky ReLU는 음수 영역에 작은 기울기를 주어 뉴런 회복을 도움
- ELU는 지수 곡선을 사용하여 0 근처에서 부드러운 기울기를 제공함
- Swish는 매끄러운 곡선과 비단조성으로 깊은 네트워크 학습에 유리함
나의 "AI/ML 노트 다시 보기" 시리즈의 11부입니다. 이 시리즈의 이전 단계에서는 sigmoid와 일반적인 ReLU를 다루었습니다. ReLU는 양수 입력에 대해 sigmoid의 vanishing gradient (기울기 소실) 문제를 해결했지만, 그 자체로 새로운 실패 모드를 도입했으며, 이를 해결하기 위해 구축된 활성화 함수 (activation functions) 제품군이 존재합니다.
일반적인 ReLU의 문제점: dying neurons (죽은 뉴런)
ReLU는 max(0, z)입니다. 어떤 음수 입력에 대해서도 출력은 정확히 0이며, gradient (기울기) 또한 0입니다. 만약 뉴런의 가중치 (weights)가 입력이 지속적으로 음수인 상태로 표류하게 되면, 그 gradient는 영원히 0으로 유지됩니다. 즉, 아무리 더 많은 훈련을 진행하더라도 해당 뉴런은 업데이트를 완전히 멈추게 됩니다. 이를 **dying ReLU problem (죽은 ReLU 문제)**라고 부르며, 이는 네트워크 용량의 의미 있는 부분을 소리 없이 제거할 수 있습니다.
Leaky ReLU
해결책은 거의 당황스러울 정도로 간단합니다. 음수 입력에 대해 정확히 0을 출력하는 대신, 입력의 작은 비율을 출력하는 것입니다.
LeakyReLU(z) = z if z > 0, else 0.01 * z
음수 값에 대한 이 아주 작은 비영 (non-zero) 기울기는 작은 gradient가 계속 흐를 수 있게 하기에 충분하며, 따라서 음수 쪽으로 표류한 뉴런도 영구적으로 죽는 대신 여전히 회복할 수 있습니다.
ELU (Exponential Linear Unit)
ELU(z) = z if z > 0, else alpha * (e^z - 1)
ELU는 음수 입력에 대해 다른 접근 방식을 취합니다. 직선 대신 -alpha에 부드럽게 접근하는 지수 곡선 (exponential curve)을 사용합니다. 이는 0 근처에서 더 부드러운 gradient를 제공하며, 이는 훈련 안정성 (training stability)에 도움을 줄 수 있습니다. 트레이드오프 (tradeoff)는 다음과 같습니다. 모든 음수 입력에 대해 e^z를 계산하는 것은 Leaky ReLU의 단순한 곱셈보다 유의미하게 더 비용이 많이 들기 때문에, 이는 엄격한 업그레이드가 아닌 실제적인 속도 대 품질의 트레이드오프입니다.
**PReLU (Parametric ReLU)**는 그 기울기(alpha)를 고정된 0.01 대신 학습 가능한 (learnable) 파라미터로 만듦으로써 Leaky ReLU를 한 단계 더 발전시켰습니다. 즉, 네트워크가 학습 과정에서 스스로 최적의 기울기를 찾아냅니다.
Swish
Swish(z) = z * sigmoid(z)
Swish는 비교적 최신 활성화 함수로, 일반적으로 매우 깊은 네트워크(노트에서는 40층 이상 언급)에 권장됩니다. ReLU와 달리 모든 구간에서 매끄러우며(smooth), 0 근처에서 약간의 비단조성(non-monotonic)을 띠는데, 이는 경험적으로 매우 깊은 아키텍처에서 그래디언트 흐름 (gradient flow)을 돕는 경향이 있습니다.
Softmax: 은닉층이 아닌 출력층을 위한 함수
위의 모든 함수는 은닉층 (hidden-layer) 활성화 함수입니다. Softmax는 다릅니다. 이는 다중 클래스 분류 (multi-class classification)를 위해 출력층 (output layer)에서 특별히 사용되며, 일련의 원시 점수 (raw scores)를 합계가 1이 되는 유효한 확률 분포 (probability distribution)로 변환합니다:
softmax(z_i) = e^(z_i) / sum over j of e^(z_j)
만약 모델이 4개의 클래스에 대해 원시 점수를 출력하고 softmax가 이를 [0.6, 0.2, 0.1, 0.1]과 같은 형태로 변환한다면, 가장 높은 확률(0.6)을 가진 클래스가 모델의 예측값이 됩니다. 그리고 sigmoid와 달리, 이는 두 개 이상의 클래스로 자연스럽게 확장됩니다.
이것이 중요한 이유
단 하나의 "최고"인 활성화 함수는 없습니다. 각 함수는 그래디언트 동작 (gradient behavior), 계산 비용 (computational cost), 그리고 학습 안정성 (training stability) 사이에서 서로 다른 트레이드오프를 가집니다. 중요한 것은 특정 활성화 함수가 어떤 문제를 해결하기 위해 만들어졌는지를 인식하는 것이며, 이를 통해 특정 아키텍처에 대한 선택이 단순히 "튜토리얼에서 사용한 것"이 아닌 의도적인 결정이 되도록 하는 것입니다.
Original Notes:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기



