深層学習ニューラルネットワークのアンサンブル学習法

Tweet Share

最終更新日:2019年8月6日

複数のモデルからの予測を組み合わせてパフォーマンスを改善する方法

深層学習ニューラルネットワークは非線形手法です。

柔軟性を高め、利用できる学習データの量に比例して拡張することができます。 この柔軟性の欠点は、確率的な学習アルゴリズムで学習することです。つまり、学習データの仕様に敏感で、学習するたびに異なる重みのセットを見つける可能性があり、その結果、異なる予測が生成されます。

一般に、これは分散が大きいニューラルネットワークと呼ばれ、予測に使用する最終的なモデルを開発しようとすると、フラストレーションが溜まります。

ニューラルネットワーク モデルの分散を減らす成功したアプローチは、単一のモデルではなく複数のモデルを訓練し、これらのモデルからの予測を結合することです。 これはアンサンブル学習と呼ばれ、予測の分散を減らすだけでなく、どの単一モデルよりも優れた予測をもたらすことができます。

この投稿では、分散を減らして予測性能を向上させるための深層学習ニューラルネットワークのメソッドを発見します。

この投稿を読むと、次のことがわかります:

  • ニューラルネットワークモデルは非線形で分散が大きく、予測を行うための最終モデルを準備する際にフラストレーションを感じることがあります。
  • アンサンブル学習は複数のニューラルネットワークモデルからの予測を組み合わせて、予測の分散を減らし、一般化エラーを低減させることができます。
  • アンサンブル学習のテクニックは、学習データ、モデル、予測の組み合わせ方など、変化させる要素によってグループ化できます。

ステップバイステップのチュートリアルとすべての例の Python ソース コードファイルを含む私の新しい本「Better Deep Learning」でプロジェクトをスタートさせましょう。

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks
Photo by University of San Francisco’s Performing Arts, some rights reserved.

Overview

This tutorial is divided into four parts; they are:

  1. High Variance of Neural Network Models
  2. Reduce Variance Using an Ensemble of Models
  3. How to Ensemble Neural Network Models
  4. Summary of Ensemble Techniques

High Variance of Neural Network Models

Training deep neural networks can be very computationally expensive.

Very deep networks trained on millions of examples may take days, weeks, and sometimes months to train.

Google のベースライン モデルは、多数のコアで非同期確率勾配降下を使用して約 6 か月訓練した深い畳み込みニューラルネットワークでした。

– Distilling the Knowledge in a Neural Network, 2015.

多くの時間とリソースを投資した後、最終的なモデルが低い汎化誤差を持ち、トレーニング中に見られなかった例で優れたパフォーマンスを発揮する保証はありません。

… 多くの異なる候補ネットワークをトレーニングして、最適なものを選択し、残りは廃棄することです。 このようなアプローチには、2 つの欠点があります。 まず、残りのネットワークのトレーニングに関わるすべての労力が無駄になります。

-ページ 364-365, Neural Networks for Pattern Recognition, 1995.

ニューラルネットワークモデルは、非線形手法であります。 つまり、データ中の複雑な非線形の関係を学習することができるのです。 この柔軟性の欠点は、初期のランダムな重みの点でも、学習データセットの統計的ノイズの点でも、初期条件に敏感であることである。

学習アルゴリズムのこの確率的な性質は、ニューラルネットワークモデルが訓練されるたびに、入力から出力へのマッピング関数のわずかに (または劇的に) 異なるバージョンを学習し、その結果、訓練データとホールドアウト データセットで異なるパフォーマンスを持つ可能性があることを意味します。

Want Better Results with Deep Learning?

私の 7 日間の無料の電子メール クラッシュ コース (サンプル コード付き) に今すぐ参加しましょう。

クリックして登録すると、PDF 電子書籍版のコースも無料で入手できます。

無料のミニコースをダウンロードする

モデルのアンサンブルを使用して分散を減らす

