신경망 학습이 시작될 때 가중치를 어떤 값으로 시작하느냐는 의외로 학습 성공의 큰 변수입니다.
모두 0으로 시작하면 모든 뉴런이 같은 일을 하게 되고, 너무 큰 값으로 시작하면 그래디언트 폭발, 너무 작으면 그래디언트 소실이 옵니다.
정답은 「입력과 출력의 분산을 비슷하게 유지하는 분포에서 무작위로 뽑는」 것입니다.
2010년 자비에르 글로로(Xavier Glorot)와 요슈아 벤지오가 제안한 「Xavier 초기화」가 첫 표준입니다.
입력과 출력 뉴런 수에 따라 분산을 자동 조절하는 방식이며, 시그모이드·Tanh와 함께 쓰입니다.
ReLU 활성화가 표준이 되면서 2015년 카이밍 허(Kaiming He) 등이 제안한 「He 초기화」가 새 기준이 됐습니다.
ReLU는 음수 출력을 0으로 막아 절반의 뉴런이 죽으므로, Xavier보다 분산을 두 배로 키워야 입출력 분산이 균형을 맞춥니다.
비유하자면 가중치 초기화는 「오케스트라가 연주를 시작할 때의 음정 맞추기」와 비슷합니다.
잘 맞지 않으면 곡 전체가 어긋납니다.
좋은 초기화는 학습 첫 몇 스텝의 안정성을 보장해 학습이 「발진」하는 것을 막아 줍니다.
PyTorch·TensorFlow 같은 현대 프레임워크는 각 층 종류에 맞는 합리적 초기화를 자동 적용합니다.
그래서 보통은 따로 신경 쓰지 않아도 되지만, 매우 깊은 망이나 특이한 아키텍처에서는 초기화 방식을 바꾸는 것만으로도 학습 성공/실패가 갈릴 수 있습니다.
한 줄 요약
Xavier 초기화는 시그모이드·Tanh에, He 초기화는 ReLU에 맞춘 가중치 초기화 방식입니다.
좋은 초기화는 학습 초반의 안정성을 보장해 발진을 막아 줍니다.
더 알아볼 것
- 가중치를 모두 0으로 시작하면 안 되는 이유
- LSUV·Orthogonal 초기화 등 다른 방법
- Transformer의 초기화 — 표준 정규분포의 작은 값