본문 바로가기
AI_basic/Deeplearning

[Deeplearning Part.5] 학습 관련 기술들

by hits_gold 2022. 1. 9.
반응형

매개변수 갱신

   신경망 학습의 목적은 손실함수의 값을 가능한 한 낮추는 매개변수를 찾는 것입니다. 지금까지 확률적 경사 하강법(SGD)를 통해 가중치를 업데이트하는 법을 알아보았는데, SGD 외 다른 매개변수 최적화 기법을 소개합니다. 

SGD기법을 통한 가중치 업데이트

 

1. 모멘텀 Momentum

  모멘텀은 운동량을 뜻하며, 가중치 업데이트 수식은 다음과 같습니다.

모멘텀을 통한 가중치 업데이트

 여기서 v라는 변수는 물리에서 말하는 속도에 해당합니다. αv항은 기울기 방향으로 힘을  받아 가중치가 가속되어 업데이트하는 형상을 띄게 됩니다.(α는 보통 0.9 등의 값으로 설정합니다.)

 

2. AdaGrad

 학습률을 효과적으로 정하는 기술로 학습률 감소 learning rate decay가 있습니다. 또한 학습률을 서서히 낮추는 간단한 방법은 매개변수 "전체"의 학습률 값을 일괄적으로 낮추는 것입니다. 이것을 발전시킨 것이 AdaGrad입니다.

AdaGrad를 통한 가중치 업데이트

 여기서 h는 학습률을 감소시키는 역할을 합니다. h의 갱신을 보면 특정 가중치 w에 대해 편미분한 값이 양수로 들어가게 되는데, 크게 갱신된 가중치에 대해서 개별적으로 학습률을 낮춘다는 것을 알 수 있습니다.

 

3. Adam

  Adam은 다소 복잡해 보이지만 직관적으로는 모멘텀과 AdaGrad를 융합한 듯한 방법입니다. 큰 특징은 하이퍼파라미터의 "편향 보정"이 진행된다는 것입니다.

Adam을 통한 가중치 업데이트
매개변수 최적화 기법들의 최적값을 찾아가는 경로 비교

 


 

가중치의 초깃값

 신경망 학습에서 가중치의 초깃값은 중요합니다. 가령 모든 가중치를 같은 값으로 설정한다면, 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되어 올바른 학습이 이루어질 수 없을 것입니다. "곱셈 노드의 역전파"를 떠올리면 이해가 될 것입니다. 따라서 가중치의 초깃값을 무작위로 설정해야함을 알 수 있습니다.

 

1. 은닉층의 활성화 함수의 출력 값 분포

 1) 시그모이드 함수

 가중치 초깃값을 표준편차가 1인 정규분포로 초기화하고, 은닉층을 5개 만들어 각 층의 활성화 함수로 시그모이드 함수를 만들었을 때 활성화값 분포는 다음과 같습니다.

표준편차가 0.1인 정규분포로 가중치 초깃값 초기화했을 때 각 층의 활성화값 분포

 

   각 층의 값들이 0과 1에 치우쳐 분포되어있습니다. 여기서 사용한 시그모이드 함수는 출력이 0또는 1에 가까워지면, 그 미분은 0에 가까워집니다. 따라서 역전파의 기울기 값이 점점 작아지다가 사라지는데, 이것을 기울기 소실gradient vanishing문제라고 합니다. 층을 깊게 하는 딥러닝에서는 기울기 소실이 심각한 문제가 될 수 있습니다.

 

표준편차가 0.01인 정규분포로 가중치 초깃값 초기화했을 때 각 층의 활성화값 분포

 이번에는 표준편차가 0.01인 정규분포로 초기화했을 때입니다. 앞의 에처럼 0과 1에 치우치진 않았으나, 다수의 뉴런이 거의 같은 값을 출력하고 있어 뉴런을 여러 개 둔 의미가 없어집니다. 그래서 활성화값들이 치우치면 표현력을 제한한다는 관점에서 문제가 됩니다.

Xavier 초깃값을 사용한 은닉층 별 활성화값 분포

 

 Xavier 초깃값은 가중치의 초깃값으로 표준편차가 1/√n이 되도록 설정합니다. 여기서 n은 앞 계층의 노드 개수를 의미합니다. 앞에서 본 두 예에 비해 확실히 값들이 넓게 분포됨을 알 수 있습니다.

 

  2) ReLu함수

 He 함수는 가중치의 초깃값이 √(2/n)가 되게 설정합니다. ReLu함수는 음의 영역이 0이라서 더 넓게 분포시키기 위해 Xavier 초깃값에서 2배의 계수가 필요하다고 직감적으로 해석할 수 있습니다.

 위 분포도를 보면, ReLu함수에서는 Xavier초깃값보다 He초깃값이 더 특화되어 있다는 것을 알 수 있습니다.

 

  3) 실제 데이터셋을 통한 비교

학습 횟수에 따른 가중치 초깃값 별 손실함수 값 변화

  위 예제는 MNIST 데이터셋을 5층 신경망에서 ReLu함수를 활성화 함수로 학습을 진행한 것입니다. 확실히 ReLu함수에 특화된 He 초깃값을 사용했을 때 학습 속도가 더 빠른 것을 알 수 있습니다.

 


 

배치 정규화

배치 정규화를 사용한 신경망의 예

  배치 정규화는 쉽게 말해, 각 층에서 들어온 미니 배치 입력 데이터를 평균이 , 분산이 1인 데이터로 정규화하는 것입니다. 이 처리를 각 계층마다 활성화 함수의 앞 또는 뒤에 삽입함으로서 데이터 분포가 덜 치우치게 할 수 있습니다.

 

 또한 배치 정규화 계층마다 이 정규화된 데이터에 고유한 확대와 이동 변환을 수행합니다. 수식으로는 다음과 같습니다.

정규화 값에 대한 확대와 이동

 배치 정규화를 사용할 때 대체로 다음과 같은 장점이 있습니다.

  • 학습 속도가 빨라진다
  • 초깃값에 크게 의존하지 않는다
  • 오버피팅을 억제한다

 


오버피팅 억제

 오버피팅은 주로 다음의 두 경우에 일어납니다.

  • 매개변수가 많고 표현력이 높은 모델
  • 훈련 데이터가 적을 경우

오버피팅 예시

 훈련 데이터의 정확도는 100 에폭을 지나는 무렵부터 거의 100%이지만, 시험 데이터에 대해서는 큰 차이를 보입니다. 따라서 오버피팅을 줄일 방법들을 사용해야합니다.

 

 1. 가중치 감소

  가중치 감소는 학습 과정에서 큰 가중치에 대해서 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제하는 방법입니다. 오버피팅은 가중치 매개변수의 값이 커서 발생하는 경우가 많기 때문입니다.

L2​norm  활용한 예시

 활용해 가중치 감소를 통해 오버피팅을 억제한 예시입니다. 위 예에서는 모든 가중치 각각의 손실 함수에 1/2*을 더합니다. 여기서 λ는 정규화 세기를 정하는 하이퍼파라미터이고, 1/2는 미분결과를 조정하는 역할의 상수입니다.

 

2. 드롭아웃 Dropout

  드롭아웃은 뉴런을 임의로 삭제하면서 학습하는 방법입니다. 훈련할 때는 삭제할 뉴런을 무작위로 선택하고, 시험 떄는 각 뉴런의 출력에 훈련 때 삭제한 비율을 곱하여 출력합니다.

 

반응형