가중치 초기화(Weight initialization)

이승규·2024년 7월 25일

Deep Learning[공부용]

목록 보기
9/10

목차

  1. 가중치 초기화란?

  2. Zero Initialization (제로 초기화)

  3. Xavier Initialization (자비에 초기화)

  4. He 초기화(He initialization)

  5. 정리


1. 가중치 초기화란?

  • 같은 모델을 훈련하더라도 가중치가 초기에 어떤 값을 가졌느냐에 따라서 모델의 훈련 결과가 달라지기도 한다.
  • 다시 말해 가중치 초기화만 적절히 해줘도 기울기 소실 문제와 같은 문제를 완화시킬 수 있다.

2. Zero Initialization (제로 초기화)

  • 모든 가중치를 0으로 초기화 하는 방법이다.

여기서 의문..

Q) 가중치의 초깃값을 모두 0으로 설정하면 어떻게 될까?

  • 결론적으로 말하면 가중치 초깃값을 0으로로 하면 학습이 올바로 이루어지지 않게 된다. (정확히는 가중치를 균일한 값으로 설정해서는 안된다)


그 이유는 :

  • 오차역전파 계산시 모든 가중치의 값이 똑같이 갱신되기 때문이다. (해당그림에서는 0으로 같음)
  • 그래서 가중치들은 같은 초깃값에서 시작하고 갱신을 거쳐도 여전히 같은 값을 유지하게된다.
  • 이는 가중치를 여러개를 갖는 의미를 사라지게한다.

그림의 계산 과정을 보면 이해하는데 도움이 된다.

따라서 우리는 가중치 초깃값을 무작위로 설정해야한다.!!

3. Xavier Initialization (자비에 초기화)

기본 아이디어

  • Xavier Initialization의 기본 아이디어는 각 층의 입력과 출력의 분산을 균형 있게 유지하여, 신경망의 각 층에서 신호가 너무 커지거나 작아지지 않도록 하는 것이다.
  • 이를 위해서 이전 layer의 뉴런 개수와 다음 layer의 뉴런 개수를 이용하여 가중치를 초기화한다.

수식

  • Xavier Initialization에는 두 가지 방법이 있다.
  • 정규 분포 (Gaussian distribution)와 균등 분포 (Uniform distribution)를 사용하는 방법이 있다.

1) 정규분포(Gaussian distribution):

2) 균등 분포(Uniform distribution):

정리

  • Xavier Initialization는 여러 층의 기울기 분산 사이에 균형을 맞춰서 특정 층이 너무 주목을 받거나 다른 층이 뒤쳐지는 것을 막는다.
  • Xavier Initialization는 시그모이드 함수나 하이퍼볼릭 탄젠트 함수와 같은 S자 형태인 활성화 함수와 함께 사용할 경우에는 좋은 성능을 보이지만,
  • RELU 함수와 함께 사용할 경우에는 성능이 좋지 않다.

4. He 초기화(He initialization)

기본 아이디어

  • ReLU 에 특화된 초기값이다. (Xavier Initialization에서는 ReLU 함수를 사용할때 비효율적)
  • He 초기화는 Xavier Initialization과 다르게 다음층의 뉴런의 수를 반영하지 않고, 이전 layer의 뉴런수를 이용한다. ex) 앞 계층의 노드가 n개일때, 표준편차가 \sqrt{\frac{2}{n_{\text{in}}}} 정규분포를 사용한다.

수식

He 초기화는 가중치를 다음과 같은 방식으로 초기화한다.


정리

  • 시그모이드 함수나 하이퍼볼릭탄젠트 함수를 사용할 경우에는 Xavier Initialization이 효율적이다.
  • ReLU 계열 함수를 사용할 경우에는 He 초기화 방법이 효율적이다.
  • ReLU + He 초기화 방법이 좀 더 보편적임.
profile
Self supervised Learning, Time Series, Multimodal Learning

0개의 댓글