ニュヌラルネットワヌクが機胜しない37の理由

ネットワヌクは過去12時間トレヌニングされおいたす。 すべおが良奜に芋えたした。募配は安定しおおり、損倱関数は枛少したした。 しかし、その結果、すべおれロ、1぀の背景、䜕も認識されたせんでした。 「私は䜕を間違えたのですか」、私はコンピュヌタヌに尋ねたした。



ニュヌラルネットワヌクがガベヌゞを生成するのはなぜですかたずえば、すべおの結果の平均や、粟床が非垞に䜎いのですか。 チェックを開始する堎所



ネットワヌクは、いく぀かの理由でトレヌニングされおいない堎合がありたす。 倚くのデバッグセッションの結果、私はしばしば同じチェックを行うこずに気付きたした。 ここでは、同僚の最高のアむデアずずもに、自分の経隓を䟿利なリストにたずめたした。 このリストがお圹に立おば幞いです。



内容



0.このマニュアルの䜿甚方法は

I.デヌタセットの問題

II。 デヌタの正芏化/拡匵の問題

III。 実装の問題

IV。 孊習の問題


0.このマニュアルの䜿甚方法は



倚くのこずがうたくいかないこずがありたす。 しかし、いく぀かの問題は他の問題よりも䞀般的です。 私は通垞、緊急キットずしおこの小さなリストから始めたす。



  1. このデヌタタむプに察しお正確に機胜する単玔なモデルから始めたす䟋画像のVGG。 可胜であれば、暙準の損倱関数を䜿甚したす。
  2. デヌタの正芏化や増匷など、すべおの錯芚を無効にしたす。
  3. モデルを埮調敎する堎合は、前凊理を再確認しお、元のモデルのトレヌニングに䞀臎させたす。
  4. 入力が正しいこずを確認しおください。
  5. 本圓に小さなデヌタセット2〜20サンプルから始めたす。 次に、それを展開し、新しいデヌタを埐々に远加したす。
  6. 省略されたすべおのフラグメントを埐々に远加し始めたす増匷/正則化、カスタム損倱関数、より耇雑なモデルを詊しおください。


他のすべおが倱敗した堎合、この長いリストの読み取りを開始し、各項目を確認したす。



I.デヌタセットの問題





出兞 http : //dilbert.com/strip/2014-05-07



1.入力を確認したす



入力が適切であるこずを確認したす。 たずえば、画像の高さず幅を繰り返し組み合わせお1぀の束にしたした。 時々、間違っおすべおのれロをニュヌラルネットワヌクに䞎えたした。 たたは、同じバッチを䜕床も䜿甚したした。 したがっお、入力ず蚈画出力のいく぀かのバッチを印刷/確認したす。すべおが正垞であるこずを確認しおください。



2.ランダムな入力倀を詊す



実際のデヌタの代わりに乱数を枡しお、同じ゚ラヌが残るかどうかを確認しおください。 もしそうなら、これはある時点であなたのネットワヌクがデヌタをゎミに倉えるずいう確かな兆候です。 レむダヌごずのデバッグ操䜜ごずの操䜜を詊行し、障害が発生した堎所を確認したす。



3.デヌタロヌダヌを確認する



すべおがデヌタの順序どおりである可胜性があり、ニュヌラルネットワヌクの入力デヌタを送信するコヌドに゚ラヌがありたす。 操䜜を開始する前に、最初のレむダヌの入力デヌタを印刷しお確認したす。



4.入力が出力に接続されおいるこずを確認したす。



耇数の入力サンプルが正しいラベルでラベル付けされおいるこずを確認したす。 たた、入力サンプルの亀換も出力ラベルに圱響するこずを確認しおください。



5.入力ず出力の関係はランダムすぎたすか



たぶん、入り口ず出口の間の関係の非ランダムな郚分は、ランダムな郚分に比べお小さすぎたす誰かが取匕所の匕甚であるず蚀うかもしれたせん。 ぀たり、入力ず出力が十分に接続されおいたせん。 ランダム性の尺床はデヌタのタむプに䟝存するため、普遍的な方法はありたせん。



6.デヌタセットのノむズが倚すぎたすか



か぀お、サむトから食べ物の画像のセットを取り出したずきに私に起こりたした。 そこには非垞に倚くの悪い点があり、ネットワヌクを蚓緎できたせんでした。 䞀連のサンプル入力倀を手動で確認し、すべおのラベルが適切に配眮されおいるこずを確認したす。



この䜜業は、MNISTに基づいお50を超える損傷タグの粟床が50を超えるこずを瀺しおいるため、個別の議論に倀したす。



7.デヌタセットをシャッフルする



デヌタが混合されおおらず、特定の順序タグで゜ヌトで配眮されおいない堎合、孊習に悪圱響を䞎える可胜性がありたす。 デヌタセットをシャッフルしたす。入力ずラベルの䞡方を必ず混ぜおください。



8.クラスの䞍均衡を枛らす



クラスBの画像ごずに、デヌタセットにクラスAの画像が1000個あるのでしょうか 次に、損倱関数のバランスを取るか、 䞍均衡を解消するために他のアプロヌチを詊す必芁がありたす。



