知/job지식

Weight initialization

콰트로로켓단 2024. 5. 15. 10:00
728x90

 

목차 열기

처음이 중요

새로운 인공지능을 구성하고 학습 시 맨 처음 파라미터(가중치와 편향)는 어떻게 설정해야 할까?

가중치의 최종값이 음수일지 양수일지 모르는 상황이라 모든 가중치는 0으로 설정하면 모두가 잘 찾아갈 수 있을 것 같다.

하지만 모든 가중치가 같은 값을 가지면 위 링크의 w1이 x1에 영향을 받고 w2는 x2에 영향을 받는 것 같이 w에 관련 없이 입력에 따라 가중치가 업데이트를 가지는 경우도 있지만, 층이 깊어질 때 w에 영향을 받는다면 아예 학습이 안되거나 모두가 같은 값으로 업데이트가 될 수 있다. 

 

0에 가깝게

모두가 0이되면 학습이 안되니 매우 가깝게 랜덤으로 만들면 되지 않을까? 해서 정규분포의 모양 또는 평균이 0인 uniform으로 초기화를 하는 방법도 있다. Activation Function에 따라 기울기 소실이 발생할 수 있고 w의 개수에 따라 분산의 정도를 다르게 조정하여 더욱 성능이 오르게 된 것이 Xavier initialization이라고 한다. 

 

하지만 RELU 같은 경우 절반이 사라지는 경우가 존재해 cs231에서는 분산의 크기를 절반으로 줄이면 된다라고 나온다.

실제로는 xavier의 표준편차는 입력과 출력의 개수 합분의 2인데 He는 입력의 개수 분의 2이므로 대충 절반 때리면 비슷한 효과가 나기에 그렇게 설명한 것으로 보인다. (베르누이 법칙의 고등버전과 대학버전의 차이 느낌?)

 

각각 가정들이 있기에 증명은 다른 블로그의 을 참고하길 바란다.

 

 

초기화의 다른 것(여담)

cs231n 강의를 보면 batch normalization(BN)을 초기화의 관점으로 보고 있기도 한다. BN을 지나며  batch당 Normalization을 하는 것이 곧 초기화다라는 관점이 있다. 또 다른 것으로 이전 ResNet 직관에서 기울기 소실의 큰 역할로 Skip connection도 있었지만, 가중치 초기화를 가지고도 줄일 수 있다는 논문도 있다. 


 

가중치 초기화의 방법은 더 다양하며 모델에 따라 완전히 다르게 하는 경우도 있습니다.

꼭 스탠포드나 버클리 대학 자료들이 무조건 정답이 아니라 교육용이기에 비약등이 있어

보충 자료나 최신 자료를 가끔 다시 보는 습관이 필요하다는 것을 느끼게 되었네요.

BN 같은 경우는 경험적으로 얻은 성능이라 아직도 명확하지 않은 부분들이 있어 글로는 안 쓰겠습니다.

 

 

728x90

' > job지식' 카테고리의 다른 글

Reinforcement Learning  (0) 2024.05.21
Drop Out(드롭 아웃 및 초간단 구현)  (0) 2024.05.18
Resnet 직관  (0) 2024.05.05
CNN(Convolution Neural Network)  (0) 2024.05.02
활성화함수(Activation Function)  (1) 2024.04.27