M.L (p.202)

가중치의 초깃값

overfitting 이란 ? 신경망 학습에서 training data set에서는 높은 정확도를 보이는데 test data set에서는 그만큼의 정확도 보다 낮은 정확도를 가지는 현상으로, 보통  훈련 데이터가 적거나, 매개변수가 많고 표현력이 높은 모델의 경우에 발생한다.

 

(내생각

overfitting이 발생하는 원인에 대해 : input data와 output data가 주는 정보는 변하지 않는다. 그렇다면 그 사이에 벌어지는 일련의 과정에서 overfitting의 원인이 있을 것이다. 그 안에는 weight , bias, active function, hidden layer 등등이 있다.  )

 

그 중 overfitting을 억제해 범용 성능을 높이는 테크닉인 weight decay 기법이 있다. 가중치 감소는 가중치 매개변수의 값이 작아지도록 학습하는 방법인데 가장 심플한 방법으로 초깃값을 최대한 작은 값에서 시작하는  방법이 있다. 여태까지 사용한 신경망의 가중치 초깃값은 정규분포에서 생성되는 값을 0.01배 한 작은 값(표준편차가 0.01인 정규분포)를 사용했다.  이 함수는 가우시안 표준 정규분포(mean = 0, standard deviation =1)를 따르는 난수를 생성하는 함수로 ,  그 값에 *0.01을 곱했으니 표준편차가 0.01이다.

 

그렇다면? 가중치를 아주 작게 0에서 시작한다면?  초깃값 파라미터를 0으로 두고 학습하면 어떻게 될까? 다음은 input data (1000,100) 1000개를 (100,100)인 0으로 초기화된 weight들을 5번 돌려본 결과다. (active function 으로 sigmoid를 사용)

보다시피 학습을 전혀하지 않은 것을 볼 수 있다.

그렇다면 가중치를 np.ones 함수로 모두 1로 초기화하면 어떻게 될까?

학습이 안된다.

마지막으로 한 번더 np.full함수로 5로 초기화시킨 가중치는 어떻게 될까?

역시 학습이 안된다.

가중치를 균일한 값으로 설정해서는 안된다. 그 이유는 바로 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문이다. 예로 초기화 가중치가 모두 0인 가중치를 생각해보면 첫 번째 순전파가 끝난 뒤 나오는 값은 모두 0으로 동일하다(bias를 생각하지 않는 경우) . 그리고 다음층의 가중치 역시 0으로 동일하다면 순전파 출력 역시 같은 0 값을 출력하게된다. 이처럼 같은 값의 출력은 오차역전파에서 하류로 흘려보낼 때 가중치가 모두 똑같이 갱신된다는 말이 된다. 그래서 같은 가중치들은 같은 초깃 값에서 시작하고 갱신을 거쳐도 같은 값을 유지한다. 이 문제를 해결하려면 (가중치의 대칭적인 구조를 무너뜨리려면) 초깃값을 무작위로 설정해야한다.

 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다