解析-DRopout-

4823 ワード

作者:chen_hマイクロ信号&QQ:862251340マイクロ信号公衆番号:coderpai
このチュートリアルはPaolo Galeoneが書いたDropout分析チュートリアルを翻訳し、著者は翻訳を許可した.これは原文だ.
オーバーフィットは,従来,深さニューラルネットワーク(DNN)が直面する問題である:モデルは,汎用データを分類できる完全な決定境界を学習するのではなく,訓練データ上で分類を学習し,訓練サンプルに適応させるだけである.ここ数年,フィッティング問題を解決するための多くの案が提案されている.1つの方法はDropoutであり,この方法は非常に簡単であるが,実際の使用では良好な効果を有するため広く用いられている.
Dropout
Dropoutの背後にある考え方は,DNNを集積モデルとして訓練し,その後,単一DNNだけでなくすべての値の平均値をとることである.
DNNネットワークはDropout率をpに設定し、すなわち、1つのニューロンが保持される確率は1-pである.ニューロンが破棄されると、入力または関連するパラメータにかかわらず、その出力値は0に設定されます.
捨てられたニューロンは訓練段階においてBPアルゴリズムの前方および後方段階に寄与しなかった.そのため、訓練のたびに新しいネットワークを訓練しているようです.
この論文を見て、もっと詳しく知ることができます.
簡単に言えば、Dropoutは実際の仕事の中で良い効果を発揮することができます.それはニューラルネットワークが訓練の過程で共適応を生むことを防止することができるからです.
今、Dropoutについて直感的な概念を持っています.次に、それを深く分析しましょう.
Dropoutはどのように働いていますか?
前述したように、Dropoutは、確率pでニューロンを廃棄し、他のニューロンを確率q = 1 - pで保持する.
各ニューロンは同じ確率で廃棄され、保持される.つまり、
与えられる
  • h(x)=xW+bは線形変換方程式であり、入力xはdi次元のデータであり、出力データはdh次元である.
  • a(h)はアクティブ化関数である.

  • Dropoutをモデルのトレーニングフェーズにのみ適用します.つまり、モデルのアクティブ化関数を次のように変更できます.
    ここで、D = (X1, ..., Xdn)dh次元のベクトルであり、Xiはバーヌリー変数である.
    *注:Probability density functionは確率密度関数であり、連続型ランダム変数の場合、f(x)=e^(-x)のような関数と表記され、積分して∧f(x)dx=1となる.Probability mass functionは確率質量関数であり,離散型ランダム変数に対するものである.一般的な書き方は、P{x=xi}=1/15のような特定の値に対応する確率で書かれています.*
    バーヌリーのランダム変数には、次の確率質量分布があります.
    ここで、kは可能な出力結果である.
    明らかに,このランダム変数は単一ニューロン上のDropout過程を完璧にシミュレートした.実際、ニューロンは確率p = P(k=1)で廃棄され、p = P(k=0)で保持される.
    例えば、i番目のニューロンでは、Dropoutの応用は以下の通りである.
    そのうち、P(Xi = 0) = p.
    なぜなら、訓練段階において、1つのニューロンが保持される確率はqであるからである.しかし、テスト段階では、トレーニング段階の統合ネットワークモデルをシミュレートする必要があります.
    このため、著者らは、試験段階でニューロンの活性化値に因子qを乗じて再出力することを提案した.トレーニングフェーズでモデルを統合し、テストフェーズで単一のモデルの値を出力すればよい.次のようになります.
    Inverted Dropout
    Dropout法を少し改良して,テスト段階で何も変更することなく,アクティブ化関数の出力値を訓練段階でスケールするだけでよいようにした.この改良されたDropout法をInverted Dropoutと呼ぶ.
    スケール係数は、保持確率の逆数に変更されます.すなわち、次のようになります.
    最終的には、モデルを次のように変更できます.
    様々な深さ学習フレームワークの実装では,Dropoutの代わりにInverted Dropoutを用いた.この方法はモデルの完全性に役立つため,1つのパラメータ(保持/廃棄確率)を修正するだけで,モデル全体を修正する必要はない.
    1層のニューロンに対してDropout処理を行うh層にnニューロンがあると仮定すると、1サイクルにおいて、ニューラルネットワークはn回のバーヌリー実験の集積と見なすことができ、各ニューロンが保持される確率はpである.
    したがって、h層目に保持されているニューロンの数は以下の通りである.
    各ニューロンはバーヌリーランダム変数でモデリングされ、これらのランダム変数はすべて独立して同分布であるため、廃棄されたニューロンの総数も二項式と呼ばれるランダム量である.
    ここで、n個の試験において、k個を保持する確率質量分布は、
    この式もよく説明されています.以下のようにします.
    この分布を用いて,指定したニューロンを廃棄する確率を解析できるようになった.
    Dropoutを使用する場合、固定Dropout確率pを定義する必要があります.すなわち、ネットワークからどのくらいの割合のニューロンを捨てることを望んでいますか.
    例えば、私たちのニューロンの数がn = 1024p = 0.5であれば、512個のニューロンが廃棄されることを望んでいます.検証してみましょう.
    したがって、廃棄されたニューロン個数がnp = 512である確率は0.025である.
    Pythonコードは、nの値を固定し、pの値を変更するなど、結果を可視化するのに役立ちます.
    上の図で見たように、pの値がどのように変化しても、平均的に捨てられたニューロンの個数はnpである.つまり、
    さらに,値の分布はp = 0.5対称であることに注目できる.さらに、p0.5から遠ざかるにつれてnpの値が大きくなる.
    トレーニングフェーズでは、トレーニングフェーズでpパーセントのニューロンのみを保持することを望んでいるため、スケール係数1-pをネットワークに追加する必要があります.逆に、テストの段階では、すべてのニューロンを開く必要があります.
    Dropoutとその他の正規化
    Dropout法は、通常、L 2ノルムまたは他のパラメータ制約技術(例えば、Max Norm)とともに使用される.正規化はモデルパラメータの値を大きくしないのに役立ち,この方法のパラメータ値の変化過程は大きくない.
    簡単に言えば、例えばL 2正規化は損失関数の付加的な項であり、ここでλ∈[0,1]は正規化と呼ばれるスーパーパラメータであり,F(W;x)はモデルであり,Eは真値yと予測値y^の誤差関数である.
    この付加項目については、簡単に理解できます.これにより、勾配降下による逆伝搬が行われると、更新量を低減することができる.ηが学習率である場合、パラメータw∈Wの更新量は、
    逆にDropout法を単独で用いると,訓練段階でパラメータ値が過大になることを防止できない.さらに、以下に説明するように、Inverted Dropoutメソッドは、更新ステップをさらに大きくする.
    Inverted Dropoutとその他の正規化
    Dropoutメソッドはパラメータが大きすぎることを阻止しないし,パラメータ間も互いに牽制しない.したがって,L 2正規化を用いてこの状況を変えるか,あるいは他の正規化方法を用いる.
    明確なスケーリング係数を加えると、前の方程式は次のようになります.
    上記の式を観察すると、Inverted Dropout法を使用する場合、学習率はqの因子にスケーリングされ、qの値範囲は[0,1]であるため、ηqの比率は以下のように変化することが容易である.
    従って,これからqboosting因子と呼ぶのは,学習率が向上したためである.さらに,r(q)を有効学習率と呼ぶ.
    したがって,有効学習率は選択した学習率に比べてより良好な表現性を有する.このため,パラメータ値を制限する正規化法は学習率の選択過程を簡略化するのに役立つ.
    まとめ
  • Dropout法には、直接的およびInvertedの2つの形式がある.
  • 単一ニューロンの上に、Dropout法はバーヌリーランダム変数を使用することができる.
  • ニューロンの上にあり、Dropout法はバーヌーリーランダム変数を使用することができる.
  • 私たちがnp個のニューロンを正確に廃棄することは不可能ですが、n個のニューロンを持つネットワーク層の上で、平均的に廃棄されたニューロンはnp個です.
  • Inverted Dropout法は有効学習率を生成することができる.
  • Inverted Dropout法は、学習率の選択プロセスを簡略化するのに役立つように、他の正規化パラメータの技術とともに使用されるべきである.
  • Dropout法は深さニューラルネットワークのオーバーフィットを防止するのに役立つ.