활성화 함수 (Activation Functions)
핵심 요약: 활성화 함수(Activation Function)는 신경망에 비선형성(Non-linearity)을 부여하는 함수이다. 활성화 함수가 없으면 층을 아무리 쌓아도 결국 하나의 직선(선형 변환)에 불과하다. ReLU, Sigmoid, GELU 등 다양한 함수가 있으며, 상황에 맞는 선택이 중요하다.
활성화 함수(Activation Function)는 신경망에 비선형성(non-linearity)을 부여하는 핵심 요소이다. 활성화 함수가 없으면 아무리 깊은 네트워크도 단순한 선형 변환에 불과하다. 적절한 활성화 함수의 선택은 학습 속도, 수렴 안정성, 그리고 최종 성능에 직접적인 영향을 미친다.
일상적 비유: Sigmoid는 점점 끈적해지는 스위치와 같다. 입력이 극단으로 가면 출력이 거의 변하지 않아 “끈적끈적” 멈춘다(포화). 반면 ReLU는 깔끔한 on/off 스위치이다. 양수면 그대로 통과(on), 음수면 완전 차단(off). 단순하지만 이 깔끔함이 깊은 네트워크의 학습을 극적으로 개선한다.
탄생 배경
섹션 제목: “탄생 배경”활성화 함수의 역사는 “기울기가 사라지는 문제”와의 전쟁이다.
-
Sigmoid 시대 (1980~2000년대 초): 초기 신경망에서 sigmoid와 tanh가 표준이었다. 출력이 확률로 해석 가능하고 수학적으로 매끄러운 장점이 있었지만, 깊은 네트워크에서 기울기 소실(vanishing gradient) 문제가 심각했다. 10층만 쌓아도 초기 층의 기울기가 으로 사실상 소멸하여, 깊은 네트워크는 실질적으로 학습이 불가능했다.
-
ReLU 혁명 — AlexNet (2012): Alex Krizhevsky가 AlexNet에서 ReLU를 사용하여 ImageNet 대회를 압도적으로 우승하면서, ReLU가 딥러닝의 표준 활성화 함수로 자리잡았다. ReLU의 단순함()이 오히려 강점이었다. 양의 영역에서 기울기가 항상 1이므로 기울기 소실 문제가 크게 완화되었고, 비교 연산만으로 계산이 가능하여 속도도 빨랐다. 이 전환은 “더 복잡한 함수가 더 좋다”는 직관을 뒤엎은 사건이었다.
-
후속 발전: ReLU의 dying neuron 문제를 보완하기 위해 Leaky ReLU, PReLU, ELU 등의 변형이 등장했고, Transformer 시대에는 GELU(2016)와 Swish(2017)가 새로운 표준이 되었다.
핵심 개념
섹션 제목: “핵심 개념”숫자로 이해하기
섹션 제목: “숫자로 이해하기”같은 입력 를 Sigmoid와 ReLU에 각각 통과시켜 비교해 보자.
-
Sigmoid: 모든 값을 0과 1 사이로 “압축”한다
- →
- 입력이 극단적으로 크거나 작으면 출력 변화가 거의 없다 (포화(Saturation) 문제)
-
ReLU: 음수는 0, 양수는 그대로 통과시킨다
- →
- 양수 영역에서 기울기가 항상 1이라 기울기 소실(Vanishing Gradient)이 없다
Sigmoid는 입력 0 근처에서만 기울기가 유의미하고(최대 0.25), ReLU는 양수 영역에서 기울기가 항상 1이다. 이 차이가 깊은 네트워크에서 학습 속도의 큰 차이를 만든다.
1. Sigmoid (시그모이드)
섹션 제목: “1. Sigmoid (시그모이드)”
- 출력 범위: — 결과를 확률(Probability)처럼 해석할 수 있다
- 도함수(Derivative): , 최대값 0.25
| 장점 | 단점 |
|---|---|
| 확률로 해석 가능 | Vanishing gradient (포화 영역에서 기울기 ) |
| 매끄러운 미분 | 출력이 zero-centered가 아님 → zig-zag 업데이트 |
| 지수 연산으로 계산 비용 높음 |
주요 사용처: 이진 분류의 출력층, LSTM의 게이트 메커니즘
2. Tanh (하이퍼볼릭 탄젠트)
섹션 제목: “2. Tanh (하이퍼볼릭 탄젠트)”
- 출력 범위:
- 도함수: , 최대값 1.0
- Sigmoid와의 관계:
| 장점 | 단점 |
|---|---|
| Zero-centered 출력 | 여전히 vanishing gradient 문제 |
| Sigmoid보다 강한 기울기 | 포화 영역 존재 |
3. ReLU (Rectified Linear Unit)
섹션 제목: “3. ReLU (Rectified Linear Unit)”
- 도함수: 이면 1, 이면 0
| 장점 | 단점 |
|---|---|
| 계산 효율적 (비교 연산만 필요) | Dying ReLU: 뉴런이 영구적으로 비활성화 |
| 양의 영역에서 기울기 소실 없음 | 에서 미분 불가 |
| 희소 활성화(sparsity) → 효율적 표현 | Zero-centered가 아님 |
실용 팁: 학습률(learning rate)이 너무 크면 dying ReLU가 가속된다. 큰 음의 가중치 업데이트로 뉴런이 음의 영역에 갇히면 기울기가 0이 되어 영원히 복구되지 않는다.
4. ReLU 변형들
섹션 제목: “4. ReLU 변형들”Leaky ReLU
섹션 제목: “Leaky ReLU”
보통 . 음의 영역에서도 작은 기울기를 유지하여 dying ReLU를 방지한다.
PReLU (Parametric ReLU)
섹션 제목: “PReLU (Parametric ReLU)”를 학습 가능한 파라미터로 설정. 데이터에 따라 최적의 기울기를 학습한다.
ELU (Exponential Linear Unit)
섹션 제목: “ELU (Exponential Linear Unit)”
Zero-centered에 가까운 출력을 생성하며, 음의 영역에서 부드러운 곡선을 가진다.
ReLU 변형 비교:
| 활성화 함수 | Dying ReLU | Zero-centered | 계산 비용 | 추가 파라미터 |
|---|---|---|---|---|
| ReLU | 있음 | 아님 | 매우 낮음 | 없음 |
| Leaky ReLU | 없음 | 아님 | 매우 낮음 | (고정) |
| PReLU | 없음 | 아님 | 낮음 | (학습) |
| ELU | 없음 | 거의 | 중간 (지수 연산) | (고정) |
5. GELU (Gaussian Error Linear Unit)
섹션 제목: “5. GELU (Gaussian Error Linear Unit)”
여기서 는 표준 정규 분포의 CDF(누적분포함수)이다.
근사 공식:
- 직관: 확률적 해석 — 입력값이 클수록 “통과”할 확률이 높음. CDF(Cumulative Distribution Function, 누적분포함수)는 특정 값 이하일 확률을 나타내는 함수이다
- 사용처: BERT, GPT 등 Transformer 모델의 표준 활성화 함수
6. Swish / SiLU
섹션 제목: “6. Swish / SiLU”
이면 SiLU(Sigmoid Linear Unit)와 동일하다.
- 특징: 비단조(non-monotonic), 자기 게이팅(self-gating)
- 깊은 네트워크에서 ReLU보다 약간 우수한 경우가 많음 (Google Brain 연구)
7. Softmax
섹션 제목: “7. Softmax”
- 출력의 합 = 1 → 확률 분포로 해석 가능
- Temperature scaling:
- 높으면 균등한 분포 (더 부드러움)
- 낮으면 날카로운 분포 (더 확신)
- 수치 안정성: 사용하여 오버플로 방지
8. 기울기 소실 / 폭발 (Vanishing / Exploding Gradients)
섹션 제목: “8. 기울기 소실 / 폭발 (Vanishing / Exploding Gradients)”깊은 네트워크에서 역전파 시 chain rule에 의해 기울기가 연쇄적으로 곱해진다.
- Vanishing: → 초기 층이 학습되지 않음
- Exploding: → 학습 발산
해결책:
- 적절한 활성화 함수 선택 (ReLU 계열)
- 적절한 가중치 초기화 (He/Xavier)
- 정규화 기법 (BatchNorm, LayerNorm)
- 잔차 연결 (Residual Connection, ResNet)
- Gradient clipping
상세 내용
섹션 제목: “상세 내용”활성화 함수 선택 가이드
섹션 제목: “활성화 함수 선택 가이드”Sigmoid와 Tanh의 기울기 소실 문제
섹션 제목: “Sigmoid와 Tanh의 기울기 소실 문제”Sigmoid의 도함수 최대값이 0.25이므로, 역전파 시 층을 거칠 때마다 기울기가 최대 1/4로 줄어든다. 10층만 거쳐도 기울기가 으로 사실상 소멸한다.
Tanh는 도함수 최대값이 1.0이지만, 포화 영역()에서는 여전히 기울기가 0에 가깝다.
ReLU의 희소 활성화 (Sparsity)
섹션 제목: “ReLU의 희소 활성화 (Sparsity)”ReLU는 음의 입력을 모두 0으로 만들기 때문에, 네트워크의 활성화가 자연스럽게 희소(sparse)해진다. 이는:
- 계산 효율성 향상
- 특징 표현의 의미 있는 분리
- 생물학적 뉴런의 활성화 패턴과 유사
언제 사용하는가
섹션 제목: “언제 사용하는가”| 상황 | 추천 활성화 함수 |
|---|---|
| CNN/MLP 은닉층 (기본) | ReLU |
| Dying ReLU가 우려될 때 | Leaky ReLU, ELU |
| Transformer 계열 | GELU |
| RNN/LSTM 은닉층 | Tanh |
| LSTM 게이트 | Sigmoid |
| 이진 분류 출력 | Sigmoid |
| 다중 분류 출력 | Softmax |
| 회귀 출력 | Linear (없음) |
| 최신 깊은 네트워크 | Swish/SiLU, GELU |
실전 사례
섹션 제목: “실전 사례”Dying ReLU — 실무에서 뉴런이 죽어버린 사례
섹션 제목: “Dying ReLU — 실무에서 뉴런이 죽어버린 사례”Dying ReLU는 교과서적 개념이 아니라 실무에서 빈번히 마주치는 실질적 문제이다. 대규모 모델을 학습시킬 때, 전체 뉴런의 10~40%가 영구적으로 비활성화되는 현상이 보고된다.
발생 메커니즘: 학습 중 큰 음의 가중치 업데이트가 발생하면, 특정 뉴런의 입력이 항상 음수가 된다. ReLU는 음수 입력에 대해 기울기가 0이므로, 한번 음의 영역에 갇힌 뉴런은 어떤 데이터가 들어와도 출력이 0이고, 기울기도 0이어서 영원히 복구되지 않는다. 마치 전구가 꺼지면 다시는 켜지지 않는 것과 같다.
실무 해결 사례: 한 컴퓨터 비전 팀이 대규모 이미지 분류 모델을 학습시키던 중, 학습률을 0.01에서 0.1로 올리자 갑자기 정확도가 급락했다. 조사 결과, 네트워크 뉴런의 약 35%가 dying ReLU 상태임을 발견했다. 해결책으로 ReLU를 Leaky ReLU()로 교체하자, 음의 영역에서도 미세한 기울기()가 유지되어 뉴런이 “되살아날” 수 있게 되었다. 같은 학습률에서 정확도가 정상 수준으로 회복되었다.
예방 팁:
- 학습률을 너무 크게 설정하지 말 것 (dying ReLU가 가속됨)
- 모니터링: 각 층의 활성화 중 0인 비율을 추적하면 조기에 문제를 발견할 수 있음
- 대안 활성화: Leaky ReLU, ELU, GELU 등으로 교체 고려
흔한 오해와 함정
섹션 제목: “흔한 오해와 함정”-
“ReLU가 항상 최고다”: ReLU는 강력하지만 dying ReLU 문제가 있다. Transformer에서는 GELU가 표준이며, 상황에 따라 다른 함수가 적합할 수 있다.
-
Softmax 출력을 “확신도(confidence)“로 해석: softmax 출력이 0.99라고 해서 모델이 99% 확신한다는 뜻이 아니다. 이를 위해서는 별도의 calibration이 필요하다.
-
은닉층에 Sigmoid 사용: 깊은 네트워크에서 sigmoid를 은닉층에 사용하면 vanishing gradient가 심해진다. 은닉층에는 ReLU 계열을 사용하라.
-
수치 안정성 무시: softmax 구현 시 를 빼지 않으면 가 오버플로될 수 있다. 대부분의 프레임워크는 이를 내부적으로 처리하지만, 직접 구현 시 반드시 고려해야 한다.
다른 주제와의 연결
섹션 제목: “다른 주제와의 연결”- 신경망 기초: 활성화 함수가 필요한 이유 (비선형성)
- 역전파: 활성화 함수의 도함수가 기울기 계산에 미치는 영향
- 가중치 초기화: 활성화 함수에 따른 초기화 전략 (Xavier vs He)
- 정규화: 활성화 분포를 안정화하는 기법
- Transformer: GELU의 사용처
- RNN/LSTM/GRU: Tanh와 Sigmoid의 게이트 메커니즘 활용