MNIST分類のために荒廃したニューラルネットワークを過剰適合させないのはなぜですか?


8

MNIST分類のための単純なニューラルネットワーク(NN)があります。これには、それぞれ500個のニューロンを持つ2つの非表示層が含まれています。したがって、NNの寸法は784-500-500-10です。ReLUはすべてのニューロンで使用され、softmaxは出力で使用され、クロスエントロピーは損失関数です。

オーバーフィットがNNを荒廃させないように見えるのはなぜ私を困惑させるのですか

NNのパラメーター(重み)の数を考慮します。およそ ただし、私の実験では、NNのトレーニングに6000の例(MNISTトレーニングセットの10分の1)のみを使用しました。(これは単に実行時間を短く保つためです。トレーニング例をさらに使用すると、トレーニングとテストのエラーはどちらも大幅に減少します。)私は実験を10回繰り返しました。単純な確率的勾配降下法が使用されます(RMSプロップまたは運動量なし)。正則化/ドロップアウト/早期停止は使用されませんでした。報告されたトレーニングエラーとテストエラーは次のとおりです。

784×500+500×500+500×10=647000。
6000

番号。1245678910Etra7.810.39.111.08.79.29.38.310.38.6Etest11.713.913.214.112.113.213.311.913.412.7

10個すべての実験(それぞれ独立したランダムパラメーターの初期化)では、テストエラーはトレーニングエラーと約。6Kの例を使用して647Kのパラメーターをトレーニングしたにもかかわらず、4%。ニューラルネットワークのVC次元は、少なくとものオーダーですE | エッジ(ウェイト)の数です。では、なぜテストエラーがトレーニングエラーよりも悲惨なほど高くなかったのですか(たとえば、30%または50%)。誰かが私が逃した場所を指摘できるなら、私はそれを大いに感謝します。どうもありがとう!O|E|log|E||E|

[2017年6月30日編集]

早期停止の影響を明確にするために、10回の実験を再度行いました。それぞれに20エポックのトレーニングを行いました。次の図にエラー率を示します。

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

より多くのエポックがトレーニングで使用されるにつれて、テストとトレーニングのエラー間のギャップは増加しました。ただし、トレーニングエラーがゼロになった後も、テストエラーのテールはほぼフラットのままでした。さらに、他のサイズのトレーニングセットでも同様の傾向が見られました。20エポックのトレーニング終了時の平均エラー率は、以下のトレーニングセットのサイズに対してプロットされます。

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

したがって、過剰適合が発生しますが、NNを破壊するようには見えません。トレーニングに必要なパラメーターの数(647K)とトレーニング例の数(<60K)を考えると、疑問が残ります。さらに、これは、ソフトマックス出力とクロスエントロピー目的関数を持つすべての分類タスクのReLU NNに当てはまりますか?誰かが反例を見たことがありますか?


使用したエポックの数に関するコメントはありません。より多くの/より少ないエポックで実行してみて、その効果を確認しましたか?あなたは早期停止を使用しないと述べましたが、おそらくあなたはどういうわけか停止することに決めていますか?ネットワークが収束したように見えるなど、多数のエポックを実行していますか?
Neil Slater

@NeilSlater私は実験で1エポックのみを使用し、その後SGDを終了しました。(これは、制御性と可視性を向上させるためにMatlabで実行しているため、実行時間を短く保つためです)。ただし、SGDの損失関数の値(ミニバッチサイズ= 1)を見ると、収束しているように見えました。つまり、最大softmax出力が1近くでホバリングしていました。60Kの例(1エポック)も試し、同様の傾向を確認しました。つまり、トレーニングエラー〜3%およびテストエラー〜4%です。
syeh_106 2017年

あなたの拡張実験に続く答えは、私とバシャールの答えの組み合わせだと思います。エラー率test:trainの観点から考えると、7%のテストエラーと0%のトレーニングエラーは良いパフォーマンスとは言えません-これは大きな過剰適合です。60kのトレーニング例での2.5%のエラー率でさえ、この問題の最先端のエラー率よりも10倍悪いです。しかし、あなたの質問は、「なぜネットワークが50%または90%のエラー率に戻らないのか」ということでしょうか。これは私のテストのエラーは、まだ多くのエポックで上昇する場合には、まだ不思議ものの、バシャールの答えを覆われている
ニール・スレーター

1
@NeilSlater確かに、SGDステップサイズ= 0.001。重みは、最初の2つのレイヤーでは[-0.2、+0.2]、出力レイヤーでは[-1、+ 1]でランダムかつ均一に初期化されます。
syeh_106 2017年

1
私はいくつかの追加の調査で私の答えを更新しました。それは基本的にあなたの発見に同意し、いくつかのコンテキストと手を振る説明を提供します
Neil Slater 2017

回答:


7

Kerasを使用して結果を複製しましたが、非常に似通った数値が得られたので、あなたが何か間違っているとは思いません。

興味をそそられて、私は何が起こるかを見るためにもっと多くの時代を走りました。テストとトレーニングの結果の精度はかなり安定したままでした。ただし、損失の値は、時間の経過とともにさらに離れました。10エポック程度の後、100%の列車精度、94.3%のテスト精度を得ました-損失値はそれぞれ0.01と0.22前後でした。20,000エポック後、精度はほとんど変わりませんでしたが、トレーニング損失0.000005とテスト損失0.36がありました。損失は​​非常にゆっくりではありますが、依然として分散しています。私の意見では、ネットワークは明らかに過剰に適合しています。

したがって、質問は言い換えることができます:過剰適合にもかかわらず、MNISTデータセットにトレーニングされたニューラルネットワークが、精度の点で明らかに合理的に一般化しているのはなぜですか?

