머신러닝

[딥러닝] 딥러닝 2단계: 심층 신경망 성능 향상시키기 - 4. 최적화 알고리즘

sa_woll 2024. 5. 13. 15:15

미니 배치 경사하강법

- 모든 훈련 샘플을 처리하기 전에 경사 하강법이 진행되도록 하면 알고리즘 속도가 빨라진다.

- 미니배치: 작은 훈련 세트

- 새로운 표기법) x^{n} : n번째 미니배치. -> Mini batch t: X^{t}, Y^{t}

- 배치 경사 하강법: 모든 훈련 세트를 동시에 학습

- 미니 배치 경사 하강법: 전체 훈련 세트를 배치로 나누어 학습. t = 1, ... , 5000까지.

(1) X^{t}에 대해 정방향 전파: 벡터화된 코드가 100개의 훈련 샘플 학습을 대신

(2) 비용함수 계산

(3) 가중치 업데이트

-> 경사 하강은 각 배치마다 1번씩

- J^{t} 는 X^{t}, Y^{t} 에 대해 계산된 비용함수

- 배치의 크기는 매개변수

- 두 가지 극단적인 경우: 배치의 크기 = 훈련샘플 전체(m) 인 경우(batch), 배치의 크기 = 1인 경우(stochastic)

- 배치의 크기는 1~m 의 사이의 값인 게 좋다.

- 작은 훈련 세트: 그냥 배치 경사 하강법 사용

- 더 큰 훈련 세트: 전형적인 미니배치 크기는 64~512(2의 배수로)

 

지수 가중 이동 평균

- 경사 하강법보다 빠른 알고리즘

- v_n+1 = 0.9v_n + 0.1Θ_n

- 공식:

베타 = 0.9

- 베타값이 클수록 곡선이 더 부드러워진다.

초록색 선이 베타 = 0.98일 때, 빨간색 선이 베타 = 0.9일

-  장점: 메모리 사용량이 적다.

- 편향 보정: 평균을 더 정확하게 계산할 수 있다.

- 첫 번째 값에 v​t​​ /(1−β​t ) 를 취해서 실제 값과 비슷해지게 한다.

Momentum 최적화 알고리즘

VdW=β1VdW+(1β1)dW 

w:=wαVdW 

- 매 단계의 경사 하강 정도를 부드럽게 만들어 준다.

- 속도 요소를 추가하여, local minimum에 빠지지 않게 한다.

- 경사 하강법을 빠르게 한다.

RMSProp 최적화 알고리즘

- root mean square pro

- SdW=β2SdW+(1β2)dW2 

- w:=wαSdW+ϵdW 

- dW2​: 요소별 제곱

- 경사 하강법을 빠르게 한다.

- 미분값이 큰 곳에서는 업데이트 시 큰 값으로 나눠주기 때문에 기존 학습률보다 작은 값으로 업데이트되어 진동을 줄이는 데에 도움이 된다.

Adam 최적화 알고리즘

- Adaptive moment estimation

- VdW=0,SdW=0 로 초기화 시킵니다.

- Momentum 항:  VdW=β1VdW+(1β1)dW 

- RMSProp 항: SdW=β2SdW+(1β2)dW2 

- Bias correction:  VdWcorrect=1β1tVdW,SdWcorrect=1β2tSdW  

- 업데이트: w:=wαSdWcorrect+ϵVdWcorrect 

- Momentum과 RMSProp을 섞은 알고리즘

학습률 감쇠

- 작은 미니배치에서 노이즈가 심해서 일정한 학습률일 때 최적값에 수렴하기 어려운 경우.

- 학습률을 점점 작게 만들어 최적값을 더 빨리 찾도록 만든다.

- 기법들:

  • α=1/(1+decay rate ×epoch num) * ​)α0 
  •  α=0.95^(epoch num​) * α0  (exponential decay 라고 한다.) 
  •  α=​k/√(epoch num) * α0  
  •  α=​k/​(batch num​) * α0  
  • step 별로 α를  다르게 설정한다.