대부분의 프레임워크에서 자동으로 지원해주기 때문에 모르고 넘어갈 수 있는 부분일 것 같다.
모델을 만들기 사용할 때, 우리는 따로 초기 가중치를 설정해주지 않는다. 그럼 아무 값이나 들어가는 것일까?
랜덤한 수로 시작해야하는 것은 맞기 때문에 아무 값이긴 하지만, 표준편차가 어떻냐에 따라서 그 효율성과 속도, 성능이 달라질 수 있다.
보통 학습을 할 때 오버피팅을 억제하여 성능을 높이는 방법이 "가중치 감소"이다. 가중치가 클수록 그 영향이 커지기에 오버피팅의 가능성이 높아진다. 따라서 가중치를 감소시키는 것이 좋은 방향이고 초깃값도 작을수록 좋을 것이다. 만약 초깃값이 0이라면 어떨까?
오차 역전파를 고려했을 때 모든 가중치가 똑같이 갱신되기 때문에 학습이 올바르게 진행되지 않음을 예측할 수 있다. 따라서 랜덤한 값 중 정규분포를 조정해가며 어떤 값이 효율적인지 연구가 진행되었다.
단순히 표준편차가 1인 랜덤한 초깃값을 사용했을 때는 은닉층의 활성화 값이 0과 1에 치우쳐서 분포됨을 확인할 수 있었다. 그렇기에 이 또한 gradient vanishing을 유발할 것이다. 표준편차가 0.01인 경우는 가운데로 몰리는 현상이 일어나기 때문에 층의 의미가 사라지고 표현력을 제한한다는 단점이 존재한다. (활성화 함수 = 시그모이드 함수)

오랜 연구 끝에 등장한 것이 Xavier 초깃값, He 초깃값이다.
각각 1 / (n)**(1/2), 2 / n**(1/2) 의 표준편차를 사용한다. 앞 층의 노드가 많을수록 대상 노드의 가중치는 좁게 펼쳐지며, Xavier의 경우 대칭인 (중앙에서 선형성을 보이는) 함수에 적합한 특성을 가진다. He의 경우는 ReLU와 같이 가운데에서 선형이 아닌 경우 적합하다.

모델을 구성할 때 가중치의 초깃값을 어떻게 설정할 것인가도 필수 고려 요소에 포함시켜야 한다는 것을 알 수 있었다.
'딥러닝 > 밑바닥부터 시작하는 딥러닝1' 카테고리의 다른 글
| [밑바닥부터 시작하는 딥러닝1] Ch6.최적화 방법 (3) | 2024.05.06 |
|---|---|
| [밑바닥부터 시작하는 딥러닝1] Ch4.신경망 학습 (0) | 2024.05.04 |
| [밑바닥부터 시작하는 딥러닝1] Ch3.신경망 (1) | 2024.04.28 |
| [밑바닥부터 시작하는 딥러닝1] Ch2.퍼셉트론 (2) | 2024.04.28 |