ニューラルネットワークの高い分散に対するソリューションは、複数のモデルをトレーニングして、それらの予測を組み合わせることです。

アイデアは、複数の良いが異なるモデルから予測を結合することです。

モデルの平均化が機能する理由は、異なるモデルが通常テスト セットですべて同じエラーを発生させないことです。

-『Deep Learning』2016 年 256 ページ

複数のニューラルネットワークからの予測を結合すると、今度は単一の学習済みニューラルネットワークモデルの分散に対抗するバイアスが加わります。 その結果、トレーニング データの仕様、トレーニング スキームの選択、および単一のトレーニング実行のセレンディピティの影響を受けにくい予測が得られます。

予測の分散を減らすことに加えて、アンサンブルは、単一のベスト モデルよりも優れた予測をもたらすこともできます。

-ページ 365, Neural Networks for Pattern Recognition, 1995。

このアプローチは、同じ問題に対して準備した複数のモデルからの予測を最大限に利用しようとする方法を説明する「アンサンブル学習」という方法の一般クラスに属するものです。

一般に、アンサンブル学習では、同じデータセットで複数のネットワークを学習させ、学習済みの各モデルを使用して予測を行った後、何らかの方法で予測を組み合わせて最終的な結果または予測を行います。

実際、モデルのアンサンブルは、最も安定した最良の予測が行われるように、応用機械学習における標準的なアプローチになっています。

たとえば、Alex Krizhevsky らは、写真分類用の非常に深い畳み込みニューラルネットワーク (AlexNet) を導入した「Imagenet classification with deep convolutional neural networks」と題する有名な 2012 年の論文で、当時の最先端の結果を得るために、複数のよく機能する CNN モデルにわたってモデルの平均化を使用しています。

5 つの類似した CNN の予測を平均化すると、エラー率は 16.4% になります。

アンサンブルは、機械学習のコンテストで勝者が使用するアプローチでもあります。

あるタスクで最高の結果を得るためのもうひとつの強力なテクニックがモデル アンサンブルです。 機械学習コンテスト、特に Kaggle を見ると、優勝者は非常に大きなモデルのアンサンブルを使用しており、どんなに優れた単一モデルにも必然的に勝っています。

– 264 ページ、『Python による深層学習』、2017 年。

ニューラルネットワークモデルをアンサンブルする方法

おそらく最も古く、今でも最もよく使われているニューラルネットワークのアンサンブルアプローチは、「ネットワークの委員会」と呼ばれています。

同じ構成と異なる初期ランダム重みを持つネットワークのコレクションは、同じデータセットでトレーニングされます。

アンサンブルのモデル数は、モデルのトレーニングにかかる計算費用と、アンサンブルメンバーを増やすことによるパフォーマンスの収穫が少なくなることの両方から、小さいままであることが多いようです。

アンサンブル学習の分野はよく研究されており、この単純なテーマには多くのバリエーションがあります。

