May 23, 2019
해당 게시물은 Edwith에서 제공하는
머신러닝과 딥러닝 BASIC을 듣고 요약 정리한 글입니다.
랜덤으로 Weight값 설정시 같은 코드를 실행시켜도
Cost값이 변하는 것을 확인할 수 있다.
Chain rule을 사용할 때 Weight값이 사용된다.
Weight값이 0이게 되면 뒤의 모든 값이 0이되어서
Vanishing gradient가 생긴다.
RBM의 구조
Reestriction : Layer안에서 연결이 없다.
2가지 Operation을 갖는다.
위의 그림과 같은 방법으로 값을 구하는 방법
입력받은 의 값과 Forward로 생성된 의 값의
차가 최저가 되도록 Weight를 조절하는 방법이다.
KL DIVERGENCE은 거리를 구할때 사용하는 연산자다.
Encode/Decode라고도 한다.
앞의 2개의 Layer에서 Encode/Decode를
반복하며 Weight값을 찾는다.
이러한 Network를 Deep Belief Network (DBN)이라고 한다.
Pre Traning과정에서 값만 가지고
RBM을 진행해 최적화된 Weight를 찾는다.
앞의 Layer에서 뒤의 Layer로 이동하면서 같은 과정을 반복한다.
모든 과정이 완료 되면 모든 Weight값이 초기화된 상태다.
Fine Tuning과정에서 실제 데이터를 넣고 학습을 진행한다.
Fine Tuning이라고 부르는 이유는 데이터를
많이 쓰지않고 빠르게 학습이 되기 떄문이다.
간단한 방법으로도 가능하다.
좋은 Weight값을 선택하고자 하는 기본적인 아이디어
입력의 갯수(fan_in), 출력의 갯수(fan_out)에 따라 구하면 된다.
Xavier initialization (2010)
W = np.random.randn(fan_in, fan_out) / np.sqrt(fan_in)
He initialization (2015)
W = np.random.randn(fan_in, fan_out) / np.sqrt(fan_in / 2)
복잡하게 구현되어 있는 xavier_init
함수를 사용해도 된다.
초기 Weight을 설정하는 알고리즘은 아직도 연구중인 분야다.