[시즌1].Lecture 10_2 - Neural Network 2: ReLU and 초기값 정하기_Weight 초기화 잘해보자

* 이 글은 홍콩과기대 김성훈 교수님의 무료 동영상 강좌 "모두를 위한 머신러닝과 딥러닝 강의"를 보고 요점을 정리한 글 입니다.

 

Restricted Boltzmann Machine(RBM)과 Deep Belief Network(DBN)

많은 Layer를 갖는 Neural Network(신경망)의 제일 중요한 문제점이 바로 Vanishing Gradient(기울기 소실) 문제 입니다. 이 문제를 해결하기 위해서는 내부 Layer들의 Activation Function(활성화 함수)으로 Sigmoid Function(시그모이드 함수)이 아닌 ReLU와 같은 다른 함수를 사용하는 방법이 있고, 초기 Weight값을 잘 설정해주는 방법이 있습니다.

 

만약 모든 초기 Weight(가중치) 값을 0으로 설정한다면 BackPropagation(역전파)시 Chain Rule(연쇄법칙)에 의해 모든 입력값의 영향력이 0이 되기 때문에 제대로 된 학습이 불가능합니다. 이렇듯 아무렇게나 초기 Weight값을 정해준다면 학습의 효율성이 굉장히 낮아지게 됩니다. 따라서 초기 Weight값을 잘 설정하는 것이 매우 중요합니다.

 

 

초기 Weight값을 잘 설정하기 위한 방법으로는 Hinton이 2006년에 발표한 Restricted Boltzmann Machine(RBM)이 있습니다. 이 RBM 구조는 인접한 2개의 Layer 에서 적용됩니다. 우선 입력값을 사용해서 만들어낸 다음 Layer의 결과값을 사용하여 새로운 입력값을 재생성합니다. 이때 원래의 입력값과 재생성한 입력값이 최대한 비슷하게 만들어지도록 Weight 값을 설정해주는 것이 RBM이라고 할 수 있습니다. 여기서 원래 입력값을 사용해 다음 Layer값을 계산하는 것을 Encoding, 계산된 Layer로 입력값을 재생성하는 것을 Decoding이라고 부르기도 합니다.

 

 

이런 RBM을 입력 Layer부터 시작해서 결과 Layer까지 모두 적용시켜서 Neural Network의 Weight값을 설정한 것을 Deep Belief Network(DBN)라고 합니다. 많은 복잡한 문제에 이러한 RBM을 적용시켜 만든 DBN을 사용한다면 해결이 되었기 때문에 이 DBN은 2006년에 세상을 놀라게 만들었습니다.

 

Xavier / He Initialization

위에서 언급하였던 RBM과 이러한 RBM을 적용시켜서 만든 DBN은 많은 어렵고 복잡한 문제를 해결할 수 있는 좋은 방법입니다. 하지만 RBM의 경우 구현하기가 복잡하고 이런 RBM을 사용한 DBN은 Layer수가 많으면 많아질 수록 구현하기가 어려워 집니다. 따라서 RBM이라는 좋은 방법이 있음에도 불구하고 많은 사람들이 더 좋은 초기 Weight값 구현 방법을 연구하였습니다. 

 

결국 구현이 간단하고 좋은 초기 Weight값을 구현하는 방법을 발견하였는데 그것들 중 2010년에 나온것이 Xavier initialization이라는 방법이고 2015년에 나온 방법이 He initialization이라는 방법입니다. 두가지 방법 모두 입력값의 개수와 출력값의 개수를 사용해서 Weight를 설정하는 방법이지만 2015년에 나온 방법이 더 좋은 방법입니다. 

 

Xavier Initialization은 정규분포를 입력값의 개수의 표준편차로 나누 값을 Weight로 설정하는 방법이고 He Initialization은 Xavier Initialization과 흡사한데 입력값의 개수의 표준편차가 아닌 입력값의 개수에 2를 나눈 값의 표준편차를 사용한다는 1가지만 다릅니다. 사소하게 바뀐 방법이지만 He Initialization의 효울성은 굉장히 좋게 변하였습니다.

 

하지만 여전히 완벽한 초기 Weight 설정 방법은 알아내지 못하였기 때문에 초기값 설정 방법에 대하여 사람들이 지속적으로 연구하고 있습니다.