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%に近づくことも期待します。