궤도

[딥러닝] 밑바닥부터 시작하는 딥러닝 6장 본문

💻 현생/📂 etc.

[딥러닝] 밑바닥부터 시작하는 딥러닝 6장

영이오 2020. 11. 25. 21:59

6.1 매개변수 갱신

https://github.com/HyunJiLim0406/Practice/blob/master/deep-learning/6_1_%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98_%EA%B0%B1%EC%8B%A0.ipynb

 

HyunJiLim0406/Practice

Contribute to HyunJiLim0406/Practice development by creating an account on GitHub.

github.com

확률적 경사 하강법(SGD)

: 미리 정해둔 학습률만큼 이동함. 일정한 방향만 이동하겠다 -> 비등방성 함수에서는 탐색 경로가 비효율적

 

모멘텀

: v 변수를 추가. 기울기 방향으로 학습률이 가속되도록 조정. 바닥을 구르는 경로 형성

 

AdaGrad

: 학습률을 점점 낮추는 방법 중 매개변수 '전체'의 학습률 값을 일괄적으로 낮추는 방법

 

Adam

: 모멘텀 + AdaGrad

 

문제에 따라 효율적인 갱신 방법은 제각각이기 때문에 상황에 맞춰 적절한 방법을 채택해야 함.


6.2 가중치의 초깃값

github.com/HyunJiLim0406/Practice/blob/master/deep-learning/6_2_%EA%B0%80%EC%A4%91%EC%B9%98%EC%9D%98_%EC%B4%88%EA%B9%83%EA%B0%92.ipynb

 

HyunJiLim0406/Practice

Contribute to HyunJiLim0406/Practice development by creating an account on GitHub.

github.com

초깃값을 0으로(가중치를 균일한 값으로 설정하는 것) 설정하면 안됨.

왜냐하면 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문 -> 가중치를 여러 개 갖는 의미 사라짐

=> 그렇기 때문에 초깃값을 무작위로 설정해야 함.

 

가중치에 따른 활성화값 분포

가중치를 표준편차가 1인 정규분포로 초기화 할 때

기울기 소실 문제 발생

 

가중치를 표준편차가 0.01인 정규분포로 초기화 할 때

활성화값 치우침

 

가충지의 초깃값으로 'Xavier 초깃값'을 이용할 때

가장 나은 모습

 

가중치의 초깃값이 학습에 미치는 영향


6.3 배치 정규화

초깃값을 적절히 설정해야 활성화값 분포가 적당히 퍼짐

-> 각 층이 활성화를 적당히 퍼뜨리도록 '강제'할 수는 없나? => 배치 정규화

 

배치 정규화의 특징

  • 학습을 빨리 진행할 수 있다.
  • 초깃값에 크게 의존하지 않는다.
  • 오버피팅을 억제한다.

6.4 바른 학습을 위해

github.com/HyunJiLim0406/Practice/blob/master/deep-learning/6_4_%EB%B0%94%EB%A5%B8_%ED%95%99%EC%8A%B5%EC%9D%84_%EC%9C%84%ED%95%B4.ipynb

 

HyunJiLim0406/Practice

Contribute to HyunJiLim0406/Practice development by creating an account on GitHub.

github.com

오버피팅 : 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태

 

오버피팅의 경우

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

 

가중치 감소

: 학습 과정에서 큰 가중치에 대해 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제

 

드롭아웃

: 뉴런을 임의로 삭제하며 학습. but 시험 때는 모든 뉴런에 신호를 전달.


6.5 적절한 하이퍼파라미터 값 찾기

github.com/HyunJiLim0406/Practice/blob/master/deep-learning/6_5_%EC%A0%81%EC%A0%88%ED%95%9C_%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0_%EA%B0%92_%EC%B0%BE%EA%B8%B0.ipynb

 

HyunJiLim0406/Practice

Contribute to HyunJiLim0406/Practice development by creating an account on GitHub.

github.com

하이퍼파라미터 : 각 층의 뉴런 수, 배치 크기, 매개변수 갱신 시의 학습률과 가중치 감소 등

 

지금까지의 사용 데이터셋 : 훈련 데이터 & 시험 데이터

but 하이퍼파라미터의 성능을 평가할 때는 시험 데이터 사용불가 => 검증 데이터 사용

 

하이퍼파라미터 최적화 하는 방법

  • 0단계 하이퍼파라미터 값의 범위를 설정
  • 1단계 설정된 범위에서 하이퍼파라미터의 값을 무작위로 추출
  • 2단계 1단계에서 샘플링한 하이퍼파라미터 값을 사용하여 학습하고, 검증 데이터로 정확도를 평가
  • 3단계 1단계와 2단계를 특정 횟수 반복하며, 그 정확도의 결과를 보고 하이퍼파라미터의 범위를 좁힘
Comments