이때까지 우리는 많은 내용을 다루었습니다. 하지만 이런 생각을 할 수 있습니다.
+ "weight의 초기값은 어떻게 설정 하는 거지?"
+ 이런 생각을 다들 해보셨을것 같습니다.
+ 이제부터 이 그 내용을 다루어 보겠습니다.
Ⅰ. weight
- 신경망에서 weight 초기값을 무엇으로 설정하느냐는 매우 중요한 문제입니다.
- 초기값 설정에 따라서, learning의 결과는 크게 달라질 수도 있습니다.
+ 아래 그림을 보면, Sigmoid의 출력이 0과 1에 몰려 있습니다. 이는 Backpropagation 시에 gradient vanishing 문제 발생 가능성이 있다는 것입니다.
+ 아래의 그림을 다시 보시겠습니다. 전과 달리 Sigmoid의 출력이 0.5 부근에 몰려 있습니다. 이는 모든 neural 이 동일한 값을 출력한다는 것은 여러 layer로 구성하지 않고 단층으로 구성 가능하다는 것으로 해석이 가능합니다.
+ 이처럼 매우 다른 결과를 낼수 있다는 것을 볼 수 있습니다.
+ 만약 Weight 를 전부 zero 로 설정(※ 가중치를 균일한 값으로 설정)한다면?
→ Backpropagation 시, 모든 weight의 값이 똑같이 갱신되게 됩니다.
- ★ 기본 컨셉은 weight를 랜덤하게 설정해야 한다는 것입니다.★
Ⅱ. Xavier 초기값 설정
- Deep learning framework에서 일반적으로 사용되는 방법입니다.
- 각 Layer의 activation value들을 광범위하게 분포 시키는 것이 목적입니다.
- 앞 계층의 node가 n개 라면, 표준편차가 𝟏/√𝒏인 분포를 사용합니다. Xavier 초기값을 사용하면, 앞 층에 node가 많을수록 대상 노드의 초기값으로 설정하는 가중치가 좁게 퍼지는 것을 볼 수 있습니다.
- 그러나 해당 초기값 설정 방법은 Sigmoid 와 tanh 에 한정하여 적용됩니다.
- Xavier 초기값 설정은 Activation function이 linear 한 것을 전제로 합니다. ( 여기서 linear라고 하는 것은 좌우 대칭 정도로만 이해, 책에서도 그렇게 나와있는데... 잘 이해는 안가지는 그렇다고 치죠.)
- 그렇다면 많이 사용되는 ReLU는 어떻게 할까요?
+ 아래의 방법을 사용합니다!
Ⅲ. He 초기값 설정
- ReLU 경우, Kaiming He가 제안한 He 초기값을 사용합니다.
- 계층의 노드가 n개 일 때, 표준편차가 √(𝟐/𝒏)인 분포를 사용합니다.
+ 음의 영역이 zero 기 때문에, 더 넓게 값을 분포시키기 위해서 2배의 계수가 필요하다고 이해하시면 됩니다.
이번 포스팅에서는 초기값을 어떻게 설정하는 지를 알아 보았습니다.
'Digital Hardware Design > Deep learning' 카테고리의 다른 글
CNN(Convolution Neural Network ) (0) | 2022.11.23 |
---|---|
Batch normalization (0) | 2022.11.23 |
Weight optimization (0) | 2022.11.23 |
학습(Learning) & 손실함수(Loss function) & 역전파(Backpropagation) (0) | 2022.11.22 |
신경망 계산 과정 example (0) | 2022.11.22 |
댓글