ドロップアウトとは? ニューラルネットワークのオーバーフィッティングを減らす

Last Updated on 17 December 2019

ニューラルネットワークをトレーニングする場合、目標は本当によく動作するモデルを生成することです。

これは完全に理にかなっており、動作しないモデルを使う意味はありません。

ただし、完全によく動作するモデルを見つけようとすると、比較的狭いバランスを維持しなければならないことがあります。

アンダーフィットとオーバーフィットのバランスです。

アンダーフィット (予測性能が可能な限り低いこと) を避けるために、もうひとつの問題、オーバーフィット、つまり学習データに対して敏感すぎることが起こるまで、学習を続けることが可能です。 どちらもモデルのパフォーマンスを低下させます。

時には、モデルがアンダーフィットでもオーバーフィットでもない範囲は、本当に小さいことがあります。 幸いなことに、正則化として知られているもの、つまり学習中のモデルの動作を正則化し、オーバーフィットをしばらくの間遅らせる技術を適用することで、この範囲を拡張できます。 このブログの記事では、いくつかのことを見ていくことで、それをカバーします。 まず、アンダーフィットとオーバーフィッティングの違いをより詳細に調べ、この 2 つについてより深く理解できるようにします。 次に、学術的な研究をもとにDropoutを紹介し、その仕組みについてお伝えします。 第三に、この手法で行われた様々な実験を説明することで、本当に効果があるのかどうかを見ていきます。 最後に、従来のドロップアウトとガウシアン・ドロップアウトを比較し、それがモデルのトレーニングにどのような変化をもたらすかを説明します。 行きましょう。 😎

あなたのモデルの性能はどうですか。 アンダーフィッティングとオーバーフィッティング

まず、アンダーフィッティングとオーバーフィッティングとは何かについて見てみましょう。 これは、最初の数エポックではエラー率、つまり損失値が非常に高くなることを意味します。 この図を見てください。最初の数エポックでは、損失が非常に急速に減少します。

学習損失と検証の両方が減少すると、モデルはアンダーフィットと言われます:それはまだ、より良い予測、すなわちその予測力を得るために訓練することができます。 モデルを最適化するには、検証データで検証予測を生成し、最適化のための損失値と勾配を生成し、それを実行することになります。 残念ながら、これはデータのイデオシンクラシーがモデルの重みに漏れてしまうことを意味します。 つまり、データは完全な母集団ではなくサンプルであるため、それが表す完全な母集団とは常にわずかに異なるのです。 このデータで何百回もモデルを最適化すると、常にこの真の母集団に対してオフセットが発生します。

学習を続けると、モデルはますますその非対称性に適応し、見たことのないデータ、つまり母集団からの他のサンプルには適さなくなります。 このとき、モデルはオーバーフィットと言われます。学習データと検証データにあまりにもよく適応しているのです。 👩💻

MachineCurveのブログでは、開発者のための機械学習について教えています。 MachineCurveの無料Machine Learningアップデートに今すぐサインアップしてください。 新しいことを学び、すでに知っている概念をよりよく理解することができます。
少なくとも毎週金曜日にメールを送信します。 ようこそ!

サインアップすることで、あなたが受け取るあらゆる情報に、電子メールによるサービスや特別なオファーが含まれることに同意するものとします。

オーバーフィッティングは、検証損失を検査することにより、上記のようなプロットで検出できます:学習損失が一定または減少している間、それが再び上昇した場合、モデルがオーバーフィッティングしていることがわかります。 見てわかるように、上のプロットの ELU powered ネットワークは非常にわずかにオーバーフィットし始めました。

アンダーフィットとオーバーフィットの両方は、モデルが理論的に実行できるよりも悪いパフォーマンスを行うので、避ける必要があります。 幸いなことに、正則化と呼ばれるある種の技術を使えば、オーバーフィッティングの影響を軽減することができます。 ドロップアウトはその1つで、このブログで取り上げます。 まず、ドロップアウトとは何か、何をするのか、どのように機能するのかを分析することから始めましょう。

