[딥러닝] 밑바닥부터 시작하는 딥러닝 6장
6.1 매개변수 갱신
확률적 경사 하강법(SGD)
: 미리 정해둔 학습률만큼 이동함. 일정한 방향만 이동하겠다 -> 비등방성 함수에서는 탐색 경로가 비효율적
모멘텀
: v 변수를 추가. 기울기 방향으로 학습률이 가속되도록 조정. 바닥을 구르는 경로 형성
AdaGrad
: 학습률을 점점 낮추는 방법 중 매개변수 '전체'의 학습률 값을 일괄적으로 낮추는 방법
Adam
: 모멘텀 + AdaGrad
문제에 따라 효율적인 갱신 방법은 제각각이기 때문에 상황에 맞춰 적절한 방법을 채택해야 함.
6.2 가중치의 초깃값
초깃값을 0으로(가중치를 균일한 값으로 설정하는 것) 설정하면 안됨.
왜냐하면 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문 -> 가중치를 여러 개 갖는 의미 사라짐
=> 그렇기 때문에 초깃값을 무작위로 설정해야 함.
가중치에 따른 활성화값 분포
기울기 소실 문제 발생
활성화값 치우침
가장 나은 모습
6.3 배치 정규화
초깃값을 적절히 설정해야 활성화값 분포가 적당히 퍼짐
-> 각 층이 활성화를 적당히 퍼뜨리도록 '강제'할 수는 없나? => 배치 정규화
배치 정규화의 특징
- 학습을 빨리 진행할 수 있다.
- 초깃값에 크게 의존하지 않는다.
- 오버피팅을 억제한다.
6.4 바른 학습을 위해
오버피팅 : 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태
오버피팅의 경우
- 매개변수가 많고 표현력이 높은 모델
- 훈련 데이터가 적음
가중치 감소
: 학습 과정에서 큰 가중치에 대해 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제
드롭아웃
: 뉴런을 임의로 삭제하며 학습. but 시험 때는 모든 뉴런에 신호를 전달.
6.5 적절한 하이퍼파라미터 값 찾기
하이퍼파라미터 : 각 층의 뉴런 수, 배치 크기, 매개변수 갱신 시의 학습률과 가중치 감소 등
지금까지의 사용 데이터셋 : 훈련 데이터 & 시험 데이터
but 하이퍼파라미터의 성능을 평가할 때는 시험 데이터 사용불가 => 검증 데이터 사용
하이퍼파라미터 최적화 하는 방법
- 0단계 하이퍼파라미터 값의 범위를 설정
- 1단계 설정된 범위에서 하이퍼파라미터의 값을 무작위로 추출
- 2단계 1단계에서 샘플링한 하이퍼파라미터 값을 사용하여 학습하고, 검증 데이터로 정확도를 평가
- 3단계 1단계와 2단계를 특정 횟수 반복하며, 그 정확도의 결과를 보고 하이퍼파라미터의 범위를 좁힘