가중치 초기화(Weight initialization)는 매개변수 초기화(parameter initialization)라고도 불리며, 신경망의 훈련 가능한 매개변수에 초기 값을 할당하는 훈련 전 단계이다. 딥러닝에서 신경망은 훈련 중에 수정되는 가중치와 편향을 포함하며, 초기 값의 선택은 수렴 속도, 활성화 값의 규모, 역전파 중 기울기 신호의 규모, 그리고 최종 모델의 품질에 영향을 미친다. 적절한 초기화는 기울기 소실 및 기울기 폭주, 활성화 함수 포화와 같은 문제를 피하기 위해 필요하다. 문서 제목이 "가중치 초기화"이지만 가중치와 편향 모두 훈련 가능한 매개변수이며, 합성곱 신경망(CNN)의 합성곱 커널과 편향에도 동일한 원리가 적용된다.
상수 초기화
가장 간단한 형태의 초기화는 모든 가중치와 편향을 0으로 설정하는 영점 초기화(zero initialization)이다. 이는 편향에 흔히 사용되지만 가중치에는 사용되지 않는데, 그 이유는 대칭성(symmetry)을 초래하기 때문이다. 한 층의 모든 뉴런이 동일한 기울기를 받아 동일한 특징을 학습하게 되어 네트워크의 용량이 심각하게 제한된다. 대부분의 경우 편향은 0으로 초기화되지만, 일부 상황에서는 0이 아닌 값이 필요하다. 예를 들어, LSTM의 망각 게이트(forget gate)와 같은 곱셈 단위에서 편향을 1로 초기화하면 게이트를 통해 좋은 기울기 신호가 흐를 수 있다. ReLU 활성화를 사용하는 뉴런의 경우 편향을 0.1과 같은 작은 양수 값으로 초기화하면 뉴런이 비활성화되어 학습을 멈추는 죽은 ReLU(dying ReLU) 문제를 피하는 데 도움이 될 수 있다.
순환 신경망(RNN)의 경우, 경계가 있는 활성화 함수(예: 시그모이드 또는 tanh)가 일반적으로 사용되는데, 그 이유는 경계가 없는 활성화는 값의 폭주를 유발할 수 있기 때문이다. Le, Jaitly, Hinton(2015)은 네트워크의 순환 부분의 가중치를 항등 행렬로, 편향을 0으로 초기화할 것을 제안했는데, 이는 잔차 연결(residual connection) 및 망각 게이트가 없는 LSTM의 개념과 유사하다.
무작위 초기화
무작위 초기화는 일반적으로 각 가중치에 대해 독립적으로 정규 분포 또는 균등 분포에서 가중치를 샘플링하는 것을 포함한다. 이는 대칭성을 깨뜨려 서로 다른 뉴런이 서로 다른 특징을 학습할 수 있게 한다. 분포의 규모는 중요하다. 값이 너무 크면 활성화 또는 기울기의 폭주를 유발할 수 있고, 너무 작으면 신호의 소실을 유발할 수 있다. 적절한 규모를 선택하기 위해 여러 방법이 개발되었다.
LeCun 초기화
LeCun 초기화는 1998년 Yann LeCun과 동료들에 의해 대중화되었으며, 순방향 전파 중 활성화의 분산을 보존하도록 설계되었다. 각 가중치를 평균 0, 분산 1/n_in을 갖는 분포에서 독립적으로 샘플링하며, 여기서 n_in은 층의 입력 수(팬인, fan-in)이다. 균등 분포의 경우 U(±√(3/n_in))에서 샘플링하는 것에 해당한다. 이 방법은 tanh와 같이 0 근처에서 대략 선형인 활성화 함수와 잘 작동하지만, ReLU에는 최적이 아닐 수 있다.
Glorot 초기화
Glorot 초기화는 Xavier 초기화라고도 알려져 있으며, 2010년 Xavier Glorot와 Yoshua Bengio에 의해 제안되었다. 이는 순방향 전파 중 활성화 분산을 보존하는 것과 역방향 전파 중 기울기 분산을 보존하는 것이라는 두 가지 목표 사이의 절충안으로 설계되었다. 균등 초기화의 경우 각 가중치는 U(±√(6/(n_in + n_out)))에서 샘플링되며, 여기서 n_in은 팬인이고 n_out은 팬아웃(다음 층의 뉴런 수)이다. 이 방법은 시그모이드 또는 tanh 활성화를 사용하는 네트워크에 널리 사용되지만, 정류 비선형성(rectification nonlinearity)으로 인해 ReLU에는 덜 효과적일 수 있다.
He 초기화
He 초기화는 2015년 Kaiming He와 동료들에 의해 제안되었으며, ReLU 활성화를 위해 특별히 설계되었다. 가중치를 평균 0, 분산 2/n_in을 갖는 분포에서 샘플링하며, 여기서 n_in은 팬인이다. 정규 분포의 경우 N(0, 2/n_in)이고, 균등 분포의 경우 U(±√(6/n_in))이다. 2라는 인자는 ReLU가 활성화의 절반을 0으로 만들어 분산을 사실상 절반으로 줄이는 사실을 반영한다. He 초기화는 잔차 네트워크와 CNN을 포함한 많은 심층 네트워크의 기본 선택이 되었다.
직교 초기화
직교 초기화는 가중치 행렬을 무작위 직교 행렬로 설정하며, 이는 행과 열이 정규 직교(orthonormal)함을 의미한다. 이는 순방향 및 역방향 전파 중 활성화와 기울기의 노름(norm)을 보존하여 순환 신경망과 심층 네트워크에 유용하다. 기울기 소실을 완화하기 위해 RNN과 LSTM에서 자주 사용된다. 이 방법은 일반적으로 순환 가중치 행렬에 적용되며, 다른 가중치는 무작위 초기화를 사용할 수 있다.
데이터 의존 초기화
일부 경우 초기화는 훈련 데이터 자체에서 도출될 수 있다. 예를 들어, 비지도 사전 훈련에서 오토인코더는 층별 탐욕적 훈련(layer-wise greedy training)을 사용하여 초기화될 수 있다. 최근에는 층별 순차 초기화(layer-wise sequential initialization)와 같은 데이터 의존 방법이 탐구되고 있다. 그러나 이러한 방법은 계산 비용과 복잡성으로 인해 고정된 무작위 방법보다 덜 일반적이다.
훈련 역학에 미치는 영향
초기화의 선택은 훈련의 여러 측면에 영향을 미친다. 적절한 초기화는 수렴을 가속화하고, 기울기 소실 또는 폭주의 위험을 줄이며, 최종 모델의 품질을 향상시킬 수 있다. 반대로, 잘못된 초기화는 느린 훈련, 활성화 포화, 또는 수렴 실패로 이어질 수 있다. 심층 네트워크에서 초기화와 활성화 함수 간의 상호 작용은 중요하다. 예를 들어, ReLU 네트워크는 신호 전파를 유지하기 위해 tanh 네트워크보다 더 큰 초기 가중치가 필요하다.
실용적 고려 사항
현대 딥러닝 프레임워크에서 초기화 방법은 내장되어 있으며 매개변수를 통해 선택할 수 있다. 예를 들어, PyTorch와 TensorFlow는 Xavier 및 He 초기화 함수를 제공한다. 트랜스포머와 같은 대규모 모델을 훈련할 때는 신중한 초기화가 필수적이다. 예를 들어, 트랜스포머의 잔차 분기는 초기 훈련 단계에서 안정적인 훈련을 보장하기 위해 종종 0으로 초기화된다. 이는 네트워크의 특정 부분에 대한 영점 초기화의 한 형태이다.
관련 기법
가중치 초기화는 Batch Normalization, Layer Normalization, Gradient Clipping과 같은 기울기 문제를 다루는 다른 기법과 밀접하게 관련되어 있다. 이러한 방법은 잘못된 초기화의 영향을 완화할 수 있지만 합리적인 시작점의 필요성을 대체하지는 않는다. 실제로 매우 깊은 네트워크를 훈련할 때는 좋은 초기화와 정규화의 조합이 자주 사용된다.