2

私は昨日、ニューラルネットワーク(確率的勾配降下法を使用したバックプロパゲーションを介してトレーニングしている)が極小値でスタックしていないかどうかを尋ねるこの質問を投稿しました。次の論文では、XORニューラルネットワークの極小値の問題について説明しています。最初の論文では極小値の問題はないと述べていますが、次の論文(1年後に書かれた)では、2-3-1 XORニューラルネットワークに極小値の問題があると述べています(余談ですが、私は3-3-1を使用しています。つまり、入力層と非表示層にバイアスをかけています)。これらは両方とも要約です(私は完全な論文にアクセスできないので、それを読むことができません):

最も単純なXORネットワークの極小値はないという別の論文[PDF]もありますが、2-3-1ネットワークについて話しているようには見えません。

さて、私の実際の質問に移ります。活性化関数の選択、初期の重み、そしてこれがニューラルネットワークが極小値でスタックするかどうかにどのような影響を与えるかについて議論するものは何も見つかりませんでした。私がこの質問をしている理由は、私のコードで標準のシグモイド活性化関数と双曲線正接活性化関数を使用しようとしたためです。前者の場合、私は約20%の時間しかスタックしないのに対し、後者の場合、私ははるかに頻繁にスタックする傾向があることに気づきました。また、最初にネットワークを初期化するたびに重みをランダム化しているので、特定のランダムな重みのセットがニューラルネットワークを「スタック」させるためにもっと配置されているのではないかと思います。

活性化関数に関して言えば、エラーは最終的には活性化関数によって生成される出力に関連しているので、効果がある(つまり、エラーの表面が変化する)と思います。ただし、これは単に直感に基づいているため、具体的な答えをお勧めします(両方の点で、初期の重みと活性化関数の選択)。

4

1 に答える 1

6

ニューラルネットワークに与えられたランダムな重みは、学習中に利用できる検索空間の部分を即座に制限することがよくあります。これは、学習率が低い場合に特に当てはまります。

ただし、XORの場合(3-3-1トポロジを使用)、極小値はありません。

ネットワークが非常に小さいため、極小値でスタックしているように見える場合は、エッジの重みを印刷することをお勧めします。重みが正しいように見えるかどうか、および値が完全なネットワークを提供することからどれだけ離れているかをすばやく評価できるはずです。

私にとって大きな違いをもたらした1つのトリックは、トレーニングデータの各部分の直後に重みを更新する代わりに、エラーをバッチ処理し、エポックの終わりに重みを更新することでした。これにより、入力データの前半が同じ分類バケットに属していた場合に、ネットワークが早い段階で揺れるのを防ぐことができました。

次のポイントになりますが、トレーニングの例が均等に分散されていると思いますか?ニューラルネットワークに900の正の分類結果を提供し、100の負の分類結果しか提供しない場合、ネットワークは、エラー率が10%しかないため、すべてが分類グループ内にあると言う方が簡単だと考えることがあります。多くの学習アルゴリズムは、これらの種類のものを見つけるのに非常に優れています。

最後に、活性化関数は、極小値に達するかどうかにかかわらず、ほとんどまたはまったく違いがないはずです。活性化関数は、主に実数のドメインをはるかに小さい既知の範囲に投影する方法として機能します。シグモイドの場合は(0,1)、双曲線正接活性化関数の場合は(-1,1)。これは、特定の神経層で学習したすべての特徴に平等を適用する方法と考えることができます(別名特徴スケーリング)。入力ドメインは事前にわからないため、線形回帰の通常の特徴スケーリングほど単純ではないため、活性化関数を使用する必要がありますが、バックプロパゲーション中にエラーを計算するときに補正されます。

于 2011-11-09T05:21:11.850 に答える