Я работаю над внедрением алгоритма обратного распространения. Сначала я работал над обучением своей сети для решения XOR, чтобы убедиться, что он работает правильно, прежде чем использовать его для моего дизайна. Прочитав this, я решил сначала обучить его, чтобы решить И ворота. Я использую sigmoid как функцию передачи и MSE для вычисления общей ошибки. Я использовал разные курсы обучения, которые варьировались от 0,01 до 0,5. Я тренировал сеть несколько раз каждый раз для разных итераций от 100 итераций до 1000 итераций. Минимальная полная ошибка, которую я получил, составляет 0,08. Это приемлемая ошибка?Нейронная сеть для решения AND
Мой второй вопрос, следует ли использовать порог вместо сигмоида для решения И ворот? если да, то какой подходящий порог?
В-третьих, следует ли установить лимит на начальные веса, например, betwen -1 и 1 ??
Заранее спасибо.
EDIT 1
Я думаю, что выход странно здесь выход после первой итерации:
Target: 0.0 Output: 0.5314680723170211
Target: 0.0 Output: 0.7098671414869142
Target: 0.0 Output: 0.625565435381579
Target: 1.0 Output: 0.7827456263767251
и выход после 400-й итерации:
Target: 0.0 Output: 0.2826892072063843
Target: 0.0 Output: 0.4596476713717095
Target: 0.0 Output: 0.3675222634971935
Target: 1.0 Output: 0.5563197014845178
EDIT 2
Вот часть моего кода, который делает обратное распространение:
for(int i=0;i< currentLayer.getSize();i++)
{
temp = currentLayer.getAt(i);
err=temp.getOutput()*(1-temp.getOutput())*outErr[i];
temp.setError(roundTwoDecimals(err));
}
for (int i=0;i<currentLayer.getSize();i++)
{
temp = currentLayer.getAt(i); // get a neuron at the output layer
// update the connections
for (int j=0 ;j<temp.getInConnections().size();j++)
{
inputCon= temp.getInputConnectionAt(j);
newW=inputCon.getWeight()+ inputCon.getDst().getError()*inputCon.getInput()*this.learningRate;
inputCon.setWeight(roundTwoDecimals(newW));
}
// now update the bias
temp.setBias(temp.getBias()+(this.learningRate*temp.getError()));
}
Да, я включаю в себя предвзятость. Это неправильно? – Alaa
Я отредактировал свой вопрос, не могли бы вы его увидеть? – Alaa
Нет, включая предубеждение - хорошая идея! Я просто хотел убедиться, что вы были. Я согласен, что это немного странно (хотя и не совсем невероятно), что выход для последнего набора входов уменьшается. В противном случае это все выглядит примерно так, как вы ожидали бы - выход начинается довольно неточно, но постепенно идет в правильном направлении. – seaotternerd