일반적인 딥 러닝 최적화 알고리즘(개요)

다음은 딥 러닝을 위한 다양한 최적화 알고리즘의 원리와 구현에 대한 간략한 소개입니다.

경사하강법¶

경사 하강법에 대해 이야기하기 전에 먼저 학습 속도를 이해하십시오(학습 속도, 여기서는 η \eta 로 기록합니다.h )

학습률은 목적함수가 국소최소값으로 수렴할 수 있는지 여부와 언제 최소값으로 수렴하는지를 결정하는 매개변수로 사용된다. 학습률이 너무 작 으면 경사하강법 속도가 너무 느려 훈련 시간이 오래 걸리고, 학습률이 너무 크면 수렴에 실패합니다.

경사하강법은 딥러닝에서 직접적으로 거의 사용되지 않지만 다음 섹션에서 확률적 경사하강법 알고리즘을 이해하려면 이를 이해하는 것이 중요합니다.

잘 이해하기 위해 목적함수(손실함수) f( x ) = x 2 f(x) = x^2를 선택한다.에프 ( 엑스 )=엑스2

f ′ ( x ) = 2 xf^{\prime}(x) = 2x에프 (엑스)=2x_ _

초기 값을 x = 10 x = 10 으로 설정합니다.엑스=10η = 0.2 \eta = 0.2그만큼=0.2

x 1 = 10 x_{1} = 10엑스1=10 에프(엑스) = 100에프(엑스) = 100에프 ( 엑스 )=100

x 2 = 6 x_{2} = 6엑스2=6 x 2 = x 1 − η f ′ ( x 1 ) x_{2} = x_{1} - \eta f^{\prime}(x_{1})엑스2=엑스1-ηf _ (엑스1) f( x 2 ) = 36 f(x_2) = 36에프 ( 엑스2)=36

x 3 = 3.6 x_{3} = 3.6엑스3=3.6 x 3 = x 2 − η f ′ ( x 2 ) x_{3} = x_{2} - \eta f^{\prime}(x_{2})엑스3=엑스2-ηf _ (엑스2) f( x 3 ) = 12.96 f(x_3) = 12.96에프 ( 엑스3)=12.96

그림과 같이 손실이 감소합니다.
사진 설명을 추가해주세요

배치 기울기 하강법(BGD)

모든 샘플 매개변수는 각 반복 업데이트에 참여합니다.

단점: 샘플이 많고, 한번 갱신하는데 시간이 오래 걸리며, 시간과 메모리 오버헤드가 매우 크다

일반적으로 기울기 경사하강법은 모든 샘플 매개변수 값을 반복하기 위해 경사하강법 공식을 사용하는 배치 경사하강법을 말합니다.

확률 하락(SGD)

그래디언트 디센트 방법을 사용하는 경우 소위 무작위이며 각 독립 변수 반복의 계산 비용은 O (n ) \mathcal{O}(n)O ( n ) , nn에 따라 다름n은 선형적으로 증가합니다. 따라서 훈련 데이터 세트가 크면 반복당 경사하강법의 계산 비용이 높아집니다.

Stochastic Gradient Descent(SGD)는 각 반복에서 계산 비용을 줄입니다. 확률적 경사하강법의 각 반복에서 동일한 샘플 매개변수를 무작위로 선택하여 업데이트하면 계산 비용이 O ( 1 ) \mathcal{O}(1) 로 감소함을 알 수 있습니다.( 1 ) .

단점: 그러나 각 단계에서 받는 정보의 양이 제한되어 있기 때문에 확률적 경사하강법에 의한 기울기 추정이 종종 편차가 있어 목적 함수 곡선의 수렴이 매우 불안정하고 격렬한 요동을 동반하며 때로는 그렇지 않은 경우도 있습니다. -수렴

미니배치 기울기 하강법(MGD)

