ディープラーニングのAdamオプティマイザーにバイアス補正用語を含めることが重要なのはなぜですか?


14

私はディープラーニングのAdamオプティマイザーについて読んでいて、Begnio、Goodfellow、Courtville の新しい本Deep Learningで次の文章に出会いました。

Adamは、原点での初期化を説明するために、1次モーメント(運動量項)と(非中心化)2次モーメントの両方の推定値に対するバイアス補正を含めます。

これらのバイアス補正項を含める主な理由は、mt=0およびvt=0の初期化のバイアスを何らかの形で除去するためだと思われます

  • 私はそれが何を意味するのか100%確信していませんが、おそらく1番目と2番目の瞬間がゼロから始まり、何らかの形でゼロから始まることはトレーニングに不公平な(または有用な)方法で値をゼロに近づけることを意味するようです?
  • 私はそれがもう少し正確に何を意味するのか、そしてそれがどのように学習にダメージを与えるのかを知りたいのですが。特に、オプティマイザーにバイアスをかけないことは、最適化に関してどのような利点がありますか?
  • これは、ディープラーニングモデルのトレーニングにどのように役立ちますか?
  • また、偏りがない場合はどういう意味ですか?偏りのない標準偏差の意味はよく知っていますが、この文脈でそれが何を意味するのかは明確ではありません。
  • バイアス補正は本当に大したことなのか、それともAdamオプティマイザーの論文で誇張されているのか?

私が元の紙を理解しようと一生懸命努力したことは知っているが、元の紙を読んだり再読したりすることはほとんどない。私はこれらの質問のいくつかがそこで答えられるかもしれないと思いますが、答えを解析できないようです。


2
リンク:arxiv.org/pdf/1412.6980v8.pdf 第1および第2モーメント勾配推定値は移動平均を介して更新され、両方のestimat4esがゼロで開始されるため、真の値がゼロでない初期値は結果にバイアスをかけますゼロの初期推定値は徐々に消滅するためです。私が理解していないのは、初期点の勾配がこれらのものの初期値に使用されず、最初のパラメーターが更新される理由です。その後、元のゼロ値による汚染はなく、元に戻す必要があるため、バイアス補正の必要はありません。
マークL.ストーン

1
したがって、最初の反復に特別なコードを使用するのではなく、著者は、バイアスとなるものを導入し、それを元に戻すことで数学的に同等のことを行うことにしたようです。これにより、すべての反復で不要な高速計算が追加されます。これを行うと、彼らはすべての反復で同じに見えるコードの純度を維持しました。代わりに、最初の勾配評価から始めただけで、勾配モーメント更新式は2回目の反復でのみ開始されます。
マークL.ストーン

@ MarkL.Stone著者は、バイアス補正を非常に強調しているので、自分の論文では斬新で重要なものであるように思えました。それで、彼らは単に「バイアスを修正」せず、同じアルゴリズムを持っていたでしょうか?それが本当なら、なぜadamがそんなに重要なオプティマイザーであるのか、何が大したことなのかがわかりません。私はいつもそれがバイアス補正だと思っていました。
チャーリーパーカー

4
彼らはバイアスを導入し、それを修正しますが、私には明らかな理由はありません。それは2を掛けて(結果は偏っています)、2で割って「修正」するようなものです。バイアスの導入と削除のすべては、不必要なサイドショーのようです。たぶん、論文はそれをせずに十分に長くなかったので、彼らはこのスピルを追加してそれを長くしました:)アダムにはメリットがあるかもしれませんが、彼らは私が提案した方法と同じでした。著者がここに来て、それを説明してほしいです。たぶん、微妙な点を見落としているか、何かを誤解しているのかもしれません。
マークL.ストーン

回答:


14


論文によると、バイアスを修正しないという問題

勾配が疎の場合、2次モーメントの信頼できる推定値を得るには、β2の小さい値を選択して、多くの勾配で平均化する必要があります。ただし、β2が小さい場合は、初期化バイアス補正がないと、初期ステップがはるかに大きくなります。

ここに画像の説明を入力してください

β2β1β2=0.999β1=0.91β2=0.0011β1=0.1

m1=0.1gtv1=0.001gt2m1/(v1+ϵ)

m1^=g1v1^=g12mt^/(vt^+ϵ)β1β2


m0mt=βmt1+(1β)gtm0

m1=βm0+(1β)gtβm0m1(1β)m1^=(m1βm0)/(1β)m0=0mt^=mt/(1βt)


マーク・L・ストーンがコメントしたように

2を掛けて(結果は偏っています)、2で割って「修正」するようなものです。

どういうわけか、これは正確に同等ではありません

初期値の勾配がこれらの初期値に使用され、最初のパラメーターが更新されます

(もちろん、更新ルールを変更することで同じ形式に変えることができます(回答の更新を参照)。この行は主にバイアスを導入する必要がないことを示すことを目的としていますが、おそらく違いに注目する価値があります)

たとえば、時刻2の修正された最初の瞬間

m2^=β(1β)g1+(1β)g21β2=βg1+g2β+1

g1

m2=βg1+(1β)g2
g1

バイアス修正は本当に大したこと
ですトレーニングの最初の数ステップにしか実際には影響しないため、多くの一般的なフレームワーク(kerascaffeなど)では、偏った推定のみが実装されます。

ϵ


m^t

m^t=βt1g1+βt2g2+...+gtβt1+βt2+...+1

m1g1

mtβmt+gt
m^t(1β)mt1βt

したがって、バイアス項を導入して修正することなく、おそらくそれを行うことができます。この論文では、他のアルゴリズム(RmsPropなど)と比較しやすいように、バイアス補正形式にしたと思います。


1
質問に対する2番目のコメントに同意しますか?私にとって、それが一番下の行です。2での乗算と除算に関することは、「理解しやすい」アナロジーであると考えられていたのであり、当面の問題で使用される数学ではありません。私が見ていない他の論文があり、同じメカニズムによるバイアスを導入した場合、ADAMの場合は完全に回避可能ですが、修正しなかった場合、それは完全にSTUPIDです(何らかのバイアスがない限り)アルゴリズムのパフォーマンスを助けました)。
マークL.ストーン

@ MarkL.Stoneはい!実際、私はそれを支持しました、私の英語についてすみません。そして、バイアスを修正しなかったアルゴリズムはrmspropであると思いますが、adam rmspropとは異なり、バイアスでうまく機能します。
dontloo

@dontlooは、バイアス補正が不要である理由に関するMark L. Stoneのコメントに対応していますか?(私は非常に重要だと思います。おそらく、元の論文が述べていることを言い換えること以上のものです)。
チャーリーパーカー

@CharlieParkerは、バイアス補正が不要な理由、または著者がそれを不要に見える理由を意味していますか?
dontloo

@dontloo著者がそれを不必要にするとは思わない。私は彼らが実際にそれを必要とすると思った(彼らの特定の条件を与えられた)。しかし、Markの提案があれば、それは必要ないと考えました。私は今、コメントセクションでの私の質問は、彼らが本当に補正用語を必要としているかどうかだと思います。
チャーリーパーカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.