심층신경망 훈련속도 높이기 (고속 옵티마이저)
심층 신경망 훈련 속도 높이기
: 연결 가중치 초기화, 활성화 함수, 배치 정규화, 사전 훈련된 층 재사용 (전이학습, 비지도 사전훈련, 보조 작업에서 사전훈련), 고속옵티마이저
고속 옵티마이저
1) 모멘텀 최적화
-
표준 경사하강법 : 경사면을 따라 일정한 크기의 스텝으로 조금씩 내려와 맨 아래에 도착하는데 시간이 더 오래 걸림
- 가중치 <- 가중치 - 가중치에 대한 비용함수의 그레디언트 * 학습률
- 이전 그레디언트 얼마였는지 고려 x
-
모멘텀 최적화 : 처음에 느리게 출발해 아래 도달할 때 가속화
- 가중치 <- 가중치 + 모멘텀 벡터
- 모멘텀 벡터 <- 모멘텀 벡터 * 모멘텀 - 그레디언트 x 학습률
- 모멘텀 (하이퍼파라미터) = 0.9 (default)
- 0 (높은 마찰 저항) ~ 1 (마찰 저항 없음)
- 이전 그레디언트 중요
optimizer = keras.optimizers.SGD(lr, momentum = 0.9)
2) 네스테로프 가속 경사
- 기본 모멘텀 최적화보다 항상 빠름
- 그래디언트 계산 시, 현재 위치가 아닌 모멘텀의 방향으로 앞선 위치의 그래디언트 계산
optimizer = keras.optimizers.SGD(lr, momentum, nesterov = True)
3) AdaGrad
- 최적점쪽으로 정확한 방향을 잡아 가장 가파를 차원을 따라 그래디언트 벡터 스케일 감소
- 학습률 감소시키지만 경사가 완만한 차원보다 가파른 차원에 대해 더 빠르게 감소함 = 적응적 학습률
- 신경망 훈련시 너무 일찍 멈추는 경우 있음. 따라서 간단한 선형회귀에서 효과적)
4) RMS Prop
- AdaGrad가 너무 빨리 느려졋 최적점에 수렴하지 못하는 단점 보완
- 가장 최근 반복에서 비롯된 그래디언트만 누적
- 파라미터 rho => 감소율
optimizer = keras.optimizers.RMSprop(lr, rho = 0.9)
- AdaGrad 보다 항상 성능 좋음
5) Adam
- 모멘텀 최적화 + RMSProp
- 모멘텀 최적화처럼 지난 그래디언트의 지수 감소 평균
- RMSProp처럼 지난 그래디언트 제곱의 지수 감소된 평균
- beta_1 : 모멘텀 감소 하이퍼파라미터
beta_2 : 스케일 감소 하이퍼파라미터optimizer = keras.optimizers.Adam(lr, beta_1 = 0.9, beta_2 = 0.999)
6) 학습률 scheduling
-
일정한 학습률이 아닌 큰 학습률로 시작하여 학습 속도가 느려질 때, 학습률 낮추어 좋은 솔루션 빨리 찾음
-
지수 기반 스케줄링
- 학습률 = 초기 학습률 * 0.1t/s
- s스텝마다 10배씩 줄어듦
#현재 에포크를 받아 학습률 반환 def exponential_decay(lr, s): def exponential_decay_fn(epoch): return lr*0.1**(epoch/s) return exponential_decay_fn #스케줄링 함수 전달하여 LearningRateScheduler 콜백 만들어 fit()에 전달 lr_sched = keras.callbacks.LearningRateScheduler(exponential_decay(lr, s)) history = model.fit(x,y, .. , callbacks = [lr_sched])
-
성능 기반 스케줄링
- 매 스텝마다 검증 오차 측정하고 오차 줄어들지 않으면 x배 만큼 학습률 감소
-
1사이클링 스케줄링
- 훈련 절반동안 초기 학습률을 선형적으로 증가시키고 나머지 절반동안 선형적으로 다시 감소. n0 는 n1의 10배정도 차이나도록 선택
-
거듭제곱 기반 스케줄링
- 학습률을 반복 횟수에 대한 함수
n(t) = n0/(1+t/s)c
t : 반복횟수
n0 : 초기 학습률
c : 거듭제곱 수
s : 스텝 횟수 - s번의 스텝 후 학습률은 n0/2, 또 다른 s번의 스텝 후 n0/3, ...
optimizer = keras.optimizers.SGD(lr, decay = 0.0001) # decay = s의 역수
- 학습률을 반복 횟수에 대한 함수
Author And Source
이 문제에 관하여(심층신경망 훈련속도 높이기 (고속 옵티마이저)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cherria96/심층신경망-훈련속도-높이기-고속-옵티마이저저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)