Small batch Gradient descent, 즉 min-batch, 각 iteration, 사실 Batch Gradient descent는 타협적인 방법입니다. 무작위보다 정확하며 배치 크기는 여전히 샘플 분포를 반영할 수 있습니다. 딥 러닝에서는 이 방법이 매우 느리게 수렴하지 않고 수렴의 로컬 최적이 더 수용 가능하기 때문에 이 방법이 가장 많이 사용됩니다. 참고: min-batch 매개변수가 매번 1이면 SGD가 됩니다.

단점: SGD와 동일하게 다시 수렴할 때 뜨고, 불안정하며, 최적해 부근에서 진동,

모멘텀 경사하강법

SGD는 협곡을 만났을 때 충격을 받기 쉽습니다. 이를 위해 모멘텀을 도입하여 올바른 방향으로 SGD의 감소를 가속화하고 진동을 억제할 수 있습니다.

Gradient를 과거 Gradient의 평균값으로 대체하는 것이 주된 원리로 수렴 속도를 크게 높이고 Stochastic Gradient Descent의 최적화 과정에서 정체되는 문제를 방지할 수 있습니다.

확률적 경사하강법(SGD)에 지수 가중 평균을 추가하여 매개변수의 기울기를 업데이트합니다. 여기서 가중치는 일반적으로 0.9로 설정됩니다.
S d W [ l ] = β S d W [ l ] + ( 1 − β ) d W [ l ] S db [ l ] = β S db [ l ] + ( 1 − β ) db [ l ] W [ l ] : = W [ l ] − α S d W [ l ] b [ l ] : = b [ l ] − α S db [ l ] \begin{aligned} &S_{d W}[l]=\beta S_{ d W}[l]+(1-\beta) d W^{[l]} \\ &S_{db}[l]=\beta S_{db}[l]+(1-\beta) db[l ] \\ &W[l]:=W^{[l]}-\alpha S_{d W}[l] \\ &{ }_{b}[l]:=b[l]-\alpha S_{ db}[l] \end{정렬}.에스[ l ]=βS _[ l ]+( 1-β ) d [ l ]에스디비 _[ l ]=βS _디비 _[ l ]+( 1-b ) d b [ l ][ l ]:=[ l ]-αS _[ l ][ l ]:=b [ l ]-αS _디비 _[ l ]
그러면 아래 그림과 같이 경사하강법 과정은 어떻게 될까요:
여기에 이미지 설명 삽입
전면과 후면 경사방향이 일치하면 모멘텀 경사하강법이 학습을 가속화할 수 있고, 전면과 후면 경사방향이 일치하지 않으면 모멘텀 경사하강법이 억제될 수 있습니다. 진동.

AdaGrad 알고리즘

AdaGrad 알고리즘은 미니 배치 확률적 기울기 gt gt를 사용합니다.g t 요소별 제곱 누산기 변수st sts t , 시간 0에서 AdaGrad는s 0 s0s0 의 각 요소는 0 으로 초기화됩니다. tt시간에t , 먼저 미니배치 확률적 기울기gt gtg t 는 요소별로 제곱되고 변수 st에 추가됩니다:
st ← st − 1 + gt ⊙ gtst \leftarrow s t-1+gt \odot gts ts t-1+지티 _g t
여기서 ⊙는 요소별 곱셈입니다. 다음으로 요소별 연산을 통해 목적 함수의 독립 변수에서 각 요소의 학습률을 재조정합니다:
wt ← wt − 1 − α st + ϵ ⊙ gt w_{t} \leftarrow w_{t}-1-\ frac {\alpha}{\sqrt{s t+\epsilon}} \odot g_{t}-1-s t+ϵ .g
미니 배치 확률적 기울기의 요소별 제곱 누산기 변수 st는 학습률의 분모 항에 나타납니다. 1. 독립변수의 특정 매개변수에 대한 목적함수의 편도함수가 항상 크면 해당 매개
변수의 학습률이 더 빨리 떨어집니다.
독립 변수의 특정 매개변수가 항상 더 작으면 이 매개변수의 학습률이 천천히 감소합니다.
그러나 st st 이후st t는 요소별 제곱 그래디언트를 누적하고 있으며 독립 변수의 각 요소에 대한 학습률은 반복 중에 감소(또는 변경되지 않음)되었습니다. 따라서 초기 반복에서 학습률이 급격히 떨어지고 현재 솔루션이 여전히 좋지 않은 경우 학습률이 너무 작아서 AdaGrad 알고리즘이 이후 반복에서 유용한 솔루션을 찾기 어려울 수 있습니다.

