출처: 모두를 위한 딥러닝 강좌 시즌 1 by Sung Kim
RBM 참고: https://steemit.com/kr/@yoonheeseung/2-restricted-boltzmann-machines-rbms
Xavier / He Initialization 참고: https://gomguard.tistory.com/184
지난 강좌에서는 Vanishing Gradient 문제를 해결하기 위해 ReLU 라는 다른 Activation Funciton을 사용하였다.
이 문제를 해결하기 위한 또 다른 방법은 가중치의 초기값을 잘 설정하는 것이다.
따라서, 딥러닝이 잘 이루어지기 위해서는 가중치의 초기값을 잘 설정해 주는 것이 중요하다.
RBM은 어떻게 하면 가중치 초기화를 잘 할 지 고민하던 Geoff Hinton 교수가 고안한 방법으로, 현재는 잘 사용하지 않지만 많이 나오는 용어라고 하니 알아두고 넘어가자.
RBM을 사용해 만든 신경망을 DBN(Deep Belief Net) 이라고 부른다고 한다.
RBM의 훈련은 다음과 같은 1~3의 과정을 반복한다.
1. forward: Input Data에 가중치를 이용하여 Output을 만들어냄
2. backward: Output에 같은 가중치를 이용하여 Input을 재성성(Recreate)함
3. 원래의 Input Data와 재생성된 Input의 값을 비교하여 두 값이 최대한 가까워지도록 가중치를 조절.
좋은 소식은, 우리가 가중치 초기화를 잘 하기 위해서 복잡하게 RBM을 사용해야 할 필요가 없다는 것이다.
Xavier initialization 이나 He's initialization 고 같이 간단한 가중치 초기화 방법을 사용하는 것으로 충분하다고 한다.
이 두가지 초기화 방법의 아이디어는 아주 간단하다.
Xavier의 경우 입력 데이터 수와 출력 데이터 수에 맞게 가중치 행렬을 생성할 때, 1) 평균 0 표준편차 1인 가우시안 분포에서 임의의 값을 추출하고, 2) 그 값을 입력 데이터 수의 제곱근으로 나누어 사용한다.
He는 Xavier와 다른 부분은 동일하며, 나눌 때 입력 데이터 수의 제곱근이 아니라 입력 데이터 수의 절반의 제곱근을 사용한다는 차이점이 있다.
Xavier는 Activation Function으로 Sigmoid나 Tanh 함수를 사용할 때,
He는 ReLU를 사용할 때 이용하면 된다고 한다.
가중치 초기화는 아직도 연구가 많이 이루어지고 있는 분야로, 어떤 것이 완벽한 초기화 방법인지는 아직 모르는 것라고 한다.
각자의 데이터에 따라 더 잘 작동하는 초기화 방법이 다를 수 있으므로, 여러 가지를 시도해 보는 것이 좋다고 한다.