학습 관련 기술들-6장
신경망 학습 핵심 개념
1) 가중치 매개변수 최적값 탐색 방법 (최적화 방법)
2) 가중치 매개변수 초깃값/하이퍼파라미터 설정방법
3) 오버피팅 대응책 - 가중치 감소/드롭아웃 등의 정규화 방법
4) 배치 정규화 방법
-> 신경망(딥러닝) 학습의 효율+정확도 상승 가능
1. 매개변수 갱신//
- 의의 :
신경망 학습의 목적 = 손실함수의 값을 최대한 낮추는 매개변수 탐색
-> 매개변수의 최적값을 찾는 것
-> "최적화" 라 한다
- 문제점 : 매개변수 공간이 너무 넓고, 복잡 -> 최적의 솔루션 찾기 힘듬
-> 그나마 빠른 최적화 방법 : 확률적경사하강법, etc
- SGD의 한계점 :
- 비등방성 함수에서는 탐색 경로가 비효율적
-> 해결책 : 모멘텀, AdaGrad, Adam
- 모멘텀 방식 : 속도값 갱신 + 가중치값 갱신 -> 지그재그 정도 완화
- AdaGrad 방식 :
- 학습률 감소 : 각각의 매개변수에 맞는 맞춤형 학습률을 제시해줌
-> 엄청난 개선 가능
- Adam 방식 : 모멘텀 + AdaGrad방식 (섞은 것) -> 편향 보정도 가능케 함.
** 이 방식들 중에서 절대적 우위를 지니고 있는 건 없다! 상황에 따라 우세한 방식이 있음
2. 가중치의 초깃값//
- 의의 : 어떤 초기값을 설정하는가에따라 신경망 학습의 승패가 자주 갈림.
-> 가중치 감소 기법을 사용한다면, 오버피팅 억제 가능
- 가중치 초깃값을 균일한 값으로 설정해서 안되는 이유?
->역전파시, 가중치가 모두 똑같이 갱신됨. 가중치를 갖는 것이 무의미해짐
-> 가중치 값은 활성화 값들의 치우침이 최소일때 가장 효율적이다.
- 은닉층의 활성화값 분포 :
가중치의 초깃값에따라 은닉층의 활성화값이 어떻게 변하는지 실험.
-> 이걸 관찰해서, 가중치 초깃값이 어떻게 설정되는게 좋은지를 알아내자.
- 가중치의 표준편차 변형 :
ex1) 가중치 표준편차가 1일때 : 활성화값들이 0과 1에 치우침 -> 기울기 손실발생
ex2) 가중치 표준편차가 0.1일때 : 특정 활성화값에 치우침 -> 표현력 제한 (한개짜리 뉴런이나 다름없음)
** 해결방법!! : Xavier 초깃값!!
- Xavier 초깃값 : 앞 계층의 노드가 n개일 경우, 표준편차가 1/루트n 일때 가장 효율
- ReLU를 사용할 때의 가중치 초깃값
- Xavier 초깃값의 전제 : 활성화 함수가 선형 함수이다 !
-> 선형함수가 아닌 경우엔 어떻하지? 상황따라 적용 다르게!
- ReLU 함수를 사용할 때 : He초깃값을 사용하라!
- He 초깃값 : 앞 계층의 노드가 n개일때, 표준편차가 루트(2/n) 인 정규분포사용
(Xavier보다 좀 더 넓은 정규분포를 사용했으면 하기 때문)
*** 가장 적절한 초깃값 조합
- 활성화함수가 ReLU일때 : He 초깃값 사용
- S자 모양 곡선일때 (sigmoid, tanh등) : Xavier 초깃값 사용
- 표준편차가 0.01일때의 정규분포를 사용하는 가중치 초깃값 :
학습이 거의 이뤄지지 않음
(활성화값의 분포가 너무 작은 값에 밀집되어있기 떄문)
배치 정규화//
각 층이 활성화를 적당히 퍼뜨리도록 강제하는 방식
- 배치 정규화 알고리즘
-장점 :
1) 학습 속도 빠름
2) 초기값에 그게 의존 않암
3) 오버피팅 억제
- 단점 : 딥러닝 학습 시간이 길다
- 방식 : 미니배치를 단위로 정규화를 한다
-> 각 값들을 평균=0, 분산=1 이 되게 정규화를 해준다
- 배치 : 활성함수 전or후
- 추가 연산 : 확대와 이동 연산
- 효과 : 정확도가 훨씬 빠르게 올라간다 (학습 속도가 매우 빨라진다)
바른 학습을 위해//
- 오버피팅의 정의 : 신경망이 훈련데이터에만 지나치게 적응되어 그 외의 데이터에
대응을 제대로 못하는 상태
-> 좋은 머신러닝은, 오버피팅을 억제할 수 있어야함
- 오버피팅이 일어나는 경우 :
1) 매개변수가 많고 표현력이 높음
2) 훈련데이터가 적음
-ex) 훈련데이터를 줄인 시행을 했을 때, train데이터에선
정확도가 높은 반면, 실제 test에선 정확도 폭락함.
- 오버피팅 억제용 방법(1) : 가중치 감소
- 오버피팅이 주로 발생하는 이유 : 가중치 매개변수값이 커서
-> 해결책 : 가중치 감소
- 방법 : 큰 가중치에 대해서는 그에 상응하는 큰 패널티를 부여.
-> 실제로는 모든 가중치 각각의 손실 함수에 더함.
- 도입되는 개념 : 하이퍼 파라미터
-> 정규화의 세기를 조절한다.
- 오버피팅 억제용 방법(2) : 드롭 아웃
- 방식 : 뉴런을 임의로 삭제하면서 학습
-> 훈련을 할 때에는 할때마다 임의의 뉴런 삭제
-> 시험때, 훈련때 삭제한 비율을 곱하여 출력
** 이런 방식을 "앙상블 학습" 이라고 함. 여러 개의 표본들을 평균 내서
학습하기 떄문.
적절한 하이퍼파라미터 값 찾기//
** 하이퍼 파라미터란? 뉴런 수, 배치 크기, 매개변수 등등의 변수들을 의미
- 특징 :
- 하이퍼파라미터의 성능 평가시, 시험데이터를 사용 X, 검증데이터 사용 O
(시험데이터를 사용시, 하이퍼파라미터가 시험데이터에 오버피팅 될수도)
** 1) 훈련데이터 : 매개변수 학습
2) 검증데이터 : 하이퍼 파라미터 성능평가
3) 시험데이터 : 신경망의 범용 성능 평가
- 검증데이터 뽑아내는 방식 :
1) 훈련 데이터, 시험 데이터를 뽑아냄
2) 두 개를 섞음
3) 일정 비율을 검증 데이터로 분리해냄
4) 남은 데이터들을 훈련/시험데이터로 활용함
- 하이퍼파라미터 최적화
- 핵심 : 하이퍼파라미터의 최적값이 존재하는 범위를 조금씩 줄여나간다
by. 뽑아낼때마다 정확도를 살피며 반복수행.
- 평균 소요시간 : 몇일~몇주
- 해결방법 : 학습을 위한 에폭 작게함 -> 1회평가에 걸리는 시간 단축
** 더 발전되고 세련된 기법 : 베이즈 최적화 (하이퍼파라미터 최적화)
'기계학습 > [밑바닥부터 시작하는 딥러닝]' 카테고리의 다른 글
3장 신경망 코드들 모음 (0) | 2019.08.06 |
---|---|
2장 퍼셉트론 코드들 모음 (0) | 2019.08.06 |
7장 정리 - CNN (0) | 2019.08.06 |
4장 정리 - 신경망 학습 (0) | 2019.08.06 |
1장-3장 정리 - 퍼셉트론~신경망 (0) | 2019.08.06 |