Dropout とは何か、どのように機能するのか

The paper “Dropout: A Simple Way to Prevent Neural Networks from Overfitting」において、Srivastavaら(2014)は、確率的正則化手法であり、(理論的には)多くの異なるニューラルネットワークのアーキテクチャを組み合わせることによってオーバーフィットを減らすはずのDropout手法を説明しています。

Dropoutでは、訓練プロセスは基本的にニューラルネットワークのニューロンをドロップアウトします。 これは次のように視覚化できます。

接続またはシナプスも削除され、したがって、これらのニューロンを通じてデータが流れることはもうないことに注意してください。 このプロセスはエポック毎(あるいはミニバッチ毎でも! – Srivastava et al.2014)に繰り返され、したがって薄くなったネットワークのサンプリングは非常に頻繁に起こります。 これは、「ニューロンの存在が信頼できなくなる」 (Srivastava et al., 2014) ため、汎化エラー率 (つまり、過剰適合) を大幅に低下させるはずです。

学習中のニューロンおよびシナプスのこの除去は、調整可能であるパラメーター \(penta) でランダムに行われます (または経験的テストから、隠れ層では 0.5 に、入力層では 1.0 に近い設定が最良です)。 これは、著者らによると、「間引かれた」ネットワークがグローバルアーキテクチャからサンプリングされ、トレーニングに使用されることを効果的に意味する。

テスト時に、「指数関数的に多くの間引かれたモデルから予測値を明示的に平均することは実行可能ではない」(Srivastava et al, 2014)。 それは事実です。数十万ものエポック/ミニバッチを平均化する必要がある場合、特にネットワークが本当に大きくなった場合、それは計算の負担となります。 1 つのニューラルネットワークを使用することで、学習中にユニットが保持された \(p) に従って重み出力がスケールダウンされます。

Bernoulli variables

それでは、Dropoutがどのように数学的に動作するのかを見ていきましょう。 非常に単純化すると、これはニューロンがその入力を受け取る方法です。たとえば、3つのニューロン密な層の3つの上流ニューロンが、次の層に出力を送信し、そこで入力として受け取ります。 なお、ここでは簡単のためにバイアス値は省略する。

Normal neuron (assume to be bias)

ここからDropout neuronに行くのは非常に簡単で、次のようになる。

Dropout neuron (assumed to be bias)

数学的にはいわゆるベルヌーイ確率変数となる。

確率論および統計学において、ベルヌーイ分布とは、スイスの数学者ヤコブ・ベルヌーイにちなんで名付けられた、値1を確率的にとる確率変数の離散確率分布のことである。

Wikipedia on the Bernoulli distribution

Dropoutを作成するために、Srivastavaら(2014)は、ネットワークのニューロンにベルヌーイ変数を(神経出力と掛け合わせて)、「それぞれが1であることの確率(penta)」を付けました。

Never miss new Machine Learning articles ✅

Blogs at MachineCurve teach Machine Learning for Developers. MachineCurveの無料Machine Learningアップデートに今すぐサインアップしてください。 新しいことを学び、すでに知っている概念をよりよく理解することができます。
少なくとも毎週金曜日にメールを送信します。 ようこそ!

サインアップすることで、あなたが受け取るあらゆる情報に、電子メールによるサービスや特別なオファーが含まれることに同意するものとします。

ネットワークの内部では、ベルヌーイ変数とその値である 1 または 0 が、このエポックまたはミニバッチフィードフォワード動作中にニューロンが「脱落」するかどうかを決定します。 これは事実上、Srivastavaら(2014)が話す「薄くなったネットワーク」につながります。

Why could Dropout reduce overfitting?

さて、なぜ通常のニューラルネットワークに取り付けられたベルヌーイ変数がネットワークを薄くし、オーバーフィットを減らすのか、疑問に思うかもしれませんね?

