[ML/DL] 가중치 초기화(Weight Initialization)에 대해 공부해보자.

나개발자.__.·2024년 3월 27일

[ML/DL] CNN

목록 보기
3/12


저도 그저 공부하는 학생이니 틀린 개념이 있다면 알려주시면 감사하겠습니다.


최근 딥러닝 공부를 하다 CNN 모델 성능 향상에 대해 공부중이다.

목차
1. 가중치 초기화 개요(Weight Initialization)
2. 좋은 가중치 초기화 조건
3. Xavier Glorot Initialization
4. He Initialization
5. 참고자료

가중치 초기화 개요(Weight Initialization)

흔히들 말하는 가중치 초기화(Weight Initialization)는 모델이 학습되기 전 랜덤으로 Weight 값을 임의로 배정해주는 작업을 의미한다.
CNN 모델에서도 모델을 학습시키려면 초기 Weight 값을 정해야한다.
초기 Weight 값은 어떻게 랜덤으로 정해야 할까?

좋은 가중치 초기화 조건

  • 값이 동일하면 안된다.
  • 충분히 작아야 한다.
  • 적당한 분산(또는 표준편차)을 가져야 한다.

Weight를 이용해 연산을 거쳐 Activation Function으로 Sigmoid 함수를 이용한다고 가정하자.
평균 0, 표준 편차 1인 표준 정규 분포에서 Weight 초기화 후 Sigmoid 출력하면 0과 1로 수렴하게 되며,
평균 0, 표준 편차 0.01인 표준 정규 분포에서 Weight 초기화 후 Sigmoid 출력하면 0.5로 수렴하게 된다.

아래는 각각 평균0, 표준편차 1인 표준 정규 분포와 Sigmoid 함수다.


즉, Weight값이 너무 크거나 너무 작기 때문에 Sigmoid 출력이 -1 또는 1에 수렴한다는 것이다. 이렇게 되면 Sigmoid 함수 특성상 기울기 소실(Vanishing Gradient)이 나타난다.
반대로 평균 0, 표준 편차 0.01인 표준 정규 분포에서 Weight 값을 초기화하면 값이 너무 작아 Sigmoid 출력은 0.5에 수렴하게 된다는 문제를 가지게 된다.

이런 문제점을 해결하기 위해 나온 방법이 Xavier Glorot Initialization, He Initialization이다.

Xavier Glorot Initialization

Xavier Initialization 혹은 Glorot Initialization라고도 불리는 초기화 방법은 입력 노드와 출력 노드의 갯수를 감안하여 동적으로 Weight 초기화를 수행한다.
균등 분포 시 한도값은 다음과 같다.


표준 정규 분포시 표준편차 값은 다음과 같다.

표준 정규 분포를 예로 설명하자면 3개의 fan in과 2개의 fan out이 있다 가정했을 때 표준편차는 √2/5가 된다.

He Initialization

He Initialization은 Activation Function이 Relu인 경우에 더 최적화된 가중치 초기화 방법이다.
공식 자체는 기존 Glorot Initialization과 별 차이는 없다.
다음은 각각 균등 분포, 표준 정규 분포인 경우의 공식이다.


참고자료

참고자료1

profile
나 개발자가 되고싶어..요

0개의 댓글