AI/모두의 딥러닝

[Deep Learning : 딥러닝] 오차 역전파 기울기 소실, 확률적 경사 하강법(Stochastic Gradient Descent)

LiDARian 2021. 6. 10. 18:05
반응형

오차 역전파 기울기 소실 문제

오차 역전파를 이용하면 입력층에 가까워 질수록 보정해야하는 기울기의 값이 작아질 수밖에 없다. 애초에 기울기가 0이 되는 방향으로 parameter를 조정하기 때문에.또한 활성화 함수로 사용되는 sigmoid함수의 미분 최대값이 0.3인 것도 한 몫한다.

그래서 다른 여러가지 활성화 함수를 도입한다.
$tanh(x), log(1+e^x), y=x(x>0)$

확률적 경사 하강법 Stochastic Gradient Descent SGD

계산량을 줄이고, 과적합이 되는 경우를 방지하기 위해, 랜덤하게 일부 데이터만을 이용해서 경사 하강법을 적용하는 것을 의미한다.

모멘텀 Momentum

Momentum SGD는 오차를 수정하기 전, 직전의 수정값의 부호/방향을 참고해서 같은 방향으로 일정한 비율만 수정되게 한다. 이를 통해서 parameter 수정 값의 방향이 자꾸 바뀌어 여러번 경사하강법을 적용해야하는 일을 피할 수 있다.

케라스에서 제공하는 경사하강법

케라스에서 제공하는 경사하강법 종류

  1. 확률적 경사 하강법 (SGD)

랜덤하게 추출한 일부 데이터를 사용해 더 빨리, 자주 업데이트를 하게 하는 것.

keras.optimizers.SGD(lr = 0.1)
  1. 모멘텀 (Momentum)

관성의 방향을 고려해 진동과 폭을 줄이는 효과

keras.optimizers.SGD(lr = 0.1, momentum= 0.9)
  1. 네스테로프 모멘텀(NAG)

모멘텀이 이동시킬 방향으로 미리 이동해서 그레이디언트를 계산. 불필요한 이동을 줄이는 효과

keras.optimizers.SGD(lr = 0.1, momentum= 0.9, nesterov = True)
  1. 아다그라드(Adagrad)

변수의 업데이트가 잦으면 학습률을 적게 하여 이동 보폭을 조절하는 방법

keras.optimizers.Adagrad(lr = 0.01, epsilon = 1e - 6)

epsilon, rho, decay 같은 파라미터는 바꾸지 않고 그대로 사용하기를 권장
learning rate(학습률) 값만 적절히 조절

  1. 알엠에스프롭(RMSProp)

아다그라드의 보폭 민감도를 보완한 방법

keras.optimizers.RMSprop(lr = 0.001, rho = 0.9, epsilon = 1e - 08, decay = 0.0)
  1. 아담(Adam)

모멘텀과 알엠에스프롭 방법을 합친 방법

keras.optimizers.Adam(lr = 0.001, beta_1 = 0.9, beta_2 = 0.999, epsilon = 1e - 08, decay = 0.0)
반응형