以下のようなプログラムを書いたのですが、何故かプログラムが動きません。
どのように改善すれば良いのでしょうか?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test2</title>
</head>
<body>
<script type="text/javascript">
var S1 = [0,0,1,1];
var S2 = [0,1,0,1];
var T = [0,1,1,0];
var z11,z12,z21,z22,z31,z32,w1,w2,w3,U1-1,U1-2,U2,A2,A1,Y,i,E,j;
i=z11=z12=z21=z22=z31=z32=w1=w2=w3=U1-1=U1-2=U2=A1=A2=Y=E=j=0;
w1= Math.random();
w2= Math.random();
w3= Math.random();
z11= Math.random();
z12= Math.random();
z21= Math.random();
z22= Math.random();
z31= Math.random();
z32= Math.random();
var ep = 0.1;
function sigmoid(x){
return 1/(1 + Math.exp(x));
};
for(i = 0;i < 1000; i++){
j = i%4;
//中間層1つめの出力
U1-1 = z11 * S1[j] + z21 * S2[j] + z31;
A1 = sigmoid(-U1-1);
//中間層2つめの出力
U1-2 = z12 * S1[j] + z22 * S2[j] + z32;
A2 = sigmoid(-U1-2);
//出力層の出力
U2 = w1 * A1 + w2 * A2 + w3;
Y = sigmoid(-U2);
E = 1/2 * (Y - T[j])*(Y - T[j]);
/*if(j == 3){
console.log(E);
}*/
z11 = z11 - ep * (Y - T[j]) * Y * (1 - Y) * w1 * A1 * (1 - A1) * S1[j];
z21 = z21 - ep * (Y - T[j]) * Y * (1 - Y) * w1 * A1 * (1 - A1) * S2[j];
z31 = z31 - ep * (Y - T[j]) * Y * (1 - Y) * w1 * A1 * (1 - A1);
z12 = z12 - ep * (Y - T[j]) * Y * (1 - Y) * w2 * A2 * (1 - A2) * S1[j];
z22 = z22 - ep * (Y - T[j]) * Y * (1 - Y) * w2 * A2 * (1 - A2) * S2[j];
z32 = z32 - ep * (Y - T[j]) * Y * (1 - Y) * w2 * A2 * (1 - A2);
w1 = w1 - ep * (Y - T[j]) * Y * (1 - Y) * A1;
w2 = w2 - ep * (Y - T[j]) * Y * (1 - Y) * A2;
w3 = w3 - ep * (Y - T[j]) * Y * (1 - Y);
}
</script>
<p>
<script type="text/javascript">
document.write(ep);
</script>
<script type="text/javascript">
document.write(sigmoid(w1*sigmoid(-z31)+w2*sigmoid(-z32)+w3));
</script>
<script type="text/javascript">
document.write(sigmoid(w1*sigmoid(-(z21+z31))+w2*sigmoid(-(z22+z32))+w3));
</script>
<script type="text/javascript">
document.write(sigmoid(w1*sigmoid(-(z11+z31))+w2*sigmoid(-(z12+z32))+w3));
</script>
<script type="text/javascript">
document.write(sigmoid(w1*sigmoid(-(z11+z21+z31))+w2*sigmoid(-(z12+z22+z32))+w3));
</script>
</p>
</body>
</html>