[Xavier Initialization (Glorot Initialization)]
loss 그래프에서 loss가 최저인 지점을 찾는 것이 network의 목표다. 하지만 실제 loss 그래프는 굉장히 복잡하기에 그래서 local minimum에 빠지거나 saddle point에 도달하게 되는 위험이 있다.
이때, 출발점을 잘 설정한다면 위험 없이 global minimum에 도착할 수 있다.
이전까지 사용했던 weight initialization은 평균이 0, 분산이 1이었다. Xavier Initialization은 평균이 0, 분산이 2/Channel_in + Channel_out이다. Channel_in은 input으로 들어가는 Channel의 개수를 말하고, Channel_out은 output으로 들어가는 Channel의 개수를 말한다. He initialization은 Relu 함수에 특화된 초기화 방법으로 평균은 0, 분산은 4/Channel_in + Channel_out이다.
[code] Create Network
이전에 Relu 함수에서 사용한 code와 거의 일치한다. Relu 함수와 다른 점으로는 Xavier Initialization을 사용하기 위해서는 weight_int를 RandomNormal()이 아닌 glorot_uniform()을 사용한다.
추가적으로 weight_int를 he_uniform()을 사용해서 He initialization 방법을 사용할 수 있다
[code] Experiments (Eager mode)
weight 초기화 방법을 바꾼 것만으로도 약 10%의 성능 향상을 볼 수 있다.
'인공지능 > 모두를 위한 딥러닝 시즌 2' 카테고리의 다른 글
Batch Normalization (0) | 2023.08.20 |
---|---|
Dropout (0) | 2023.08.20 |
Relu (0) | 2023.08.13 |
XOR 문제 딥러닝으로 풀기 (0) | 2023.08.13 |
딥러닝의 기본 개념 (0) | 2023.08.13 |