ディープニューラルネットでアンダーフィッティングと戦う方法


50

人工ニューラルネットワーク(NN)で始めたとき、私は主な問題として過剰適合と戦わなければならないと思いました。しかし実際には、NNに20%のエラー率の障壁を通過させることさえできません。ランダムフォレストでスコアを打つことさえできません!

私は、NNがデータの傾向を把握し始めるために何をすべきかについて、非常に一般的なまたはそれほど一般的でないアドバイスを求めています。

NNの実装には、MNISTデータセットの分類に優れた(エラー率5%未満)チュートリアルからのコードで Theano Stacked Auto Encoderを使用します。これは多層パーセプトロンで、上部にソフトマックス層があり、隠された各層は後でオートエンコーダーとして事前トレーニングされます(チュートリアル 8章で詳しく説明します)。最大50個の入力機能と最大10個の出力クラスがあります。NNにはシグモイドニューロンがあり、すべてのデータは[0,1]に正規化されます。さまざまな構成を試しました:隠れ層とその中のニューロンの数(100-> 100-> 100、60-> 60-> 60、60-> 30-> 15など)、異なる学習と事前訓練料金など

そして、私が得ることができる最高のものは、検証セットで20%のエラー率とテストセットで40%のエラー率です。

一方、(scikit-learnから)Random Forestを使用しようとすると、検証セットで12%、テストセットで25%(!)のエラー率が簡単に得られます。

事前トレーニングを受けた私のディープNNの動作が非常に悪いのはどうしてですか?何を試せばいいですか?

回答:


34

ディープネットワークの問題は、調整するハイパーパラメーターが多く、ソリューションスペースが非常に小さいことです。したがって、良いものを見つけることは、エンジニアリングのタスクというよりも芸術のようなものです。チュートリアルの実際の例から始めて、パラメーターをいじって結果がどのように変化するかを確認します。これにより、パラメーターと結果(最終および中間の両方)の依存関係について(形式的な説明ではなく)良い直感が得られます。

また、次の論文が非常に有用であることがわかりました。

どちらもRBMについて説明していますが、一般的なディープネットワークに関するいくつかの洞察を含んでいます。たとえば、重要なポイントの1つは、ネットワークをレイヤーごとにデバッグする必要があることです。前のレイヤーが機能の適切な表現を提供しない場合、それ以上のレイヤーはそれを修正する機会がほとんどありません。


14

ffriendの答えは、ニューラルネットワークを適切に調整するのが(極端に)難しい方法について学ぶための優れた指針を提供しますが、ニューラルネットワークの最高の分類アーキテクチャで現在使用されている特定の手法をいくつか挙げると役立つと思います文献。

整流線形アクティベーション

あなたのケースでのかもしれないのヘルプからあなたのモデルの活性化機能を切り替えることであることを最初ロジスティックシグモイド - - Aへ整流線形(別名relu) -。f(z)=(1+ez)1f(z)=max(0,z)

reluアクティベーションには、2つの大きな利点があります。

  • その出力はのために真のゼロ(ゼロに近いだけでなく、小さな値)であるとz0
  • その導関数は定数で、場合は、場合は1です。z0z>0

reluユニットのネットワークは、入力を受け取るユニットが基本的に「オフ」(出力が0)であるのに対し、入力を受け取るユニットは単一のリニアその入力のモデル。また、reluアクティベーションを使用した深いネットワークは消失勾配の問題を回避する傾向があり、層ごとの事前トレーニングなしでトレーニングできるため、定数導関数も重要です。z0z>0

これらのトピックに関する優れた論文については、Glorot、Bordes、およびBengioによる「Deep Sparse Rectifier Neural Networks」(http://jmlr.csail.mit.edu/proceedings/papers/v15/glorot11a/glorot11a.pdf)を参照してください。

脱落

過去数年の多くの研究グループは、過剰訓練を避けるために分類器ネットワークで「ドロップアウト」の使用を提唱してきました。(たとえば、Srivastava、Hinton、Krizhevsky、Sutskever、およびSalakhutdinovによる「ドロップアウト:ニューラルネットワークの過剰適合を防ぐ簡単な方法」を参照してください。http: //www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf )ドロップアウト、トレーニング中、特定のレイヤーのユニットの一定の割合が、ネットワークが処理する入力ごとにランダムに0に設定されます。これにより、0に設定されていないユニットが「欠落」ユニットを「補う」ように強制されます。ドロップアウトは、分類タスクのニューラルネットワークモデルにとって非常に効果的な正則化プログラムのようです。これに関するブログ記事をhttp:// fastmlで参照してください


7
しかし、問題は過剰適合ではなく、不足適合に関するものです。
バレンタス

8

Microsoft Researchの研究者による次の論文を読むことに興味があるかもしれません。

Kaiming He、Xiangyu Zhang、Shaoqing Ren、Jian Sun:arxivでの画像認識のための深層残差学習、2015年。

彼らにはあなたと同じような問題がありました:

より深いネットワークが収束し始めると、劣化の問題が明らかになります。ネットワークの深さが増すと、精度が飽和し(当然のことですが)、その後急速に劣化します。予想外に、そのような劣化は過剰適合によるものではなく、適切な深さのモデルにレイヤーを追加すると、[11、42]で報告され、実験で徹底的に検証されるように、より高いトレーニングエラーにつながります。

この問題を解決するために、彼らはスキップアーキテクチャを利用しました。それにより、彼らは非常に深いネットワーク(1202層)を訓練し、ILSVRC 2015チャレンジで最高の結果を達成しました。


あなたのANSに感謝します、検証accがトレーニングaccよりも高い場合、shaudは何をしますか?valセット内の少数のデータで発生する可能性がありますが、valセットに依存しない場合もあります。私はval accがトレーニングaccよりも高い他の理由があると尋ねていますか?
スディップダス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.