본문 바로가기

Deep Learning/cs231n Lecture

Lec 6-2. Weight Initialization, Batch Normalization

이어서 weight parameter들을 어떻게 초기화할지(weight initialization)에 대한 방법들과 별도의 layer를 통해 이를 해결하는 batch normalization을 공부한다.

 

Weight Initialization

How about all-zero initialization?

가장 먼저 할 수 있는 생각은 모두 0으로 초기화하는 것이다. 이 때의 문제는 뉴런들을 통과한 output이 모두 같다는 것이다. 여러 개의 layer가 중첩되어 있을 때, 하나의 뉴런의 output은 다음 뉴런의 input이 된다는 점을 생각해보면, 뉴런들의 input도 모두 같아지게 된다. 뉴런의 input은 곧 이 뉴런 weight들의 local gradient에 해당하고, local gradient가 같게 되면 모든 weight이 같은 방향으로 같은 양 업데이트 된다.

 

이를 통해 weight parameter를 초기화할 때, 적절한 randomness를 통해 weight 초기값 간 asymmetry가 생겨야 함을 알 수 있다.

 

Small random numbers from standard normal distribution

그렇다면 randomness를 주기 위해 표준정규분포(평균이 0, 표준편차가 1)로부터 sampling하여 초기값을 얻되, 0.01과 같은 작은 수를 곱해 scaling하는 방법을 생각해볼 수 있다. 그러나, 여러 개의 layer가 중첩된 구조에서는, 뒤쪽의 layer로 갈수록 small number(=0.01)가 계속해서 곱해지므로 randomness의 표준편차가 계속 작아지게 되는 문제가 생긴다. 결국 뒤쪽 layer들을 보면, 위에서 all-zero initialization에서 마주했던 문제와 큰 차이가 없어지는 것이다.

 

Xavier & He: Scaling with number of inputs

Weight 값을 input 수에 따라 dependent하게 scaling함으로써 값이 계속 커지거나 작아지는 문제를 해결할 수 있다. Xavier와 He 방식은 모두 이러한 아이디어 기반의 방식이다. 수식은 아래와 같다.

만약, 첫 번째 input(n*1 vector)이 표준정규분포를 따른다고 가정하고, 첫 번째 뉴런을 통과한 output의 scale을 생각해보자. Input과 곱해지는 weight n개는 서로 independent한 random variable이므로, output의 variance는 weight random variable들의 variance를 모두 더하여 구할 수 있고, 이는 1/n을 n번 더한 1이 된다. 즉, output도 다시 variance가 1인 scale을 갖기 때문에, 여러 layer가 중첩되어도 대략 scale이 유지될 것임을 알 수 있다.

 

He는 Xavier 방식에서 scale factor를 1 대신 2로 바꾼 차이가 있는데, 이는 activation function ReLU를 고려한 것이다. 이전의 Xavier 방식은 기본적으로 여러 layer 간 linear 연산을 가정한 것이다.

 

Batch Normalization

Normalization이란 평균 값을 뺀 뒤 표준편차로 나누어주는 것인데, 이는 미분 가능한 함수이므로 gradient backpropagation 과정에 포함시킬 수 있다. 이러한 관찰로부터 normalization 연산을 하나의 layer로 넣는다는 것이다.

cs231n lecture slide 6, p57

위의 강의 슬라이드와 같이 FC layer 다음에 batch normalization layer를 삽입함으로써 output을 standard normal distribution을 따르도록 할 수 있다.

 

그런데, 상황에 따라 output이 이 확률 분포를 따르지 않기를 원할 수도 있다. 이 경우를 adaptive하게 대응할 수 있도록, 아래와 같이 학습 가능한 parameter gamma, beta를 추가로 두어서, 어느 정도로 batch normalization을 적용할지를 학습 과정에서 결정하도록 할 수 있다.

cs231n lecture slide 6, p58

만약 gamma가 표준편차, beta가 평균 값과 거의 비슷한 값을 가지도록 학습이 진행된다면, 이 부분에서는 batch normalization의 효과를 거의 없애고 있는 것이다.