[프로그래밍]/모두를 위한 딥러닝

[모두를위한딥러닝] Weight 초기화를 잘해보자

댕이댕이 2019. 8. 21. 04:01

weights에 대한 초기값은 매우 중요하다.

딥러닝에서 각 Layer간에 weights 값이 어떠한지도 매우 중요하다.

Weight에 대한 값을 인풋으로 주었을 때 반대로 Weight가 원하는 방향으로 잘 적용되었는지 판단하기 위해

반대로 Layer 2-> Layer 1로 역계산하여 원래의 Layer 1에서 사용된 Weight 값을 추출한다.

 

즉, Layer 1 -> Layer 2에서 활용된 Weight에 대한 정확성을 보기 위해

Layer 2 -> Layer 1로 역계산하여 Layer 1의 Weight를 추출하는 것이다.

 

이러한 방식이라면 초기 Weight 값에 대한 선언을 Labels 만을 주어서 

알아서 선언 할 수 있게 해줄 수도 있다.

 

그것이 바로 Find Tunning이라 부른다.

Labels를 입력 시키고 역으로 계산하여 최적의 Weight를 초기화 해준다는 것이다.

 

이러한 방식에는 크게 2가지가 있다.

 

Xavier initialization 방식

W=np.random.randn(fan_in,fan_out)/np.sqrt(fan_in)

He's initialization 방식

W=np.random.randn(fan_in,fan_out)/np.sqrt(fan_in/2)

 

 

그렇게 Weight에 대한 init method를 적용한 결과 다음과 같다.