この質問への答えは、ニューラルネットワークがどのように学習されるかを見てみる必要があります。

通常、バックプロパゲーションと勾配降下または同様の最適化ツールがこの目的のために使用されます。 損失値が与えられると、いわゆる「勾配」が計算され、オプティマイザーはそれをネットワークの重みに加工します。 これらの勾配を使用して (エラー率に関して) 重みを変更すると、ネットワークは、学習プロセスの次の反復中にわずかに良好なパフォーマンスを発揮する可能性が高い。 これは、特定のニューロンが、その重みの変化を通じて、他のニューロンの誤りを修正する可能性があることを意味する。 Srivastavaら(2014)は、これらは複雑な共適応につながり、未知のデータに一般化できない可能性があり、オーバーフィッティングにつながると主張している。

Dropout は、前に書いたように、他の隠れた存在を信頼できないものにすることによって、これらの共適応を防止する。 Neurons simply cannot rely on other units to correct their mistakes, which is reducing the co-adaptations that not generalize to unseen data, and thus presumably reduces overfitting as well.

Training neural nets with Dropout

Training neural networks that has attached Dropout is pretty much equal to train neural networks without Dropout. Stochastic Gradient Descent や同様の最適化ツールを使用できます。 Srivastavaら(2014)が報告しているように、唯一の違いは、ミニバッチアプローチを使用する場合に見られる:エポックごとではなく、間引かれたネットワークはミニバッチごとにサンプリングされる

さらに、古典的なSGDを改善する方法 – momentumのよう- も使用でき、通常のニューラルネットワークと同様の改善を示す(Srivastava et al,

また、著者らが学習中に有用であると見出したのは、最大ノルム正則化の適用であり、これは、入力重みのノルムをある最大値 \(c) で拘束することを意味します。) この値は、エンジニアが前もって設定し、検証セットを用いて決定する必要がある(Srivastava et al.)。 2014)。

Dropout と max-norm 正則化を組み合わせると、Dropout を単独で使用する場合と比較してパフォーマンスが向上するが、著者らは Dropout と max-norm 正則化に他の 2 つのものを組み合わせるとさらによい結果を報告した:

  • Large, decaying learning rates.
  • 高い運動量。

