AdaGradとAdaDeltaの数学を理解する


8

私はプロジェクト用にいくつかのモデルを構築していますが、AdagradおよびAdadeltaアルゴリズムの計算に頭を悩ますことはできません。

私はバニラ勾配降下法がどのように機能するかを理解しており、それを正常に機能させるためのコードを作成しました。

誰かがこれらの2つのことを私に説明したり、それらを理解するためのリソースを提供したりすると、私は感謝します。


回答:


6

リソースに関して:



ADADELTA:アダプティブラーニングレートメソッド からの中心的な引用と、いくつかの例と簡単な説明を次に示します。

ADAGRAD

ADAGRADの更新ルールは次のとおりです。 ここで、分母は以前のすべての勾配のノルムを次元ごとに計算し、ηはすべての次元で共有されるグローバルな学習率です。手動で調整されたグローバル学習率がありますが、各次元には独自の動的率があります。 l2

Δxt=ητ=1tgτ2gt(5)
l2

つまり、最初の3つのステップのグラデーションが、次に:Δ X 3 = - ηg1=(a1b1c1),g2=(a2b2c2),g3=(a3b3c3)

Δx3=ητ=13gτ2g3=η(a12+a22+a32b12+b22+b32c12+c22+c32)(a3b3c3)Δx3=(ηa12+a22+a32a3ηb12+b22+b32b3ηc12+c22+c32c3)
ここで、約束どおり、各次元に独自の動的学習率があることが簡単にわかります。

ADADELTAが対抗しようとするADAGRADの問題

このペーパーで提示されているアイデアは、メソッドの2つの主な欠点を改善するためにADAGRADから派生したものです。

2番目の欠点は自明です。

最初の欠点が問題で
ある場合の例を示しますの各成分の絶対値が、他のステップの勾配のそれぞれの成分の絶対値よりもはるかに大きい場合をます。 いずれかのために、それのすべてのコンポーネントと考えているの各成分の絶対値よりも大きい。しかし、のすべてのコンポーネントの絶対値は、のそれぞれのコンポーネントの絶対値よりもはるかに大きいため、は非常に小さくなります。g2
t>2τ=1tgτ2g2g2gtΔxt
さらに、アルゴリズムが進むにつれて、最小値に近づくため、勾配が小さくなり、は次第に小さくなります。 したがって、アルゴリズムが最小値に達する前に実質的に停止する可能性があります。Δxt

ADADELTA

計算されたすべての勾配を考慮する代わりに、ADADELTAは最後の勾配のみを考慮します。w

前の 2乗勾配を保存することは非効率的であるため、この手法はこの累積を2乗勾配の指数関数的に減衰する平均として実装します。時間この移動平均がと仮定すると、次のように計算されます: ここで、は減衰定数[...]です。パラメータの更新にはこの量の平方根が必要なので、これは事実上、 時間までの前の2乗勾配のになり。 wtE[g2]t

E[g2]t=ρE[g2]t1+(1ρ)gt2(8)
ρRMSt
RMS[g]t=E[g2]t+ϵ(9)
ここで、分母をよりよく調整するために定数が追加されますϵ

(は二乗平均平方根を意味します。)RMS

同様に、 そして最後に:

E[Δx2]t1=ρE[Δx2]t2+(1ρ)Δxt12
RMS[Δx]t1=E[Δx2]t1+ϵ

[...]近似計算指数関数的に減衰することによってサイズのウィンドウにわたって前のが ADADELTA方法を与える: ここで、分子にも同じ定数が追加されています。この定数は、である最初の反復を開始する目的と、以前の更新が小さくなっても進行が続けられるようにする目的の両方に役立ちます。[...]ΔxtRMSwΔx

Δxt=RMS[Δx]t1RMS[g]tgt(14)
ϵRMSΔx0=0

分子は加速項として機能し、時間枠にわたって以前の勾配を累積します[...]

つまり、ステップの勾配がおよび、次に: rgr=(arbrcr)Δxr=(irjrkr)

Δxt=RMS[Δx]t1RMS[g]tgt=E[Δx2]t1+ϵE[g2]t+ϵgt=ρE[Δx2]t2+(1ρ)Δxt12+ϵρE[g2]t1+(1ρ)gt2+ϵgt=ρ(ρE[Δx2]t3+(1ρ)Δxt22)+(1ρ)Δxt12+ϵρ(ρE[g2]t2+(1ρ)gt12)+(1ρ)gt2+ϵgt=ρ2E[Δx2]t3+p1(1ρ)Δxt22+p0(1ρ)Δxt12+ϵρ2E[g2]t2+p1(1ρ)gt12+p0(1ρ)gt2+ϵgt=ρt1E[Δx2]0+r=1t1ρt1r(1ρ)Δxr2+ϵρt1E[g2]1+r=2tρtr(1ρ)gr2+ϵgt

ρは減衰定数なので、(通常は)になるように選択します。 したがって、高指数を掛けると、非常に小さな数になります。 してみましょう、我々はによって正気値を乗算の積と考えるような最低の指数も無視できるが。 これで、無視できる項を削除して概算できます。 ρ(0,1)ρ0.9
ρ
wρw
Δxt

Δxtr=twt1ρt1r(1ρ)Δxr2+ϵr=t+1wtρtr(1ρ)gr2+ϵgt=r=twt1ρt1r(1ρ)(ir2jr2kr2)+ϵr=t+1wtρtr(1ρ)(ar2br2cr2)+ϵ(atbtct)Δxt(r=twt1ρt1r(1ρ)ir2+ϵr=t+1wtρtr(1ρ)ar2+ϵatr=twt1ρt1r(1ρ)jr2+ϵr=t+1wtρtr(1ρ)br2+ϵbtr=twt1ρt1r(1ρ)kr2+ϵr=t+1wtρtr(1ρ)cr2+ϵct)

1

quoraからより完全なガイドを見つけることができますが、主なアイデアは、AdaGradが機械学習での勾配学習率選択におけるこれらの問題を解決しようとすることです。

1学習率ηの手動選択。

2勾配ベクトルgtは、スカラー学習率ηによって均一にスケーリングされます。

3学習率ηは、学習プロセス全体を通じて一定です。

これは、現在の各勾配成分を、その特定の成分について過去に観測された勾配のL2ノルムで除算するだけで、問題2および3を解決します。

それ自体に次の問題があります。

1継続的に減衰する学習率η。

2学習率ηの手動選択。

AdaDeltaは、特定のウィンドウW内でのみ勾配を合計することにより、AdaGradの問題1を解決します。

懸念2の解決策は、勾配単位の不一致に関連するため、

実際の蓄積プロセスは、運動量からの概念を使用して実装されます。

最後の計算は運動量理論を理解する必要があり、記事ですぐに説明されました。

私の考えは、意図されたものの背後にある主な原因を説明することでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.