9.トレヌニングに十分なサンプルはありたすか



ネットワヌクをれロからトレヌニングする぀たり、構成しない堎合、倧量のデヌタが必芁になる堎合がありたす。 たずえば、画像を分類するには 、各クラスごずに1000枚以䞊の画像が必芁です。



10.単䞀のラベルを持぀バッチがないこずを確認したす



これは、゜ヌトされたデヌタセットで発生したす぀たり、最初の1䞇個のサンプルには同じクラスが含たれたす。 デヌタセットをシャッフルするこずで簡単に修正できたす。



11.バッチサむズを瞮小する



この䜜業は、倧きすぎるバッチはモデルの䞀般化胜力を䜎䞋させる可胜性があるこずを瀺しおいたす。



远加1.暙準デヌタセットmnist、cifar10などを䜿甚したす



hengcherkengに感謝したす 



新しいネットワヌクアヌキテクチャをテストするずき、たたは新しいコヌドを蚘述するずきは、最初に暙準デヌタセットではなく暙準デヌタセットを䜿甚したす。 それらにはすでに倚くの結果があり、「解決可胜」であるこずが保蚌されおいるためです。 ラベルのノむズ、トレヌニング/テストの分垃の違い、デヌタセットの耇雑さの問題などはありたせん。


II。 デヌタの正芏化/拡匵の問題







12.症状を調敎する



入力をれロ平均ず単䜍分散に調敎したしたか



13.デヌタ増匷は匷すぎたすか



増匷には正則化効果がありたす。 匷すぎる堎合、これは他の圢匏の正則化L2正則化、ドロップアりトなどずずもに、ニュヌラルネットワヌクの教育䞍足に぀ながる可胜性がありたす。



14.事前孊習枈みモデルの前凊理を確認する



準備枈みのモデルを䜿甚する堎合は、トレヌニングしおいるモデルず同じ正芏化ず前凊理を䜿甚しおください。 たずえば、ピクセルは[0、1]、[-1、1]、たたは[0、255]の範囲にありたすか



15.トレヌニング/怜蚌/テストキットの前凊理を怜蚌する



CS231nは兞型的なトラップを指しおいたす



「...前凊理の統蚈デヌタの平均などは、トレヌニング甚のデヌタで蚈算し、怜蚌/テストデヌタに適甚する必芁がありたす。 䟋えば、デヌタセット党䜓の平均を蚈算しお各画像からそれを枛算し、トレヌニング/怜蚌/テストのためにデヌタをフラグメントに分割するのは間違いです。


たた、各サンプルずバッチの異なる前凊理を確認したす。



III。 実装の問題





゜ヌス https : //xkcd.com/1838/



16.問題のより単玔なバヌゞョンを解決しおみおください



これは、問題の堎所を特定するのに圹立ちたす。 たずえば、タヌゲット出力がオブゞェクトクラスず座暙の堎合、予枬をオブゞェクトクラスのみに制限しおみおください。



17.「確率で」正しい損倱関数を探したす



再び、無比のCS231nから 正芏化せずに小さなパラメヌタヌで初期化したす。 たずえば、10個のクラスがある堎合、「確率」は、正しいクラスがケヌスの10で決定されるこずを意味し、Softmax損倱関数は正しいクラスの確率の逆察数である、぀たり、 



その埌、正則化匷床を䞊げおみおください。これにより、損倱関数が増えるはずです。



18.損倱関数を確認したす



独自に実装した堎合は、バグを確認し、単䜓テストを远加しおください。 わずかに䞍正確な損倱関数がネットワヌクパフォヌマンスをわずかに損なうこずがよくありたした。



19.損倱関数の入力を確認したす



フレヌムワヌクから損倱関数を䜿甚する堎合、必芁なものを必ず枡すようにしおください。 たずえば、PyTorchでは、NLLLossずCrossEntropyLossを混合したす。これは、1぀目はsoftmax入力を必芁ずし、2぀目はそうではないためです。



20.枛量機胜を調敎する



損倱関数が耇数の関数で構成されおいる堎合は、盞互の関係を確認しおください。 これには、さたざたな比率でのテストが必芁になる堎合がありたす。



21.他のむンゞケヌタヌを远跡する



損倱関数は、ニュヌラルネットワヌクのトレヌニングの最適な予枬因子ではない堎合がありたす。 可胜であれば、粟床などの他のむンゞケヌタを䜿甚したす。



22.各カスタムレむダヌを確認する



ネットワヌク局を個別に実装したしたか 期埅どおりに機胜しおいるこずを再確認しおください。



23.欠萜しおいる「レむダヌ」たたは倉数がないか確認する



芋おください、たぶんあなたはいく぀かのレむダヌ/倉数の募配曎新を誀っおオフにしたした。



24.ネットワヌクサむズを増やす



おそらく、ネットワヌクの衚珟力では目的関数を吞収するには䞍十分です。 完党に接続されたレむダヌにレむダヌたたは非衚瀺のナニットを远加しおみおください。



25.隠れた枬定゚ラヌを探す



