I'm Lim

Weight Initialization 본문

Deep Learning/Weight Initialization

Weight Initialization

imlim 2022. 9. 30. 22:44

Weight Initialization

가중치 초기화는 딥러닝을 학습 시킬 때 중요한 요소 중 하나이다.

 

1. 보통 딥러닝 모델을 학습시킬 때는 경험적으로 학습시키는 경우가 많은데, 이럴 경우 기준점이 있어야한다.

2. 실제 모델 학습할 때, 표현의 다양성에 영향을 끼칠 수 있다.

Zero Initialization

Activation function이 모두 ReLU이고, Fully Connected Layer를 모델링하였다고 가정하자. 이때, Weight 값들을 모두 0으로 초기화하면 어떤 현상이 발생할까? 

순전파로 이동하면서 모두 같은 출력 값을 가지게 될 것이다. ( $y_i = \sigma (w_1 * x_1 + w_2 * x_2 + ...$)) 따라서, 역전파시 동일한 backpropagation value를 갖게되어 같은 값으로 업데이트 됨을 의미한다. 이는 두 뉴런이 동일한 일을 하게된다는 말이며, 이렇게 되면 모델이 다양한 표현을 할 수 없게 되어 학습이 느리게 진행되거나 제대로 된 학습이 안된다. 같은 논리로 weight를 모두 같은 값으로 주어도 마찬가지 현상이 발생한다.

Random Initialization

가중치가 0이거나 같은 값으로 초기화되는 것을 방지하기 위한 가장 간단한 방법은 정규분포로 Random한 값을 weight로 사용하는 것이다.

 

1) 평균이 0이고, 표준편차가 1인 정규분포를 weight initialization으로 사용한 경우

 

만약, 활성화 함수가 sigmoid라면 가중치 값이 0과 1로 치우치는 현상이 발생한다. 이는 gradient vanishing problem을 발생시킨다.

 

2) 평균이 0이고, 표준편차가 0.1인 정규분포를 weight initialization으로 사용한 경우

 

만약, 활성화 함수가 sigmoid라면 가중치 값이 0.5로 치우치는 현상이 발생한다. 가중치가 하나의 값으로 몰린다면 이전 레이어에서 다음 레이어로 넘어갈 때, 다음 레이어의 노드 출력값들이 대부분 유사하다는 뜻이다. 이는 모델이 다양한 표현을 할 수 없게 만든다.

Xavier Initialization

- Xavier Uniform initializaion

 

$u(-a,a)$ // $a = \sqrt{6 \over {fan_{in} + fan_{out}}}$

 

- Xavier Normal initialization

 

$N(0, std^2)$ // std = $\sqrt{2 \over {fan_{in} + fan_{out}}}$

 

Xavier initialization은 이전 노드의 개수($n_{in}$)와 다음 노드의 개수($n_{out}$)를 이용해 weight initialization 하는 방식이다. 이 방식은 sigmoid와 tanh에서 잘 동작하는 것으로 알려져있다.

He Initialization

- He Uniform initializaion

 

$u(-a,a)$ // $a = \sqrt{6 \over {fan_{in}}}$

 

- He Normal initialization

 

$N(0, std^2)$ // std = $\sqrt{2 \over {fan_{in}}}$

 

He initialization은 이전 노드의 개수($n_{in}$)만을 이용해 weight initialization 하는 방식이다. 이 방식은 Xavier initializaion이 ReLU에 적합하지 않아 고안되었다.

'Deep Learning > Weight Initialization' 카테고리의 다른 글

Kaiming He initialization  (0) 2022.10.29
Xavier Initialization  (0) 2022.10.23
Lecun Initialization  (0) 2022.10.23
Random Initialization  (0) 2022.10.23
Zero Initialization  (0) 2022.10.23
Comments