Я пытаюсь обучить персептрон для логической функции AND, используя правило обучения дельты. Но даже после конвергенции это неправильно классифицирует входы (на самом деле 1 вход). Не могли бы вы сказать мне, где я не прав: http://ideone.com/CDgTQEПравило тренировки дельты для тренировки персептрона
Это функция обучения используется:
public void trianWithDelta(Example[] examples){
for(int i=0;i<1000;++i){
dw1 = 0;
dw2 = 0;
for(Example ex:examples){
double o = computeOutput(ex);
double t = ex.o;
dw1 = dw1 + n*(t-o)*ex.x1;
dw2 = dw2 + n*(t-o)*ex.x2;
}
w1 += dw1;
w2 += dw2;
}
}
Учебные примеры (логическое И):
Example[] examples = new Example[]{
new Example(-1, -1, -1),
new Example(-1 , 1, -1),
new Example(1, -1, -1),
new Example(1, 1, 1)
};
Результаты: w1: +0,49999999999999994 w2: 0,5000000000000002
Испытания с использованием учебных примеров после обучения:
-1
1 (неверно)
-1