この94.3%の精度を、より単純なアプローチを使用して可能な精度と比較する価値があります。

たとえば、単純な線形ソフトマックス回帰(本質的には隠れ層のない同じニューラルネットワーク)では、95.1%トレインと90.7%テストの迅速で安定した精度が得られます。これは、多くのデータが線形に分離していることを示しています。784次元で超平面を描画でき、数字の画像の90%が適切な「ボックス」内に収まるため、さらに調整する必要はありません。このことから、オーバーフィット非線形ソリューションは90%よりも悪い結果を得ることが予想されるかもしれませんが、たとえば「3」のボックス内にある「5」の周りに複雑すぎる境界を直感的に形成するため、おそらく80%より悪くはないでしょう。このナイーブ3マニホールドの少量のみが誤って割り当てられます。しかし、線形モデルからのこの80%下限推定よりも優れています。

もう1つの可能な単純なモデルは、テンプレートマッチング、つまり最近傍モデルです。これは、過剰適合が行っていることと相応に類似しています。同じクラスを予測する各トレーニング例の近くにローカルエリアを作成します。過剰適合の問題は、アクティブ化の値がネットワークが「自然に」行うことは何でも従う、その間のスペースで発生します。最悪の場合、および説明図によく見られるのは、他の分類を通過する、非常に湾曲したほぼ無秩序な表面であることに注意してください。しかし、実際には、ニューラルネットワークがポイント間をよりスムーズに補間する方が自然な場合があります。実際に何が行われるかは、ネットワークが近似に組み合わせる高次曲線の性質と、それらがすでにデータにどれだけ適合しているかによって異なります。

MNISTのこのブログからK Nearest Neighborsと一緒に KNNソリューションのコードを借りました。k = 1を使用-つまり、ピクセル値を照合するだけで6000のトレーニング例から最も近いラベルを選択すると、91%の精度が得られます。過剰訓練されたニューラルネットワークが達成する3%の追加は、k = 1のKNNが行うピクセルマッチカウントの単純さを考えると、それほど印象的ではないように見えます。

ネットワークアーキテクチャのいくつかのバリエーション、さまざまなアクティベーション機能、さまざまな数とサイズのレイヤーを試してみましたが、どれも正規化を使用していません。しかし、6000のトレーニング例では、テストの精度が劇的に低下するような方法でそれらをオーバーフィットさせることはできませんでした。トレーニングの例をわずか600に減らしても、プラトーは低くなり、精度は〜86%です。

私の基本的な結論は、MNISTの例は特徴空間のクラス間で比較的スムーズな遷移があり、ニューラルネットワークはこれらに適合し、関数の近似のためにNNビルディングブロックが与えられた場合に「自然な」方法でクラス間を補間できることです。オーバーフィットのシナリオで問題を引き起こす可能性のある近似。

トレーニングとテストの両方の例にランダムノイズまたは歪みが追加された「ノイズの多いMNIST」セットを試すのは、興味深い実験になるかもしれません。正則化されたモデルはこのデータセットで正常に動作することが期待されますが、おそらくそのシナリオでは、過剰適合は正確さに関してより明らかな問題を引き起こすでしょう。


これはアップデート前のOPによるテストです。

あなたのコメントから、あなたはあなたのテスト結果がすべて単一のエポックを実行した後に取られたと言います。トレーニングデータを与えられた可能な限り早い時点でトレーニングを停止したため、そうではないことを書いても、基本的に早期停止を使用しました。

ネットワークが実際にどのように収束しているかを確認したい場合は、さらに多くのエポックを実行することをお勧めします。10エポックから始めて、100まで増やすことを検討してください。特に6000サンプルでは、​​この問題では1エポックは多くありません。

繰り返し回数を増やしても、ネットワークのオーバーフィットがすでに発生していることは保証されませんが、実際にはあまりチャンスが与えられておらず、これまでの実験結果は決定的なものではありません。

実際、エポック数が増えるにつれて、トレーニングメトリクスから外れ始める前に、2番目、3番目のエポックに続いてテストデータの結果が改善することを期待します。また、ネットワークが収束に近づくにつれて、トレーニングエラーが0%に近づくことも期待します。


あなたが正しい。1エポックのみを実行することにより、私は意図せずに暗黙的に早期停止を実装しました。私はあなたの提案を試し、必要に応じて私の質問を更新するかもしれません。
syeh_106 2017年

更新された回答と調査結果は非常に役に立ち、この質問にさらに光を当てます。大変感謝しています。人工ニューラルネットワークは美しく魅力的に見えます。それが、なぜ/どのように/いつ機能するのかを突き止めようとしたときに、定量的で厳密な分析/理論は豊富に思われなかっただけです。
syeh_106 2017

3

一般に、人々はモデルの複雑さの関数として過剰適合を考えます。モデルの複雑さは制御できることの1つであるため、これはすばらしいことです。実際には、過剰適合問題に関連する他の多くの要因があります。-トレーニングサンプルの数-反復回数-入力の次元(あなたの場合、私はこれが過剰適合しない理由だと思います)-問題の難しさ:線形分離可能な単純な問題がある場合は、過剰適合についてあまり心配する必要はありません。

これらすべてのパラメーターを変更できるgoogle tensorflowによって提供される視覚的なデモがあります。 http://playground.tensorflow.org 入力問題、サンプル数、入力の次元、ネットワーク、反復回数を変更できます。

オーバーフィッティングについては、オーバーフィッティング=大規模モデル+無関係な機能として考えたい

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.