[DL] 모두를 위한 딥러닝 10-2 Initialize weights
지난 시간에는 Vanishing gradient문제를 해결할 수 있는 방법으로 새로운 활성화 함수, ReLU를 알아보았습니다.
또다른 방법은 무엇이 있을까요?
이유: 초기값을 멍청하게 설정하였다
모델의 가중치를 초기화 할 때 설정하는 값에 따라 결과는 아래 그림과 같이 달라질 수 있습니다.
초기값 차이에 따른 비용함수 수렴의 차이
같은 ReLU함수를 사용했음에도 초기값을 어떻게 설정하는지에 따라 결과가 달라진다.
만약 초기값을 0으로 주게되면 역전파시 미분값이 0이되므로 학습이 이루어 지지 않습니다.
이러한 결과를 막기 위해 어떠한 방법을 써야 할까요?
1)모두 0으로 설정하면 안된다
방법중 하나인 RBM이라는 방법이 있습니다.
간단하게 설명하자면 서로 연결된 2개의 레이어에서
입력값을 Forward하여 output을 만들어 낸 후 Output을 Backward하여 나온 값과 입력값을 비교하여,
차이가 최소가 되도록 가중치값(w)을 조정합니다.
이는 인코더/디코더의 형태와 비슷합니다.
이러한 과정을 모든 레이어 계층에 적용하여 모든 가중치의 적절한 값을 찾습니다.
이런 것을 Deep Belief Network(DBN)라고 부르기도 합니다.
가중치 초기화 진행 과정
이 과정이 끝나면 실제 데이터와 레이블을 가지고 학습을 시키면 된다.
이러한 가중치 초기화 과정을 거치게 되면 학습 시간이 더욱 단축된다고 합니다.
추가적인 설명을 원하면 다음의 블로그 링크를 참고하세요: https://www.whydsp.org/283
내맘대로 이해하는 Deep Belief Network와 Restricted Boltzmann Machine
김승일 모두의연구소 연구소장 모두의연구소 DeepLAB 랩짱 Deep Belief Network(DBN)과 Restriced Boltzmann Machine(RBM) 논문을 보면, Graph Theory로 중무장한 어려운 글들을 볼 수 있습니다. DBN을 좀 쉽게 설..
www.whydsp.org
하지만 RBM 방법은 너무 복잡합니다.
따라서 더 간단한 방법인 Xavier 초기화 방법과, He's 초기화 방법을 이용할 수 있습니다.
위 그림은 2가지 초기화 방법을 구현한 코드 입니다.
입력 노드 갯수와, 출력 노드 갯수에 따라 초기값을 설정하는 모습을 보입니다.