ML lec(이론) 10-2 - Weight 초기화 잘 해보자

박성재·2020년 12월 15일
0

출처: 모두를 위한 딥러닝 강좌 시즌 1 by Sung Kim

RBM 참고: https://steemit.com/kr/@yoonheeseung/2-restricted-boltzmann-machines-rbms

Xavier / He Initialization 참고: https://gomguard.tistory.com/184


딥러닝이 잘 되지 않는 문제를 해결하는 2번째 방법 = 가중치 초기화 잘 하기

지난 강좌에서는 Vanishing Gradient 문제를 해결하기 위해 ReLU 라는 다른 Activation Funciton을 사용하였다.
이 문제를 해결하기 위한 또 다른 방법은 가중치의 초기값을 잘 설정하는 것이다.

  • 위 그림처럼, 같은 Activation Function을 사용하더라도, 랜덤하게 주어지는 초기 가중치 값에 따라서 모델의 성능이 달라질 수 있다.
  • 예를 들어, 위처럼 초기 가중치를 모두 0으로 설정하면 gradient가 0이 되기 때문에 학습이 잘 이루어지지 않는다.

따라서, 딥러닝이 잘 이루어지기 위해서는 가중치의 초기값을 잘 설정해 주는 것이 중요하다.

RBM(Restritcted Boltzmann Machine)

RBM은 어떻게 하면 가중치 초기화를 잘 할 지 고민하던 Geoff Hinton 교수가 고안한 방법으로, 현재는 잘 사용하지 않지만 많이 나오는 용어라고 하니 알아두고 넘어가자.

RBM을 사용해 만든 신경망을 DBN(Deep Belief Net) 이라고 부른다고 한다.

RBM Structure

  • RBM은 visible layer와 hidden layer가 양방향으로 전부 연결되어 있는(Fully Connected) 얕은 두 층으로 이루어진 모델이다.
  • 여기서 "restricted"는 같은 layer 내의 노드끼리의 연결이 제한되어 있다는 의미다.

RBM 훈련 과정

RBM의 훈련은 다음과 같은 1~3의 과정을 반복한다.
1. forward: Input Data에 가중치를 이용하여 Output을 만들어냄
2. backward: Output에 같은 가중치를 이용하여 Input을 재성성(Recreate)함
3. 원래의 Input Data와 재생성된 Input의 값을 비교하여 두 값이 최대한 가까워지도록 가중치를 조절.

Deep Belief Network

  • RBM을 이용하여 가중치를 초기화한 신경망을 DBM이라 부른다.
  • 인접간 모든 두 레이어에 RBM을 적용하는 Pre-training 과정을 거쳐서 학습
  • Pre-training에서 이미 가중치 초기화가 잘 되어있기 때문에, 이후의 계산 과정이 빠르게 진행됨
  • 따라서 이후의 과정을 학습이라기 보다는 fine tuning이라고 부름

가중치 초기화를 위해 RBM을 쓸 필요는 없다.

좋은 소식은, 우리가 가중치 초기화를 잘 하기 위해서 복잡하게 RBM을 사용해야 할 필요가 없다는 것이다.

Xavier initialization 이나 He's initialization 고 같이 간단한 가중치 초기화 방법을 사용하는 것으로 충분하다고 한다.

Xavier/He Initialization

이 두가지 초기화 방법의 아이디어는 아주 간단하다.

Xavier의 경우 입력 데이터 수와 출력 데이터 수에 맞게 가중치 행렬을 생성할 때, 1) 평균 0 표준편차 1인 가우시안 분포에서 임의의 값을 추출하고, 2) 그 값을 입력 데이터 수의 제곱근으로 나누어 사용한다.

He는 Xavier와 다른 부분은 동일하며, 나눌 때 입력 데이터 수의 제곱근이 아니라 입력 데이터 수의 절반의 제곱근을 사용한다는 차이점이 있다.

Xavier는 Activation Function으로 Sigmoid나 Tanh 함수를 사용할 때,
He는 ReLU를 사용할 때 이용하면 된다고 한다.

완벽한 초기화?

가중치 초기화는 아직도 연구가 많이 이루어지고 있는 분야로, 어떤 것이 완벽한 초기화 방법인지는 아직 모르는 것라고 한다.

각자의 데이터에 따라 더 잘 작동하는 초기화 방법이 다를 수 있으므로, 여러 가지를 시도해 보는 것이 좋다고 한다.

0개의 댓글