최적화
매개변수의 최적값 찾는 문제
- 확률적 경사하강법(Stochastic Gradient Descending)
W←W−η∂W∂L
- 기울어진 방향으로 일정 거리만 이동
- 단순하지만 비효율적(특히 비등방성 함수에서 비효율적)
- 모멘텀(Momentum)
vW←αv−η∂W∂L(속도)←W+v
- 운동량, 물리법칙을 응용한 방법
- 내려 오던 관성 방향으로 또 가자
- NAG(Nestrov Accelrated Gradient)
v←αv−η∂(W−αv)∂LW←W+v
- 모멘텀은 update과정에서 관성에 의해 최적점을 지나칠 수 있다.
- NAG는 모멘텀으로 이동된 지점에서 기울기를 활용하여 update를 수행하기 때문에 이러한 문제 해소(멈춰야하는 곳에서 제동)
- AdaGrad(Adaptive Gradient)
h←h+∂W∂L@∂W∂LW←W−ηh1∂W∂L
- 학습률 감소기법 사용
- 처음에는 크게 학습하다가 점점 작게 학습
- 학습률 감소가 매개변수의 원소마다 다르게 적용
- 학습할수록 갱신량이 0에 수렴
- RMSProp
Gt=γGt−1+(1−γ)(∂W∂L)2Wt+1=Wt−Gt+ϵη∂W∂L
- AdaGrad를 지수이동평균을 이용하여 개선
- 먼 과거의 기울기는 잊고, 새로운 기울기를 크게 반영한다.
- Adam(Adaptive Moment Estimation)
mt=β1mt−1+(1−β1)∂W∂Lvt=β2mt−1+(1−β2)(∂W∂L)2wt+1=wt−mtvt+ϵη
- RMSprop과 Momentum을 합친 기법
- 초기 몇 번의 update에서 0으로 편향되어 있어 하이퍼파라미터 편향 보정 진행
- 하이퍼파라미터 3개 설정 (η-학습률, β1-1차 모멘텀용 계수, β2-2차 모멘텀용 계수)
- ϵ=0.1−8, β1=0.9, β2=0.999 추천
- Nadam
mt=β1mt−1+(1−β1)∂Wt∂Lmt^=1−β1tmtθt+1=θt−vt^+ϵηmt^θt+1=θt−vt^+ϵη(1−β1tβ1mt−1+1−β1t(1−β1)∂Wt∂L)θt+1=θt−vt^+ϵη(β1mt−1^+1−β1t(1−β1)∂Wt∂L)∴θt+1=θt−vt^+ϵη(β1mt^+1−β1t(1−β1)∂Wt∂L)
- Adam은 RMSprop과 Momentum을 합친 기법이지만, Nadam은 RMSprop과 NAG를 합친 방법
- NAG는 변형하여 사용
- mt−1을 gradient를 업데이트 할 때와, w를 업데이트할 때 2번 사용
- mt−1 대신 mt 사용
가중치 초기값 설정
가중치 감소기법(weight decay)
- 오버피팅을 억제해 범용 성능 높이는 테크닉
- 가중치 매개변수의 값이 작아지도록 학습
- 그렇게 하기 위해 초깃값도 최대한 작은 값에서 시작
- 그렇다고 하여 초기값을 0으로 설정할 시, 학습이 올바르게 시행되지 않음
- 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문
∴ 초기값을 무작위로 설정해야 함.
- 가중치를 표준편차(σ)가 1인 정규분포로 초기화
- 가중치를 표준편차(σ)가 0.01인 정규분포로 초기화
- 0.5 부근에 집중됨 → 다수의 뉴런이 거의 같은 값 출력, 표현력이 제한됨
∴ 이 사이의 적당한 표준편차 값 지정하여 sampling해야 함!
Xavier 초기값
σ=n1
- n은 앞 계층의 노드 개수이다.
- S자형 함수(Sigmoid, tanh)에 적합.
He 초기값
σ=n2
- n은 앞 계층의 노드 개수이다.
- ReLU에 특화된 초기값
- 음이 영역이 0이라서 더 넓게 분포시키기 위해 2배의 계수가 필요
배치 정규화(Batch Normalization)
활성화 값이 적당히 분포되도록 조정
- 이점
- 학습 속도 개선
- 초기값에 크게 의존하지 않는다.
- 오버피팅 억제
- 미니배치 단위로 평균이 0, 표준편차가 1이 되도록 정규화
x^←σ+ϵx−μ
- 활성화 함수의 앞 또는 뒤에 위치함으로써 분포가 덜 치우치게 함
- 정규화된 데이터에 고유한 확대(scale)와 이동(shift) 변환 수행
y←γx^+β
- γ가 확대, β가 이동을 담당
- γ=1, β=0(원본 그대로)부터 시작하여 학습하면서 적합한 값으로 조정
- Batch Normalization의 단점 극복한 Layer Normalization 기법 등장
오버피팅
- 발생하는 경우
- 매개변수가 많고 표현력이 높은 모델 사용
- 훈련 데이터가 적음
- 가중치 감소
학습 과정에서 큰 가중치에 대해서는 그에 상응하는 큰 penalty 부여
- L2norm 활용한 예시
- 모든 가중치 각각의 손실 함수에 21λW2을 더함(λ: 정규화 정도 정함)
- 기울기를 구하는 계산에서는 오차역전파법의 결과에 λW(정규화항 미분값) 곱함
L1norm: ∣w1∣+∣w2∣+...+∣wn∣
L2norm: w12+w22+...+wn2
Linfnorm: 각 원소의 절대값 중 가장 큰 값
- 드롭아웃(Dropout)
- 학습 시마다 은닉층의 뉴런을 무작위 삭제
- 시험 때는 모든 뉴런 사용 후, 각 뉴런의 출력에 훈련 때 삭제안한 비율 곱
- 뉴런을 무작위로 삭제하는 행위는 매번 다른 모델을 학습하는 것과 같은 효과(∼ 앙상블 학습)
적절한 하이퍼파라미터 값 찾기
- 검증 데이터 사용
- 하이퍼파라미터 성능 검증 시 시험 데이터를 사용하면 안됨(∵ 오버피팅)
- 훈련데이터는 매개변수 학습, 검증데이터는 하이퍼파라미터 성능 평가, 시험데이터는 신경망의 범용 성능 평가에 사용
- 하이퍼파라미터 최적화
- 그리드 서치(Grid Search)
- 랜덤 서치(Randomized Search)
- 베이지안 최적화(Bayesian Optimization)
참고
밑바닥부터 시작하는 딥러닝 (사이토 고키)
https://onevision.tistory.com/entry/Optimizer-%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%84%B1-Momentum-RMSProp-Adam
https://hiddenbeginner.github.io/deeplearning/2019/09/22/optimization_algorithms_in_deep_learning.html#NAdam