RMSprop 알고리즘

초기 반복에서 학습률이 급격히 떨어지고 현재 솔루션이 여전히 좋지 않은 경우 학습률이 너무 작아서 AdaGrad 알고리즘이 이후 반복에서 유용한 솔루션을 찾기 어려울 수 있습니다. 이 문제를 해결하기 위해 RMSProp 알고리즘은 AdaGrad 알고리즘을 약간 수정했습니다.
시간 단계 t까지 요소 제곱에 의한 모든 작은 배치 확률적 기울기 gt의 합인 AdaGrad 알고리즘의 상태 변수 st와 달리 RMSProp(Root Mean Square Prop) 알고리즘은 이러한 기울기를 기하급수적으로 만들기 위해 요소 제곱을 사용합니다. 가중 이동 평균 sdw = β sdw + (
1 − β ) ( dw ) 2 sdb = β sdb + ( 1 − β ) ( db ) 2 w : = w − α sdw + ϵ dwb : = b − α sdb + ϵ db \begin{aligned} &s dw=\beta s_{dw}+(1-\beta)(dw)^{2} \\ &s db=\beta s_{db}+(1-\beta)(db)^ {2} \\ &w:=w- \frac{\alpha}{\sqrt{sd w+\epsilon}} dw \\ &b:=b-\frac{\alpha}{\sqrt{s_{db}+\ 엡실론}} db \end{aligned}.sdw _ _=βs _dw _+( 1-β ) ( dw ) _2에스 디비 _=βs _디비 _+( 1-) ( 디비 ) _2:=-sdw _ _+ϵ .dw _:=-에스디비 _+ϵ .디비 _
여기서 ϵ \epsilonϵ 는 수치적 안정성을 유지하기 위해 상수와 같다. 최종 독립 변수의 각 요소에 대한 학습률은 더 이상 반복 과정에서 지속적으로 감소하지 않습니다. RMSProp은 경로의 흔들림을 최소로 줄이고 더 큰 학습률 α를 허용하여 알고리즘 학습 속도를 높입니다.

아담 알고리즘

Adam 최적화 알고리즘(Adaptive Moment Estimation, Adaptive Moment Estimation)은 Momentum 및 RMSProp 알고리즘을 결합합니다. Adam 알고리즘은 또한 RMSProp 알고리즘을 기반으로 작은 배치 확률적 기울기에서 지수 가중 이동 평균을 수행합니다.

