私はニューラルネットワークで遊んでいます。私は自分自身を実装しました。学習アルゴリズムとしてRPROPを基本的なデザインと比較して唯一の「プラス」として使用するのは些細なフォワードネットワークです。ニューラルネットワークとXOR関数
MNISTや画像圧縮を試したときにネットワークの評価がうまくいくのですが、XOR関数と同じように単純なモデルを作成しようとすると、学習中にローカルミニマムにトラップされ、真理値表以下:
0 XOR 0 = 1.4598413968251171e-171
1 XOR 0 = 0.9999999999999998
0 XOR 1 = 0.9999999999999998
1 XOR 1 = 0.5
はしばしばトレーニング後の結果は、それが必要として正しい、時には1 XOR 1つの出力0.5の代わりに1です。それはXOR(1,1)では実際には常に起こるわけではありませんが、他の入力でも起こります。バックプロパゲーションの文章でXOR機能を「古典的」にすることは、私のネットワークがより複雑な(しかしおそらく非線形性の少ない)タスクをうまく学ぶように見えることを考えれば、ここで何が起こっているのだろうかと思います。
私の野生の推測は、それが偏見に何か間違っているということです。
ヒント?
注1:上のネットワークレイアウトは2 | 3 | 1ですが、さらに隠れたユニットを使用するとあまり変化しません。
注2:私は要旨に実装を置く:出力ユニットが正しく計算されませんでした直前NNのバイアス部:https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d
あなたはどの機能を使用していますか?共有することはできますか? – ACV
私はここに全体の実装をgisti-fiedしました:https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0dこれは非常に基本的なものです。 EDIT:ヘッダーファイルも追加されました。 – antirez
実際にテストすると、XOR(1,1)が失敗するだけでなく、0.5が出力されることが分かりました。 – antirez