数日前、私は、ニューラルネットワークに関する、私はAIの講義で、今年学んだことを実際に入れてみました。私は、2つのニューロンだけで入力信号を複製する単純なものを作ろうとしました。 http://imgur.com/a/RixAH(フランス語のコメントは申し訳ありませんが、実際には重要ではありません)バックプロパゲーションは
奇妙なことは、収束していることですが、単純なバイナリ入力信号の場合は、次のようになります。信号が0の場合、ネットワークは〜0を効果的に送信しますが、1の場合は〜0.5を送信し、理由を理解できません。プラス、私はそれを働かせるために、非常に高い(〜100)学習率を設定する必要があります、再び私は理由を知らない。
public class Main
{
final static double R = 100;
public static void main(String[] args)
{
double w1 = Math.random(), w2 = Math.random();
for (int iter = 1; iter <= 100; iter++)
{
int x;
if (Math.random() >= 0.5)
{
x = 1;
}
else
{
x = 0;
}
double p1 = x * w1;
double y = 1/(1 + Math.exp(-p1));
double p2 = y * w2;
double z = 1/(1 + Math.exp(-p2));
double P = -0.5 * Math.pow(x - z, 2);
double dP1 = (x - z) * z * (1 - z) * w2 * y * (1 - y) * x;
double dP2 = (x - z) * z * (1 - z) * y;
w1 += R * dP1;
w2 += R * dP2;
System.out.println("x = " + x + ", z = " + z + ", P = " + P);
}
}
}
問題から来ることができ、あなたが任意のアイデアを持っていますか:
ここで私はネットワークをテストするために使用されるJavaコードですか?
ありがとうございました。
LeChocdesGitans
編集:私は最終的にそれが働いて得ることができた
(私は、ネットワーク構成のためのあなたのアドバイスに従っ)。ネットワークのレイアウトを変更した直後には機能しなかったので、実装ミスもあったと思いますが、私はそれをやり直しました。文字認識のように面白いことができます私のアプリケーションがどれほど基本的なものかを比較してください。
もう一度アドバイスをいただきありがとうございます。
私は興味がありますが、なぜそれぞれ1つのニューロンで2つのレイヤーを使用することにしましたか? – rpd
私は機械学習で多くの経験がないので、MITのニューラルネットワークに関するビデオで見た設定を使用しました。何が最高だと思いますか? – LeChocdesGitans
2つのパーセプトロンを使用した1つのレイヤーのセットアップは、おもちゃの例として、より機能的かつ「現実的」です。 – rpd