まず、ドロップアウトは、とオーバーフットしてと戦う技術であり、ニューラルネットワークの一般化を改善することです。だから良い出発点は、トレーニングのパフォーマンスに焦点を当て、あなたがはっきりと見えるようになったらオーバーフィットに対処することです。たとえば、強化学習などの一部の機械学習分野では、学習の主な問題はタイムリーな報酬の欠如であり、状態空間は非常に大きく、一般化に問題はない可能性があります。ここで
は過学習が実際にどのように見えるかは非常に近似した画像です:ところで、
ドロップアウトが唯一の技術ではない、最新の畳み込みニューラルネットワークは、バッチと重量の正規化を好む傾向にあります脱落。
とにかくオーバーフィッティングが実際に問題であり、特にドロップアウトを適用したいとします。デフォルトではdropout=0.5
を提案するのが一般的ですが、このアドバイスは、その時点で完全に接続されたレイヤーや密なレイヤーに焦点を当てたHinton氏によるoriginal Dropout paperの推奨事項に従います。また、アドバイスは、研究がハイパーパラメータ調整を行って最良のドロップアウト値を見つけることを暗黙的に前提としています。
畳み込みレイヤーについては、私はあなたが正しいと思います。dropout=0.5
はあまりにも重篤で、研究はそれに同意します。例えば、"Analysis on the Dropout Effect in Convolutional Neural Networks"のParkとKwakの論文を参照してください。彼らは、はるかに低いレベルdropout=0.1
とdropout=0.2
がうまく機能することがわかります。私自身の研究では、ハイパーパラメータ調整(this question参照)のためのベイジアン最適化を行い、しばしば最初の畳み込みレイヤからネットワークの下へのドロップ確率の漸増を選択します。これは、フィルタの数も増え、共適応の機会も増えるので意味があります。その結果、アーキテクチャは、多くの場合、次のようになります。
- CONV-1:
filter=3x3
、size=32
、0.0-0.1
- 間のドロップアウトCONV-2:
filter=3x3
、size=64
、0.1-0.25
- 間のドロップアウト...
を
これは分類作業には適していますが、確かに普遍的なアーキテクチャではないため、problのハイパーパラメータをクロスバリデーションして最適化する必要がありますem。単純なランダム探索やベイジアン最適化によって行うことができます。ベイジアン最適化を選択した場合は、そのための良いライブラリがあります(this oneなど)。
詳細なフィードバックをいただきありがとうございます。大変感謝しています。私はまた、参照を非常に感謝します! – user88383