нейронная сеть - обратное распространение, ошибка в обучении

после прочтения некоторых статей о нейронной сети (обратное распространение) я пытаюсь написать простую нейронную сеть самостоятельно .

Я решил, что нейронная сеть XOR, моя проблема в том, когда я пытаюсь обучить сеть, если я использую только один пример для обучения сети, скажем 1,1,0 (как input1, input2, targetOutput). после 500 поездов + - ответ сети 0,05. но если я пробую более одного примера (скажем, 2 разных или все 4 возможности), сеть стремится к 0,5 на выходе: ( Я искал в Google свои ошибки, но безрезультатно: S я постараюсь дать как можно больше подробностей, чтобы найти, что не так:

-ive пробовали сети с 2,2,1 и 2,4,1 (inputlayer, hiddenlayer, outputlayer).

-вывод для каждого нейронного канала, определенного:

double input = 0.0;
        for (int n = 0; n < layers[i].Count; n++)
            input += layers[i][n].Output * weights[n];

, в то время как 'i' - текущий уровень, а вес - все веса из предыдущего слоя.

- ошибка последнего слоя (выходного слоя) определяется следующим образом:

value*(1-value)*(targetvalue-value);

, в то время как «значение» - это нейронный вывод, а «targetvalue» - целевой вывод для текущего нейронного канала.

- ошибка для других нейронных сетей определяется следующим образом:

foreach neural in the nextlayer 
           sum+=neural.value*currentneural.weights[neural];

- все веса в сети адаптируются по этой формуле (вес t от neural -> neural 2)

weight+=LearnRate*neural.myvalue*neural2.error;

, в то время как LearnRate - это скорость обучения новых пользователей (определенная в моей сети 0,25). - смещение для каждой нейронной сети определяется следующим образом:

bias+=LearnRate*neural.myerror*neural.Bias;

bias is const value = 1 .

это почти все, что я могу подробно описать, как я уже сказал, цель вывода - 0.5 с различными примерами обучения: (

большое спасибо за вашу помощь ^ _ ^.

6
задан aliyaho 20 September 2011 в 00:55
поделиться