Srivastavaら(2014)によると、これはおそらく以下の議論によって正当化できる:

  1. 重みベクトルの拘束によって、重みを爆発させずに大きな学習率を使うことが可能になる。
  2. ドロップアウトのノイズと大きな学習率により、最適化装置は「さもなければ到達するのが困難であった重み空間の異なる領域を探索する」ことができる。
  3. 学習率を下げると、探索プロセスのジャンプ性が遅くなり、最終的に「最小値に落ち着く」。
  4. 高い運動量はネットワークをローカルミニマムに克服し、グローバル最小値が見つかる可能性を高める。 実験結果

    機械学習におけるどのような改善でも、理論的な改善はうれしいものです – しかし、それが本当に機能するかどうかをテストすることも重要なのです。 Srivastavaら(2014)は、Dropoutが機能するかどうかを調べるために複数のテストを実施しました。 まず、彼らはさまざまな標準的なデータセット(MNISTデータセットなど)を使用して、Dropoutが広範囲の分類問題にわたってモデル性能を向上させるかどうかをテストしました。

    第二に、彼らはさまざまな他の正則化因子とどのように動作するかを確認し(Dropoutと一緒に最大正規化が最もうまくいくという洞察を得ました – しかし後でこれらの結果を見てみましょう)、第三にSrivastava他(2014)はどのドロップアウト率(すなわち, which parameter \(penta)) work best and how data size affects Dropout performance.を調査しました。 見てみましょう!

    Samples from the MNIST dataset

    Dropout vs no dropout on standard datasets

    著者らはこれらの標準データセットでDropout vs No Dropoutをテストしました (Srivastava et al.参照)。

    • The MNIST dataset, which contains thousands of handwritten digits;
    • The TIMIT speech benchmark dataset for clean speech recognition.
    • The CIFAR-10 and CIFAR-100 datasets, containing tiny natural images in 10 and 100 classes.
    • 手書き文字が含まれるデータセットでDropout vs No Dropoutをテストした。
    • The Street View House Numbers (SVHN) dataset, with the images of house numbers collected from Google Street View.
    • The ImageNet dataset, which contains many natural images.
    • The Reuters RCV1 newswire articles dataset.これは、Googleのストリートビューから集めた家屋番号のデータセットで、自然画像を多く含む。 これは画像データセットではなくテキストデータセットです。
    Samples from the CIFAR10 dataset

    すべてのデータセットにおいて、Dropoutはモデルの一般化パワーを向上させたそうです。 MNISTでは、劇的に異なるテスト誤差が報告され、テストされたすべての異なるアーキテクチャで大幅な改善が見られました。

    Join the hundreds of other learners! 😎

    MachineCurveのブログでは、開発者のための機械学習について教えています。 MachineCurveの無料Machine Learningアップデートに今すぐサインアップしてください。
    少なくとも毎週金曜日にメールを送信しています。 ようこそ!

    サインアップすることで、あなたが受け取るあらゆる情報に、電子メールによるサービスや特別なオファーが含まれることに同意するものとします。

    Dropout は、CIFAR-100、CIFAR-100、および ImageNet データセットで訓練した ConvNets でも通常のニューラルネットワークを上回った。

    SVHN データセットについては、別の興味深い観察を報告できる:畳み込み層で Dropout を適用すると、パフォーマンスも向上する。 著者らによると、以前はこれらの層はパラメータが多くないため、オーバーフィッティングの影響を受けないとされていたので、これは興味深いことです(Srivastava et al, 2014)。 Conv層にDropoutを追加することで、それに続くDense層にノイズの多い入力を提供し、さらにオーバーフィッティングを防ぐことができると主張する。

    最後に、DropoutはTIMIT speech benchmark datasetsとReuters RCV1 datasetで機能するが、ここでは、改善はvisionと speech datasetsに比べてはるかに小さいものであった。

    Dropout vs no dropout with other regularizers

    Dropout がさまざまな機械学習問題でうまくスケールすることがわかったので、著者らはさらに調査しました。

    • L2 weight decay;
    • Lasso;
    • KL sparsity;
    • Max-norm regularization.

    Srivastava ら(2014)は、MAX Norm regularization と組み合わせると Dropout はさらに低い一般化エラーを与えることを見出した。 実際、報告された中で最も低い誤差をもたらし、次いで(少し離れて)Dropout + L2正則化、そして最後にその他が続く。

    したがって、Dropoutを適用する場合、同時に最大ノルム正則化を行うことも良い考えかもしれません。 About Dropout rate and Dataset size

    Another question they tried to answer: Dropout rate (i.e., the \(p) parameter) and/or dataset size affects the performance of Dropout and the neural networks it is attached?

    The question must be answered yes.

    What is the best value for \(p)?

    First, parameters the \(penta).Therapeutic effect for Dropout work best? ここまでで、このパラメータは調整可能であり、実際には機械学習エンジニアが前もって設定する必要があることを思い出すことができます。 チューニング可能であるということは、固定学習率が良くない理由と同じエラーにつながる。つまり、どの \(ppha) がデータに最も合うか分からないのだ。

    They did so as well – in order to see interesting patterns could be found.

    and they did find such a pattern: across multiple scenarios, a value of \(p \approx 0.5) as resulted in the best performance when applying Dropout (Srivastava et al.,), 2014). これは、入力層を除く全ての層で言えることであり、その場合、୧⃛(๑⃙⃘◡̈๑⃙⃘)୨⃛は、1.0%である必要があります。 後者は、入力層が入力データを取り、データがランダムにドロップされるとパターンを見つけるのが難しいためと推測される。

    How does Dropout perform with respect to dataset size?

    According to the authors are “good regularizer makes it possible to get a good generalization error from model with a large number of parameters trained on small data sets. “著者は、”良い正則化は、小規模なデータセットで学習したモデルから良い汎化誤差を得ることができる。 つまり、小さなデータで訓練した場合でも、これまで見たことのないデータで本当にうまく機能します。

    Dropoutがさまざまなデータセットサイズにわたってうまく正則化するかどうかを調べるために、Srivastavaら(2014)はMNISTデータセットでさまざまなサイズのテストを実行しました。 サイズは以下の通りであった。 「MNISTトレーニングセットからランダムに選ばれた100、500、1K、5K、10K、50K」(Srivastava et al. 🧠

    MachineCurveのブログでは、開発者のための機械学習について教えています。 MachineCurveの無料Machine Learningアップデートに今すぐサインアップしてください。
    少なくとも毎週金曜日にメールを送信しています。 ようこそ!

    サインアップすることで、あなたが受け取るあらゆる情報に、電子メールによるサービスや特別なオファーが含まれることに同意するものとします。

    Dropout が必要なときと、もう役に立たないときの間にはトレードオフがあることを著者らは発見しました。 まず、データセットが極端に小さい場合をカバーします。その場合、単にデータセット サイズが小さすぎるため、Dropout でもパフォーマンスを向上させることはできません。 データセットが十分に大きい場合も同様です。 したがって、Dropout が必要なときと、Dropout を使用しない(またはデータセット サイズを大きくする)ことが賢明なときのスイートスポットが存在する。 Srivastavaら(2014)によると、このサイズを決定するヒューリスティックはなく、むしろ検証セットで決定する必要がある。

    Gaussian Dropout。 ベルヌーイ変数の代わりにガウシアン変数

    Dropoutが、確率୧⃛(๑⃙⃘◡̈๑⃙⃘)୨⃛で1を取り、残りで0を取るベルヌーイ変数で働くことを上記から思い出す(

    このアイデアは、他の分布からのランダム変数と活性化を乗じることに一般化できる(Srivastava et al.、2014)。 彼らの仕事では、Srivastavaらは、ガウス分布、したがってガウス変数が同じように、そしておそらくさらによく働くことを発見した。

    ガウス変数の適用は、同様の方法で行うことができる:トレーニング時にネットワークを間引き、テストおよび生産時に重み付けされた活性化を使用する(通常のDropoutと同様に)。 しかし、著者はGaussian Dropoutを異なる方法で、つまり、乗算的に使用することを選択しました。 間引きと重み付けの代わりに、学習時に重み付けを行い、ドロップされなかった活性値に、(通常のベルヌーイドロップアウトの) \(1penta) の代わりに \(1/penta) を乗算するのです。 テスト時は変更されません。 これは前のシナリオと同じです。

    Gaussian Dropout must be configured by some \(sigma), which was set to \(sqrt{(1-p)/p}), where \(p) is the configuration of the Bernoulli variant (i.e…….), このブログ記事では、オーバーフィッティングについて、そしてDropoutを使用してオーバーフィッティングを回避する方法について見てきました。 ドロップアウトとは何か、どのように機能するか、そして、ドロップアウトが機能することを調べることで、ディープラーニング モデルに適用するための興味深いテクニックであることがわかりました。 可能な限り、お答えします😊

    本日はMachineCurveを読んでいただきありがとうございました!ハッピーエンジニアリング 😎

    Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014, June 15).を参照。 ドロップアウト ニューラルネットワークのオーバーフィッティングを防ぐ簡単な方法. http://jmlr.org/papers/v15/srivastava14a.html

    Wikipedia より抜粋。 (2003、3月20日)である。 ベルヌーイ分布。 Retrieved from https://en.wikipedia.org/wiki/Bernoulli_distribution

    💡 ML をマスターしよう – これらの投稿もチェックしてみてください:

コメントを残す

メールアドレスが公開されることはありません。