Я реализовал многослойный персептрон и вначале разработал метод обучения, чтобы взять определенное количество эпох для обучения. Я натренировал сеть против логического элемента XOR, и большую часть времени сеть узнала, как решить проблему, но время от времени сеть изучала только два обучающих примера и зависала на двух других.
Сначала я считал это неважным, но позже я хотел изменить метод обучения, чтобы он останавливался после того, как ошибка окажется ниже некоторого принятого значения ошибки, которое я выберу. Теперь сеть иногда возвращается с тренировки, а иногда застревает, как я упоминал выше. Это нормально, многослойный персептрон просто не будет иногда учиться правильно или это ошибка в моей реализации.
Если это имеет значение, реализация находится на C ++, а многослойный персептрон является стандартной нейронной сетью обратного распространения с обратной связью; 2 входных нейрона, 2 нейрона скрытого слоя, 1 выходной нейрон.
Должен ли я использовать два выходных нейрона, и если да, какие значения будут.
Я предполагаю, что это не было ни ошибкой в моей реализации, ни свойством персептронов, я смог решить проблему, добавив еще два нейрона скрытого слоя, хотя я слышал, что эмпирическое правило заключалось в том, чтобы держать количество нейронов скрытого слоя под количество входных нейронов.
Других решений пока нет …