본문 바로가기
AI/딥러닝 기초(Deep learning)

[딥러닝][기초] 가중치 초기화(Weight Initializers)

by Hyen4110 2021. 10. 6.
반응형

아래의 해외 블로그들을 참고하여 작성한 글입니다 :)

https://intoli.com/blog/neural-network-initialization/

 

Understanding Neural Network Weight Initialization

Exploring the effects of neural network weight initialization strategies.

intoli.com

https://towardsdatascience.com/hyper-parameters-in-action-part-ii-weight-initializers-35aee1a28404

 

1. 가중치 초기화란?

- 신경망을 구축하고 훈련할 때 우리는 크고 작은 선택들을 해야 합니다. 어떤 손실 함수를 사용할지, 몇 개의 레이어를 가질지, 각 Covolution Layer에 사용할 stride와 kernel 크기, 네트워크에 가장 적합한 최적화 알고리즘 등을 결정해야 하죠.

- 결정해야 할 사항이 너무 많기 때문에, 초기 가중치의 선택은 사소해 보일 수 있지만, 실제로는 네트워크의 수렴 속도와 네트워크 성능에 모두에 지대한 영향을 미칠 수 있습니다. 아래는 이것을 시각화 해서 보여준 블로그의 자료입니다. 

 

Training loss of a simple CNN over 12 epochs. The middle line represents the 10 batch rolling average over 12 epochs, while the error bands show variability around this mean. (https://intoli.com/blog/neural-network-initialization/)

 

- 초기 가중치가 최적의 가중치에 가까운 시점에서 초기화되어 시작한다면 가장 좋겠죠. 이렇게 초기화 시점에 따라 성능의 차이가 나기도 합니다. 하지만 그 지점은 아무도 모르기 때문에 사실상 불가능합니다. 

- 그 대신, 모델이 학습되는 도중에 Vanishing Gradient나 Exploding Gradient 현상은 겪지 않게 초기화하는 방법들이 있습니다. 

- 그중 대표적인 것이 Xavier Glorot 초기화와 Kaining He 초기화입니다. 

 

2. 가중치 초기화의 대표

2.5.1 Xavier Glorot 초기화

: "가중치의 초깃값을 N(0, var= 2/(n(in)+n(out))) 에서 뽑는다"

   - n(in) : 해당 레이어에 들어오는 특성의 수

   - n(out) : 해당 레이어에서 나가는 특성의 수

: 몇 개의 레이어를 통과하더라도 활성화 값이 너무 커지거나 작아지지 않고 일정 범위에 있도록 제한을 둠

: 시그모이드 하이퍼볼릭 탄젠트를 주로 사용하는 경우 적합함

: 해당 논문 (http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf) 저자(Xavier Glorot)의 이름을 따서 만든 초기화 방법으로, 'Xavier 초기화' 또는 'Glorot 초기화'로 줄여서 불리기도 한다.

 

2.5.1 Kaining He 초기화입

: "가중치의 초깃값을 N(0, var = 2/((1+a²)x n(in)) 에서 뽑는다. "

   - a : ReLU 또는 Leaky ReLU의 음수부분의 기울기 (기본값 = 0)

: ReLU가 활성화 함수로 많이 사용되면서 활성화 값이 0이하인 경우에 발생하는 ReLU의 특징을 반영하기 위해 등장

: ReLU 함수를 주로 사용하는 경우 적합함

반응형

댓글