각각의 미니 배치가 dW, db, ttth 를 계산하는 데 사용된다고 가정합니다.t 구성:
방정식에 대한 방정식 결정:
vd W = β 1 vd W + (1 − β 1 ) d W vdb = β 1 vdb + (1 − β 1 ) dbvd W corr [l ] .ted = v 1 − ( β 1 ) tsd W = β 2 sd W + ( 1 − β 2 ) ( d W ) 2 sdb = β 2 sdb + ( 1 − β 2 ) ( db ) 2 sd W corr[l] ed = s 1 − 승 2 l ] \begin{정렬} &v_{d W}=\beta 1 v_{d W}+(1-\beta 1) d W \\ &v_{db}=\beta 1 v_{ db}+(1 -\beta1) db\\&v_{d W}^{corr}[l] ted=\frac{v}{1}-(\beta1)^{t}\\&s_{d W}=\beta 2 sd W+(1-\beta 2)(d W)^{2}\\&s_{db}=\beta 2 sd b+(1-\beta 2)(db)^{2}\ \ &\left.s_{ d W}^{corr}[l] ed=\frac{s}{1}-W^{2} l\right] \end{정렬}.V=β 1v _+( 1-β 1 ) dW _V디비 _=β 1v _디비 _+( 1-β 1 ) db _V옳다[ l ] 티드 _ _=1v-( b1 ) _에스=β2sdW _ _ _ _+( 1-b2 ) ( dW ) _ _2에스디비 _=β2sdb _ _ _ _+( 1-β 2 ) ( db ) _2에스옳다[ l ] d=1에스-2 리터]
어디서 _l 은 특정 레이어,ttt 는 이동 평균 값입니다.
Adam 알고리즘의 매개변수는 업데이트됩니다:
W : = W − α vd W corrected sd W corrected + ϵ b : = b − α vdb corrected sdb corrected + ϵ \begin{aligned} &W :=W- \alpha \frac{v_{d W}^{\text {정정된 }}}{\sqrt{s_{d W}^{\text {정정된 }}+\epsilon}} \\ &b:= b-\alpha \frac{v_{db}^{\text {정정된 }}}{\sqrt{s_{db}^{\text {정정된 }}+\epsilon}} \end{정렬}.:=-에스수정 +ϵ .V수정 .:=-에스데비 _수정 +ϵ .V데비 _수정 ..
Adam 알고리즘의 매개변수 업데이트:
학습률 α \alphaα : 더 적합한 값을 찾기 위해 일련의 값을 시도해야 합니다.
β1: 일반적으로 사용되는 기본값은 0.9입니다.
β2: Adam 알고리즘 작성자는 0.999를 권장합니다
.1e - 8 1e- 81 전자-8
참고: β1, β2, ϵ는 일반적으로 디버깅이 필요하지 않습니다.

모든 최적화 알고리즘의 효과 비교
여기에 이미지 설명 삽입
이미지 출처 Alec Radford의 논문

학습률 스케줄러

학습률 어닐링

고정 학습률 α가 설정된 경우

최소점 근처에서는 서로 다른 배치에 있는 특정 노이즈로 인해 정확하게 수렴되지 않지만 항상 최소점 주변의 큰 범위 내에서 변동합니다.
시간이 지남에 따라 학습률 α를 서서히 감소시키면 초기 α가 클 때 쇠퇴의 스텝 크기가 크고 더 빠른 속도로 기울기를 떨어뜨릴 수 있으며, 후기 단계에서 α의 값은 점차 감소한다. 즉, 단계 크기가 줄어들고, 길수록 알고리즘의 수렴에 도움이 되며, 최적해에 접근하기가 더 쉽다.
가장 일반적으로 사용되는 학습 속도 어닐링 방법:
1. 단계 수에 따른 감쇠
2. 지수 감쇠
α = 0.9 5 epoch ∗ α 0 \alpha=0.95^{\text {epoch}} * \alpha 0=0.9 5시대α 0
3,1/t 1/t1/ 붕괴 α = 1 1 + 붕괴*에포크 ∗ α 0 \alpha=\frac{1}{1+\text { 붕괴*에포크}} * \ alpha_0
=1+ 부패 * 시대10
그 중 Decay는 Decay Rate(하이퍼파라미터)이고, epoch_num은 모든 트레이닝 샘플을 통과한 횟수입니다.
대용량 데이터 모델의 경우 이러한 방법을 사용하여 학습률을 자동으로 감소시켜야 합니다. 일부 소규모 네트워크는 수동으로 직접 조정할 수 있습니다.

참조:

https://zhuanlan.zhihu.com/p/32626442

실습 딥 러닝

경사하강법 알고리즘 개요

Supongo que te gusta

Origin blog.csdn.net/Peyzhang/article/details/125623322
Recomendado
Clasificación