ドロップアウトがオーバーフィット防止の手段を学習の深さで、インタビューの中でも、多くの場合、その原則を知ってもらうことが必要である、尋ねました。
操作の1つのドロップアウトモード
ニューラルネットワークをトレーニング中、ニューラルネットワークの1回の繰り返しのために、いくつかのランダムに選択され、一時的に隠されたニューロン(破棄)にしてから、このトレーニングと最適化。次の反復では、研修の最後までその上でいくつかのランダムなニューロンを隠すために続け、と。それがランダムに廃棄されているので、そのため各異なるネットワークにおけるミニバッチ学習の。
トレーニングでは、各神経細胞は、確率$ pが$(ドロップアウト廃棄率$ 1-Pの$)で保持され、予測位相(ベータ)において、各神経細胞は、$ $ Wを乗算する重みパラメータが存在します$ pが$に、出力は次のようになります。$ PW $。次のように図です。
予測ステージは、理由の$ pが$を取る必要があります。
予測ステージで層のニューラル; $ドロップアウト$前ニューラル1つの隠れ層素子の出力は、$ X $は、$ドロップアウト後のトレーニング期待が$ E = PX +(1-P)\ドット0 $を$で素子は、出力期待値の同じレベルを維持し、同じ結果を得るためには、ベルヌーイ分布(分布0-1)確率値1である$ X-> PXの$。$ pが$を調整する必要がある、常にアクティブであります。
2ドロップアウトを達成
前述のように、ランダムトレーニングニューロンの隠れた部分、pは予測を掛けなければなりません。コードは以下の通りであります:
1 インポートNP AS numpyの 2 。3 P = 0.5 #ニューロンの活性化確率 4。 5。 DEFのtrain_step(X-) 。6 "" " X-データを含む""" 7。 8。 #三層バックプロパゲーションニューラルネットワークの例として 9 のH1 = NP .maximum(0、np.dot(のW1、X-)+ B1) 10 のUI = np.random.rand(H1.shape *)<P #まずドロップアウトマスク 11 のH1 ULは* = #ドロップ! 12は np.maximum =のH2 (0、np.dot(W2の、HL)+ B2) 13は、 U2 = np.random.rand(H2.shape *)<P #第二マスクドロップアウト 14 H2 * = U2の#をドロップ! 15 アウト= np.dot(W3、H2)+ B3 16 17 18 DEF (X)を予測: 19 #は前方アンサンブル渡す 20 H1 = np.maximum(0、np.dot(W1、X)+ b1)を* P #注:アクティベーションをスケール 21 H2 = np.maximum(0、np.dot(W2、H1)+ b2)を* P #1 注:アクティベーションをスケール 22 アウト= np.dot(W3、H2)+ B3
3リバースドロップアウト
わずかに異なるアプローチが逆ドロップアウト(反転ドロップアウト)を使用することです。この方法は、それが変わらないように、トレーニング段階中にテスト・フェーズをスケーリング機能を活性化することを含みます。スケーリング係数は、$ 1 / P $の逆数の確率を維持することです。だから我々は思考を変え、データがトレーニング中に1 / Pスケーリング時間で、トレーニング中に、あなたは何もする必要はありません。
逆ドロップアウトは、一度だけ定義のみ訓練および試験のために同じモデルを使用するモデルパラメータ(ホールド/ドロップ確率)を変化させます。これとは対照的に、直接ドロップアウトは、テスト段階でネットワークを変更する必要があります。もしスケーリング係数pを乗じていない場合、ニューラルネットワークの出力は、(ニューロンがこのように飽和できる)ニューロンの連続的な所望の値に高い相対を生成するため:このようにドロップアウトの逆は、より一般的な実装です。コードは以下の通りであります:
1つの P = 0.5 #アクティブユニットを維持する確率。高い=少ないドロップアウト 2 3 DEF train_step(X): 4 #フォワード例えば通過3層ニューラルネットワーク 5 H1 = np.maximum(0、np.dot(W1、X)+ B1) 6 U1 =(np.random .rand(* H1.shape)<P)/ P #最初のドロップアウトマスク。お知らせ/ P! 7 H1 * = U1の#をドロップ! 8 H2 = np.maximum(0、np.dot(W2、H1)+ B2) 9 U2 =(np.random.rand(* H2.shape)<P)/ P #第二ドロップアウトマスク。お知らせ/ P! 10 H2 * = U2 #ドロップ! 11 アウト= np.dot(W3、H2)+ B3 12 13 #復路:計算勾配...(図示せず) 14の #は、パラメータの更新を行う...(図示せず) 15 16 DEF (X)を予測: 17 #往路アンサンブル 18 H1 = np.maximum(0、np.dot(W1、X)+ B1) #ないスケーリングに必要な 19 H2 = np.maximum(0、np.dot(W2、H1)+ B2) 20 アウト= np.dot(W3、H2)+ B3
なぜ3.ドロップアウトは、オーバーフィッティング防ぐことができますか?
(1)平均化効果
何もドロップアウトではありません標準モデルに戻るには、我々は通常、5つの異なる結果を得る5つの異なるニューラルネットワークを訓練するために、同じトレーニングデータを使用し、その後、私たちは「5つの結果を平均」または「大多数の勝利採用することができます最終的な結果を決定する投票戦略」。例えば、3つのネットワークの判定結果が数9である、本当の結果が9番、他の2つのネットワークが誤った結果を与えることであると思われます。この「一緒に平均化」戦略は、通常、問題を効率的にオーバーフィット防止することができます。異なるネットワークは、オーバーフィッティング異なっを持っている平均かもしれないので、いくつかの「逆」フィッティングが互いに相殺することが可能です。同様のネットワーク上の異なるトレーニングにおけるドロップアウトアウト異なる隠れニューロンは、無作為に半分隠れニューロンを削除し、全体的なドロップアウト・プロセスは平均異なるニューラルネットワークの数に相当する、ネットワーク構造が異なっているせます。異なるネットワークは、互いの一部が全体として達成することができる上にフィッティング減らすために互いにオフセットフィッティング「逆」、オーバーフィッティング異なっを有します。
(2)ニューロンの関係との間の共適応の複雑さを軽減
ように、元の単語は「標準ニューラルネットワークたの著者と、受信した各誘導体のパラメータは、それが機能の最終的な損失を低減するために変更する方法を示しており、ニューラルネットワークユニットの他の全ての状態を与えられた神経細胞は、Aに修正することができますこれは合併症と共同適応(CO-適応)につながることができます。他のニューラルネットワーク部が変更された間違った方法を実施し、これらの現象は、データがオーバーフィットにつながりません対応するために拡張されていなかったとして。私たちはそれぞれにあることを前提としています。ドロップアウト他の隠れ層ニューラルネットワーク部によって隠れ層ニューラルネットワーク部は、確実。したがって、中間層のニューロンは、そのエラーを訂正するために、他の特定のニューロンに頼ることはできない共適応の発生を防止しません。」
因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的特征。从这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。
(3)Dropout类似于性别在生物进化中的角色
物种为了生存往往会倾向于适应这种环境,环境突变则会导致物种难以做出及时反应,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。
4 参考
1 http://cs231n.github.io/neural-networks-2/#reg
2 http://jmlr.org/papers/volume15/srivastava14a.old/srivastava14a.pdf