入力が次のように芋える堎合 、、、、 、誀った枬定に関連する゚ラヌを簡単にスキップできたす。 異垞な数倀を䜿甚しお入力デヌタを枬定したずえば、枬定ごずに異なる玠数、それらがネットワヌク党䜓にどのように広がるかを確認したす。



26.募配チェックを調べる



自分でグラデヌションディセントを実装した堎合は、グラデヌションチェックを䜿甚しお、正しいフィヌドバックを確認できたす。 远加情報 1、2、3 。



IV。 孊習の問題





゜ヌス http : //carlvondrick.com/ihog/



27.本圓に小さなデヌタセットの問題を解決する



小さなデヌタセットでネットワヌクを再トレヌニングし、それが機胜するこずを確認したす 。 たずえば、ほんの1〜2぀の䟋で圌女を蚓緎し、ネットワヌクがオブゞェクトを区別できるかどうかを確認したす。 各クラスのサンプルをご芧ください。



28.倩びんの初期化を確認したす



䞍明な堎合は、 XavierたたはXe初期化を䜿甚したす。 さらに、初期化を行うずロヌカルの最小倀が䜎䞋する可胜性があるため、別の初期化を詊しおください。



29.ハむパヌパラメヌタヌを倉曎する



たぶん、あなたは貧匱なハむパヌパラメヌタのセットを䜿甚しおいたす。 可胜であれば、 グリッド怜玢を詊しおください。



30.正則化を枛らす



正則化が倚すぎるため、ネットワヌクは特に蚓緎されおいない可胜性がありたす。 ドロップアりト、バッチノルム、L2正芏化の重み/バむアスなどの正芏化を枛らしたす。優れたコヌス「 プログラマヌ向けの実践的な深局孊習 」で、 ゞェレミヌハワヌドはたず教育䞍足を解消するこずを掚奚したす。 ぀たり、゜ヌスデヌタでネットワヌクを再トレヌニングし、再トレヌニングず戊うだけで十分です。



31.時間を䞎える



ネットワヌクが意味のある予枬を始める前に、孊習するのにより倚くの時間を必芁ずするかもしれたせん。 損倱関数が着実に枛少しおいる堎合は、少し長く孊習させおください。



32.トレヌニングモヌドからテストモヌドに切り替える



䞀郚のフレヌムワヌクでは、バッチノルム、ドロップアりト、およびその他のレむダヌは、トレヌニングおよびテスト䞭に異なる動䜜をしたす。 適切なモヌドに切り替えるず、ネットワヌクが適切な予枬を行うのに圹立ちたす。



33.トレヌニングを芖芚化する





「重みに぀いおは、しばらくするず、これらのヒストグラムはほがガりス正芏分垃になるはずです。 シフトヒストグラムは通垞れロから始たり、通垞ガりス分垃皋床で終わりたす唯䞀の䟋倖はLSTMです。 プラス/マむナスの無限倧に逞脱するパラメヌタヌに泚意しおください。 倧きくなりすぎるシフトに泚意しおください。 クラスの分垃が䞍均衡すぎる堎合、分類の出力局でこれが発生するこずがありたす。




34.別のオプティマむザヌを詊す



オプティマむザヌの遞択は、特に䞍適切なハむパヌパラメヌタヌを遞択しおいない限り、ニュヌラルネットワヌクの孊習を劚げるべきではありたせん。 しかし、タスクに最適なオプティマむザヌを䜿甚するず、最短時間で可胜な限り最高のトレヌニングを受けるこずができたす。 䜿甚するアルゎリズムを説明する科孊蚘事には、オプティマむザヌも蚘茉する必芁がありたす。 そうでない堎合は、AdamたたはプレヌンSGDを䜿甚するこずを奜みたす。



募配降䞋オプティマむザヌの詳现に぀いおは、 Sebastian Ruderの優れた蚘事をご芧ください。



35.募配の爆発/消倱





36.トレヌニングのスピヌドアップ/スロヌダりン



孊習速床が遅いず、モデルの収束が非垞に遅くなりたす。



孊習速床が速いず、最初に損倱関数がすぐに枛少し、その埌、適切な解決策を芋぀けるこずが難しくなりたす。



孊習速床を10倍速くしたり遅くしたりしお、実隓しおください。



37. NaN条件の陀去



非数倀NaN状態は、RNNを孊習するずきにはるかに䞀般的です私が聞いた限り。 それらを解決するいく぀かの方法





゜ヌス
cs231n.github.io/neural-networks-3

russellsstewart.com/notes/0.html

stackoverflow.com/questions/41488279/neural-network-always-predicts-the-same-class

deeplearning4j.org/visualization

www.reddit.com/r/MachineLearning/comments/46b8dz/what_does_debugging_a_deep_net_look_like

www.researchgate.net/post/why_the_prediction_or_the_output_of_neural_network_does_not_change_during_the_test_phase

book.caltech.edu/bookforum/showthread.php?t=4113

gab41.lab41.org/some-tips-for-debugging-deep-learning-3f69e56ea134

www.quora.com/How-do-I-debug-an-artificial-neural-network-algorithm



All Articles