アンサンブル手法の 3 つの主要な要素のそれぞれを変化させると考えると便利です。

  • トレーニング データ: アンサンブルの各モデルのトレーニングに使用するデータの選択を変える。
  • アンサンブル モデル: アンサンブルで使用されるモデルの選択を変更する。

    トレーニング データの変更

    アンサンブルの各メンバーをトレーニングするために使用するデータを変更することができます。

    最も単純なアプローチは、選択したモデル構成の一般化誤差を推定するために k 倍クロスバリデーションを使用することです。 この手順では、k 個の異なるモデルが、訓練データの k 個の異なるサブセットで訓練されます。

    もう 1 つの一般的なアプローチは、トレーニング データセットを置換で再サンプリングし、再サンプリングされたデータセットを使用してネットワークをトレーニングすることです。

    このアプローチは、ブートストラップアグリゲーション、またはバギングと呼ばれ、高い分散と低いバイアスを持つ、刈り込まれていない決定木で使用するために設計されています。

    …分散を減らし、統計的学習法の予測精度を高める自然な方法は、母集団から多くの学習セットを取り、それぞれの学習セットを使用して個別の予測モデルを構築し、結果の予測値を平均化することです。 もちろん,一般的には複数の学習セットを利用することはできないので,これは現実的でない.

    -ページ 216-317, An Introduction to Statistical Learning with Applications in R, 2013。

    同等のアプローチとして、より速い学習とある程度のオーバーフィットを可能にするために、正規化なしで学習データセットのより小さいサブセットを使用することがあります。

    わずかに最適化されていないモデルへの欲求は、より一般的にアンサンブルメンバーの選択にも当てはまります。

    … 委員会のメンバーは、バイアスと分散の最適なトレードオフを持つように個別に選択すべきではありませんが、平均化によって余分の分散を取り除くことができるので、比較的小さいバイアスにすべきです。

    -ページ 366, Neural Networks for Pattern Recognition, 1995.

    他のアプローチでは、入力空間の超体積のサブセットや入力特徴のサブセットなど、各モデルに割り当てる入力空間のランダムなサブスペースを選択することも可能です。

    Ensemble Tutorials

    学習データを変化させる深層学習アンサンブルの例については、以下を参照してください。

    • How to Develop a Random-Split, Cross-Validation, and Bagging Ensemble for Deep Learning

    モデルの変化

    異なる初期条件で同じデータに対して同じ制約下モデルを訓練すると、問題の難しさと学習アルゴリズムの確率的性質が原因で、異なるモデル結果になることが分かっています。

    これは、ネットワークが解決しようとしている最適化問題が非常に困難で、入力を出力にマッピングするための「良い」「異なる」ソリューションが多数存在するからです。

    ほとんどのニューラルネットワーク アルゴリズムは、最適でないローカル ミニマムの圧倒的数の存在により、特に最適ではないパフォーマンスを達成します。 ローカル ミニマムに収束した一連のニューラルネットワークを取り、平均化を適用すると、改善された推定値を構築することができます。 この事実を理解する 1 つの方法は、一般に、異なるローカル ミニマムに陥ったネットワークは、特徴空間の異なる領域でパフォーマンスが低く、したがって、それらの誤差項は強く相関していないと考えることです。

    -ネットワークの不一致時。 Ensemble methods for hybrid neural networks, 1995.

    これは分散の減少につながるかもしれませんが、汎化誤差を劇的に改善しないかもしれません。

    別のアプローチとして、異なる容量 (たとえば層やノードの数) のネットワークや、異なる条件 (たとえば学習率や正則化) で学習したモデルを使用するなど、各アンサンブル モデルの構成を変えることが考えられます。

    結果として、マッピング関数のより異質なコレクションを学習したモデルのアンサンブルができ、その予測および予測エラーに低い相関性が得られるかもしれません。

    ランダムな初期化、ミニバッチのランダムな選択、ハイパーパラメーターの違い、またはニューラルネットワークの非決定的実装の異なる結果は、しばしばアンサンブルの異なるメンバーが部分的に独立してエラーを発生させるのに十分なものです。

    -ページ 257-258, Deep Learning, 2016.

    異なる構成のモデルのこのようなアンサンブルは、ネットワークの開発とそのハイパーパラメーターを調整する通常のプロセスを通じて達成することが可能です。 各モデルは、このプロセス中に保存され、より良いモデルのサブセットを選択してアンサンブルを構成することができます。

    若干劣った学習済みネットワークは、ほとんどの調整アルゴリズムの無料の副産物で、その性能が見つかった最高の性能よりかなり悪い場合でも、そのような余分なコピーを使用することは望ましいことです。

    – Neural Network Ensembles, 1990

    単一のモデルの訓練に数週間または数か月かかる場合、別の選択肢として、スナップショットまたはチェックポイント モデルという、訓練プロセス中に最適なモデルを定期的に保存し、保存したモデルの中からアンサンブルメンバーを選択することが可能です。

    スナップショット アンサンブルは、1 つのトレーニング プロセスから正確で多様なモデルのアンサンブルを作成します。 スナップショットアンサンブルの中心は、最終的な解に収束する前に、いくつかのローカルミニマムを訪れる最適化プロセスです。

    – スナップショット アンサンブル。

    スナップショット アンサンブルのバリエーションは、おそらくトレーニング中にトレーニングおよび検証データセットでのモデル パフォーマンスの学習曲線をレビューすることによって識別される、さまざまなエポックからモデルを保存することです。

    最初に、比較的安定した範囲のエポックに対してトレーニングされたネットワークが選択されます。

    -分類のための深い表現を用いた水平および垂直アンサンブル、2013

    スナップショット アンサンブルをさらに強化するには、学習中に最適化手順を系統的に変化させて異なるソリューション (すなわち重みのセット) を強制し、そのうちの最良のものはチェックポイントに保存できるようにすることです。 これには、学習エポックにわたって振動する量のノイズを注入したり、学習エポック中に学習率を振動させることが含まれます。

    私たちの SGDR は、学習率をスケジューリングしてウォーム リスタートをシミュレートし、およそ 2 ~ 4 倍速く競争力のある結果を達成しました。 また、主に SGDR の軌道からのスナップショットのさらに広い、アンサンブルを使用することにより、SGDR で新しい最先端の結果を達成しました。

    SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.P>

    非常に深いニューラルネットワークの利点は、中間隠れ層が低解像度入力データの学習表現を提供するということです。 隠れ層はその内部表現を直接出力することができ、1 つの非常に深いネットワークからの 1 つ以上の隠れ層からの出力は、新しい分類モデルへの入力として使用することができます。 これはおそらく、ディープモデルがオートエンコーダーモデルを用いて学習される場合に最も効果的である。

    このメソッドは、入力が中間層の表現である一連の分類器をアンサンブル化します。

    -分類のための深い表現による水平・垂直アンサンブル、2013年。

    アンサンブルチュートリアル

    モデルを変化させる深層学習アンサンブルの例については、以下を参照してください:

    • How to Develop a Snapshot Ensemble for Deep Learning
    • How to Develop Horizontal Voting Ensemble for Deep Learning

    変化をつける組み合わせ

    予測を組み合わせる最も簡単な方法は、アンサンブルメンバーからの予測の平均を計算することです。

    これは、各モデルからの予測に重み付けをすることで若干改善することができ、ここで重みはホールドアウト検証データセットを使用して最適化されます。

    …委員会の一部のメンバーは、通常、他のメンバーよりも良い予測をすることが期待されます。 したがって、一部の委員に他の委員よりも大きな重みを与える場合、さらに誤差を減らすことができると予想されます。

    – Page 367, Neural Networks for Pattern Recognition, 1995

    さらに複雑化するステップとして、新しいモデルを使用して、各アセンブリ メンバーからの予測を組み合わせる方法を学習することがあります。

    モデルは単純な線形モデル (たとえば、加重平均のようなもの) である可能性もありますが、各メンバーが提供する予測に加えて、特定の入力サンプルも考慮する高度な非線形メソッドである可能性もあります。

    積層汎化は、提供された学習セットに関する一般化(複数可)の偏りを推測することにより機能します。 この推論は、入力が (たとえば) 学習セットの一部を教えられ、その残りを推測しようとしたときのオリジナルの汎化器の推測であり、出力が (たとえば) 正しい推測である第2の空間で汎化することによって進行します。

    -積層汎化、1992 年。

    モデルを積層する、より高度な方法があり、たとえば、前のモデルの間違いを修正するためにアンサンブル メンバーを 1 つずつ追加するブースティングがあります。

    少し異なるもうひとつの組み合わせは、同じ構造を持つ複数のニューラルネットワークの重みを結合することです。 複数のネットワークの重みは平均化され、うまくいけば、どの元のモデルよりも全体的なパフォーマンスが高い、新しい単一のモデルを作成することができます。 このアプローチはモデル重みの平均化と呼ばれます。

    … は、モデル空間におけるネットワークの出力を平均化することによってアンサンブルを形成するのではなく、重み空間におけるこれらの点を平均化し、これらの平均化された重みを持つネットワークを使用することが有望であると示唆しています

    – Averaging Weights Leads to Wide Optima and Better Generalization, 2018.

    アンサンブルチュートリアル

    組み合わせを変える深層学習アンサンブルの例については、以下を参照してください。

    • How to Develop a Model Averaging Ensemble for Deep Learning
    • How to Develop a Weighted Average Ensemble for Deep Learning
    • How to Develop a Stacking Ensemble for Deep Learning
    • How to Create a Polyak-Ruppert Ensemble for Deep Learning

    Summary of Ensemble Techniques

    要約してみると、このようになっています。 we can list some of the more common and interesting ensemble methods for neural networks organized by each element of the method that can be varied, as follows:

    • Varying Training Data
      • k-fold Cross-Validation Ensemble
      • Bootstrap Aggregation (bagging) Ensemble
      • Random Training Subset Ensemble
    • Varying Models
      • Multiple Training Run Ensemble
      • Hyperparameter Tuning Ensemble
      • Snapshot Ensemble
      • Horizontal Epochs Ensemble
      • Vertical Representational Ensemble
    • Varying Combinations
      • Model Averaging Ensemble
      • Weighted Average Ensemble
      • Stacked Generalization (stacking) Ensemble
      • Boosting Ensemble
      • Model Weight Averaging Ensemble

    There is no single best ensemble method; perhaps experiment with a few approaches or let the constraints of your project guide you.

    Further Reading

    This section provides more resources on the topic if you are looking to go deeper.

    Books

    • Section 9.6 Committees of networks, Neural Networks for Pattern Recognition, 1995.
    • Section 7.11 Bagging and Other Ensemble Methods, Deep Learning, 2016.
    • Section 7.3.3 Model ensembling, Deep Learning With Python, 2017.
    • Section 8.2 Bagging, Random Forests, Boosting, An Introduction to Statistical Learning with Applications in R, 2013.

    Papers

    • Neural Network Ensembles, 1990.
    • Neural Network Ensembles, Cross Validation, and Active Learning, 1994.
    • When networks disagree: Ensemble methods for hybrid neural networks, 1995.
    • Snapshot Ensembles: Train 1, get M for free, 2017.
    • SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.
    • Horizontal and vertical ensemble with deep representation for classification, 2013.
    • Stacked generalization, 1992.
    • Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

    Articles

    • Ensemble learning, Wikipedia.
    • Bootstrap aggregating, Wikipedia.
    • Boosting (machine learning), Wikipedia.

    Summary

    In this post, you discovered ensemble methods for deep learning neural networks to reduce variance and improve prediction performance.

    Specifically, you learned:

    • Neural network models are nonlinear and have a high variance, which can be frustrating when preparing a final model for making predictions.
    • アンサンブル学習は、複数のニューラルネットワークモデルの予測を組み合わせて、予測の分散を減らし、汎化エラーを減らす。
    • アンサンブル学習のテクニックは、学習データ、モデル、予測を組み合わせる方法など、変化させる要素によってグループ化できる。

    何か質問はありますか。
    以下のコメントで質問をすれば、できる限り回答します。

    今日より良いディープラーニングモデルを開発する!

    Better Deep Learning

    Train Faster, Reduce Overftting, and Ensemble

    ……

    Developing Better Deep Learning

    Developing Better Deep Learningf4

    私の新しい Ebook:
    Better Deep Learning

    この本は、
    重み減衰、バッチ正規化、ドロップアウト、モデル スタッキング、その他多くのトピックに関する自習用チュートリアルを提供します。 Just Results.

    See What’s Inside

    Tweet Share Share
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です