초기화가 중요한 이유와 딥러닝에서 꼭 알아야 할 He 초기화

Bean·2025년 5월 15일
0

인공지능

목록 보기
30/123

딥러닝에서 네트워크 파라미터 초기화는 학습 성능에 큰 영향을 미치는 핵심 요소입니다. 특히, He 초기화(He Initialization)는 ReLU 활성화 함수를 사용할 때 매우 효과적인 초기화 방법입니다.

1. 왜 파라미터 초기화가 중요한가요?

딥러닝 모델에서 학습은 파라미터(W, b)를 업데이트하면서 손실을 줄여가는 과정입니다.
이때, 파라미터의 초기값이 잘못 설정되면 다음과 같은 문제가 생깁니다:

  • Gradient Vanishing (기울기 소실): 역전파 시, 기울기가 0에 가까워져 학습이 멈춤
  • Gradient Exploding (기울기 폭주): 기울기가 너무 커져서 파라미터가 발산
  • 비효율적인 수렴: 학습 속도가 느려짐

즉, 초기화는 학습을 시작하는 기반이며, 빠르고 안정적인 학습을 위한 기본 조건입니다.


2. 대표적인 초기화 방법

2.1. 무작위 초기화 (Random Initialization)

너무 단순해서 실제로는 잘 쓰이지 않음. 예를 들어 W ~ N(0, 1)처럼.

2.2. Xavier 초기화 (Glorot Initialization)

  • 주로 sigmoid, tanh양쪽으로 출력이 분포되는 함수에 사용
  • 입력과 출력의 개수를 모두 고려해서 초기화
WN(0,1nin)또는N(0,2nin+nout)W \sim \mathcal{N}\left(0, \frac{1}{n_{\text{in}}}\right) \quad \text{또는} \quad \mathcal{N}\left(0, \frac{2}{n_{\text{in}} + n_{\text{out}}}\right)

3. He 초기화 (He Initialization)

3.1. 언제 사용하나요?

  • **ReLU 계열 활성화 함수 (ReLU, LeakyReLU 등)**를 쓸 때 사용
  • ReLU는 음수 출력을 0으로 만들기 때문에, Xavier보다 더 큰 분산이 필요

3.2. 수식:

WN(0,2nin)W \sim \mathcal{N}\left(0, \frac{2}{n_{\text{in}}} \right)

또는

WUniform(6nin,6nin)W \sim \text{Uniform}\left(-\sqrt{\frac{6}{n_{\text{in}}}}, \sqrt{\frac{6}{n_{\text{in}}}} \right)
  • n_in: 현재 layer로 들어오는 입력 노드 개수

3.3. 왜 좋은가요?

  • ReLU 함수는 입력의 절반을 0으로 만들어버리기 때문에,
    출력의 분산을 일정하게 유지하려면 더 큰 초기값 분산이 필요함
  • He 초기화는 이 점을 수학적으로 반영해서 학습 안정성과 속도를 높여줍니다

4. 실전 예시 (PyTorch 기준):

import torch.nn as nn
import torch.nn.init as init

layer = nn.Linear(128, 64)
init.kaiming_normal_(layer.weight, nonlinearity='relu')  # He 초기화

또는 Keras에서는 이렇게:

from tensorflow.keras.layers import Dense
from tensorflow.keras.initializers import HeNormal

Dense(64, kernel_initializer=HeNormal())

5. 요약 정리

초기화 방법주로 사용하는 활성화 함수수식특징
Random없음N(0, 1) 등비효율적, 비추천
Xaviertanh, sigmoidN(0, 1 / n)평균적 분산 유지
HeReLU 계열N(0, 2 / n)ReLU에 최적, 널리 사용
profile
AI developer

0개의 댓글