Step size α (학습률)
-
학습률이 너무 작으면
매 반복마다 이동 폭이 작아, 최솟값 도달에 너무 오래 걸림
-
학습률이 적절하면
매 반복마다 충분히 크게 이동하되
최솟값을 지나치지 않아 빠르고 안정적으로 수렴
-
학습률이 너무 크면
한 번에 너무 크게 이동해 최솟값을 뛰어넘고 반대쪽으로 튕겨 나와,
오히려 오차가 증가하거나 발산
Batch gradient descent
손실 함수 J(θ)를 최소화하기 위해 매 반복마다
전체 훈련 샘플을 사용해 파라미터를 한 번에 갱신하는 방법
Stochastic gradient descent (SGD)
매번 전체 데이터 m개를 모두 사용하지 않고
1개씩 샘플을 뽑아 파라미터를 갱신하는 방법
sample에서 random하게 1개를 선택
Mini-batch SGD
학습 데이터를 b개씩 묶음(mini batch)으로 나누고,
각 미니배치마다 gradient를 계산해 파라미터를 갱신하는 방법
Limitation : Local Optimum
- Local Optimum
주변에서는 최솟값이지만 전역 최솟값보다는 높음
- Global Optimum
전체 영역에서 가장 낮은 곳(진짜 최솟값)
Critical point(임계점)
∇θJ(θ)=0 지점(평탄한 지역)에서는
기울기가 0이라 더 내려갈 방향을 찾을 수 없음
→ 이 지점이 꼭 global minimum이 아닐 수 있음
Some ideas to avoid local minimum
Method of momentum
이전 스텝에서 움직인 방향과 크기를 기억해 뒀다가,
일관된 방향으로는 더 세게 밀어 주고,
갑작스런 기울기 변화(잡음)에는 덜 민감하도록 갱신하는 기법
관성(속도) 변수 vt 정의
vt={g1,ρvt−1+(1−ρ)gt,t=1,t>1.
gt=∇θJ(θt−1) : t번째 스텝의 관측된(현재) 기울기
ρ∈[0,1) : 과거 속도를 얼마나 유지할지 결정하는 smoothing factor
→ 지나온 기울기를 물리적 관성처럼 기억해 두었다가,
지금 기울기와 합쳐서 파라미터를 업데이트
vt=ρkvt−k+(1−ρ)[gt+ρgt−1+⋯+ρk−1gt−k+1]
파라미터 업데이트
θt=θt−1−αvt,
momentum의 효과
- 곡률이 높은 축(steep 방향)에서
과거 기울기를 계속 누적해 더 크게 이동 → 진동 완화
- 완만한 축(flat 방향)에서
누적된 관성 덕분에 속도가 붙어서 더 빠르게 수렴
Nesterov Momentum
현재 위치(θₜ)가 아니라
관성을 더해 미리 이동한 위치(θₜ + ρ·vₜ)에서 기울기를 계산
관성을 더해 이동위치(lookahead)에서 기울기를 구하기 때문에,
- 경사가 바뀌는 지점(최솟값 직전 등)을 좀 더 정확히 포착
- 관성의 과도한 관성화(over-shoot)를 줄여 빠르게 수렴
overshoot : 과도한 관성으로 최솟값을 지나쳐버리는 것
파라미터 업데이트
v←ρvt−α∇J(θt+ρvt)
θ←θ+v
per-parameter adaptive learning rates
각 파라미터(θₖ)마다 학습률(α)을 자동으로 조절해 주는 기법
AdaGrad
각 파라미터별로 지금까지의 그래디언트 제곱합을 누적(accumulate)
sk←sk+(gk)2
- gradient가 자주 크게 튀는 방향의 학습률을 작게,
- 거의 변동이 없는 방향의 학습률을 크게 조정
단점 :
→ 제곱합이 계속 누적되며 분모가 계속 커져서, 학습률이 결국 거의 0에 수렴
→ 더 이상 학습 못 함
RMSProp
AdaGrad 의 학습률이 무한히 작아지는 문제를 해결하기 위해
과거 그래디언트 제곱합을 최신 값에 더 큰 가중치(weight)를 두고 오래된 값은 지수적으로 작아지게 계산
- 매 스텝마다 현재 그래디언트 제곱 gt2 를 계산하고,
- 이전까지 유지하던 평균값 st−1을 감쇠 계수 β만큼 보존한 뒤,
- 새로 들어온 값에는 (1−β)만큼 가중치를 줘서 더함
st=βst−1+(1−β)gt2
Adam (Adaptive Moment Estimation)
RMSProp + momentum
Learning rate scheduling
학습률을 점진적으로 감소시켜야함
- 초반 빠른 수렴
학습 초반엔 큰 학습률(α)이 모델을 빠르게 좋은 영역으로 이동시킴
- 후반 미세 조정
학습이 진행될수록 학습률이 너무 크면 발산하거나 진동(oscillation)
학습률을 시간 t에 따라 조정하는 스케줄링 함수
-
지수 감쇠 (Exponential decay)
α(t)=α0e−kt
매 스텝(epoch)마다 e−kt만큼 곱해 감소
k가 크면 빠른 감쇠, 작으면 완만한 감쇠
-
역시간 감쇠 (Inverse time decay)
α(t)=1+ktα0
시간이 지날수록 분모가 커져 학습률이 점진적으로 작아짐
후반부엔 매우 완만한 감소 곡선
Some optimization in regression to avoid overfitting
• 모델 복잡도
특성(feature)의 개수가 늘어나면,
그만큼 회귀모델의 파라미터(회귀 계수) 수도 증가
→ 파라미터 수가 많아지면 모델은 더 복잡해짐
과적합을 방지하기 위한 최적화 기법
Reduce number of features
모델에 넣는 입력 변수(feature)의 개수를 줄여서,
학습해야 할 파라미터 수를 감소시킴
정규화 (Regularization)
모든 특성을 유지하되, 회귀 계수(θ)의 크기에 패널티를 줘서
불필요하게 큰 값으로 학습되는 것을 억제
노이즈에 덜 민감 → 일반화 성능 향상
J(θ)=2m1MSEi=1∑m(hθ(x(i))−y(i))2+2mλL2 패널티j=1∑nθj2
λ (regularization parameter):
크면 → 계수값을 더 강하게 억제 → 모델이 단순해짐
작으면 → 패널티 약화 → 일반 회귀와 비슷