굴러가는 분석가의 일상

딥러닝의 학습 #2.2 (가중치 초깃값-Xavier&He) 본문

Deep Learning 이해

딥러닝의 학습 #2.2 (가중치 초깃값-Xavier&He)

G3LU 2024. 1. 16. 00:16

※ 앞선 포스팅에서 딥러닝의 학습(옵티마이저) 에 대해 알아보았습니다. 궁금하시다면, 숨긴 글 참조 부탁드리겠습니다!  본 게시물에서는 가중치의 초깃값 규칙과 기법에 대해서 알아보도록 하겠습니다. 

가중치 초기화 규칙 

가중치의 초깃값을 설정하는 것은 학습의 성과를 좌지우지할 수 있습니다. 가중치 매개변수의 값이 최대한 작아지도록 학습하는 방법이 가중치 감소(Weight Decay) 입니다. 이는 가중치 값을 가장 작게 설정하여 오버피팅이 일어나지 않게 하는 범용성이 높은 기법 중 하나이므로 매우 중요합니다. 

 

이를 고안하기 위해서는 딱 두가지만 기억하시면 좋을거 같습니다.

 

1. 가능하다면 최대한 작은 값으로 가중치 설정하기. 

→ 단, 가중치 값들을 균일하게 설정하면 안됩니다. 왜냐하면 오차역전파법에서 뉴런에 모두 같은 값이 전달되어, 값은 값이 갱신되기 때문입니다. 

 

2. 활성화 함수의 출력 데이터의 분포 

 

i) 가중치 값이 표준편차가 1인 정규분포에서 초기화 시킨 후, Sigmoid 활성화 함수를 통해 나온 값

 

 

각 층의 활성화 값들은 대부분 0과 1에 치우쳐 분포하게 된다면, 기울기 값이 점점 작아지다가 사라지는 기울기 소실 (Gradient Vanishing) 이라는 문제점이 발생하게 됩니다. 

 

 

ii) 가중치 값이 표준편차 0.01인  정규분포에서 초기화 시킨 후, Sigmoid 활성화 함수를 통해 나온 값

 

 

앞의 예시처럼 0과 1에 치우쳐 분포되어 있지 않아 기울기 소실 대해 신경쓰지 않아도 됩니다. 하지만 이번에는 0.5 부근에 집중되어 있어, 표현력 관점에서 문제가 됩니다. 즉 다수의 뉴런이 비슷한 값을 출력하고 있어 개수가 많더라도 의미가 없다는 것을 뜻합니다. 

 

▶  (i)과 (ii) 예시를 통해서 기울기 소실표현력 제한 문제가 있으므로, 적당히 골고루 분포되어있게 만들어 주는 것이 중요합니다. 이때 사용하는 기법은 Xaiver 및 He 초기화 방법이 존재합니다. 


가중치 초기화 기법

1. Xavier 초기화 (표쥰편차가 sqrt(1/n)인 정규분포 사용) 

 

Xavier 초기화 방법은 파라미터가 존재하는 Layer들의 입력/출력 노드 개수에 따라 동적으로 파라미터 값을 정규분포 또는 균등분포에 의해 초기화 시키는 것 입니다. 이전 층의 뉴런의 개수 (in) 및 다음 층의 뉴런의 개수(out)를 이용하여 아래와 같이 식을 세울수 있습니다. 다음은 균등분포를 통해 초기화한 것 입니다. 

 

 

정규분포로 초기화하는 경우는 아래와 같습니다. 

 

 

Xavier 초기화 방법은 여러 층의 기울기 분산 사이에 균형을 맞추게 되어 어느 특정층이 집중되거나 다른 층이 뒤처지는 것을 막을 수 있는 큰 장점이 있습니다. 하지만 Xavier 초기화 방법은 시그모이드 함수와 같은 S함수(tanh함수)에서는 우수한 성능을 보이지만 ReLU함수와 사용하게 될 경우 성능이 좋지 않습니다. 

 

2. He 초기화 (표쥰편차가 sqrt(2/n)인 정규분포 사용) 

 

ReLU함수를 사용하여 초기화 하는 방법으로는 He 초기화 방법이 있습니다. ReLU 함수를 사용하는 He 초기화 방법은 음의 영역이 0이라는 점을 고려하여 좀 더 넓게 분포시키기 위해 Xavier 초기화 방법보다 2배의 계수가 필요하므로, 표준편차가 sqrt(2/n)인 정규분포를 사용하게 됩니다. 또한, Xavier 초기화와는 다르게 다음 층의 뉴런 개수(out)를 고려하지 않습니다. 

 

균등 분포로 초기화할 경우 아래의 식을 따르게 됩니다. 

 

 

정규분포를 따르도록 초기화할 경우, 평균이 0이고 표준편차가 아래의 식을 만족하도록 아래의 식을 따릅니다.