4

関数を使用して単純なバックプロパゲーション ニューラル ネットワークをトレーニングしようとしましたxortanh(x)をアクティベーション関数として使用すると、導関数を使用して1-tanh(x)^2、約 1000 回の反復後に正しい結果が得られます。ただし、g(x) = 1/(1+e^(-x))導関数を使用してアクティベーション関数として使用する場合g(x)*(1-g(x))、正しい結果を得るには約 50000 回の反復が必要です。その理由は何ですか?

ありがとうございました。

4

1 に答える 1

9

はい、あなたが観察したことは真実です。バックプロパゲーションを使用してニューラル ネットワークをトレーニングするときにも、同様の観察結果があります。問題についてXORは、以前はネットワークをセットアップしていましたが2x20x2、ロジスティック関数で結果を下回るには 3000 以上のエピソードが必要です。

[0, 0] -> [0.049170633762142486]
[0, 1] -> [0.947292007836417]
[1, 0] -> [0.9451808598939389]
[1, 1] -> [0.060643862846171494]

活性化関数として使用しながらtanh、800話経過後の結果がこちら。tanhより一貫して速く収束しますlogistic

[0, 0] -> [-0.0862215901296476]
[0, 1] -> [0.9777578145233919]
[1, 0] -> [0.9777632805205176]
[1, 1] -> [0.12637838259658932]

2 つの関数の形状は次のようになります (クレジット:効率的な backprop )。

アクティベーション関数

  • 左は標準のロジスティック関数です: 1/(1+e^(-x)).
  • 右はtanh関数で、双曲線正接としても知られています。

tanhが原点に対して反対称であることは簡単にわかります。

効率的な Backpropによると 、

などの対称シグモイドtanhは、多くの場合、標準のロジスティック関数よりも速く収束します。

ウィキロジスティック回帰からも:

実務家は、逆伝播を使用してネットワークをトレーニングする場合、原点に関して非対称なシグモイド関数(双曲線タンジェントなど) を使用すると、収束が速くなることに注意してください。

ここで直感を説明する詳細については、効率的な Backpropを参照してください。

計算がより簡単な代替手段については、elliottを参照してください。tanh以下に黒い曲線として示します(青い曲線はオリジナルtanhです)。

ここに画像の説明を入力

ここに画像の説明を入力

上記のチャートから 2 つのことが際立っているはずです。まず、TANH は通常、エリオットよりもトレーニングに必要な反復が少なくて済みました。そのため、エンコーダーの場合、トレーニングの精度はエリオットほど良くありません。ただし、トレーニング時間に注意してください。Elliott は、実行しなければならなかった追加の反復を含め、TANH の半分の時間でタスク全体を完了しました。これは大きな改善であり、文字通り、この場合、Elliott はトレーニング時間を半分に短縮し、同じ最終的なトレーニング エラーを提供することを意味します。そこに到達するにはより多くのトレーニングの反復が必要ですが、反復あたりの速度は非常に速いため、トレーニング時間は半分に短縮されます.

于 2013-01-30T03:23:57.050 に答える