私は昨日、ニューラルネットワーク(確率的勾配降下法を使用したバックプロパゲーションを介してトレーニングしている)が極小値でスタックしていないかどうかを尋ねるこの質問を投稿しました。次の論文では、XORニューラルネットワークの極小値の問題について説明しています。最初の論文では極小値の問題はないと述べていますが、次の論文(1年後に書かれた)では、2-3-1 XORニューラルネットワークに極小値の問題があると述べています(余談ですが、私は3-3-1を使用しています。つまり、入力層と非表示層にバイアスをかけています)。これらは両方とも要約です(私は完全な論文にアクセスできないので、それを読むことができません):
- XORには極小値がありません:ニューラルネットワークのエラー表面分析のケーススタディ。 ハミーLGによる。オーストラリア、シドニー、マッコーリー大学コンピューティング学部
- 2-3-1XORネットワークの極小値。 Sprinkhuizen-Kuyper IG、BoersEWによる。
最も単純なXORネットワークの極小値はないという別の論文[PDF]もありますが、2-3-1ネットワークについて話しているようには見えません。
さて、私の実際の質問に移ります。活性化関数の選択、初期の重み、そしてこれがニューラルネットワークが極小値でスタックするかどうかにどのような影響を与えるかについて議論するものは何も見つかりませんでした。私がこの質問をしている理由は、私のコードで標準のシグモイド活性化関数と双曲線正接活性化関数を使用しようとしたためです。前者の場合、私は約20%の時間しかスタックしないのに対し、後者の場合、私ははるかに頻繁にスタックする傾向があることに気づきました。また、最初にネットワークを初期化するたびに重みをランダム化しているので、特定のランダムな重みのセットがニューラルネットワークを「スタック」させるためにもっと配置されているのではないかと思います。
活性化関数に関して言えば、エラーは最終的には活性化関数によって生成される出力に関連しているので、効果がある(つまり、エラーの表面が変化する)と思います。ただし、これは単に直感に基づいているため、具体的な答えをお勧めします(両方の点で、初期の重みと活性化関数の選択)。