0

Поскольку реализация алгоритма правильная (я проверил ее сотни раз), я думаю, что неправильно понял некоторые теоретические факты.
Я полагаю, что:
при условии, что J относится к стороне hiddenlayer и к выходному слою
∂E/∂wjk рассчитывается путем делать:
Моя нервная сеть RPROP застревает

outputNeuron[k].errInfo=(target[k]-outputNeuron[k].out)*derivate_of_sigmoid(outputNeuron[q].in);
∂E/∂wjk=outputNeuron[k].errInfo*hiddenNeuron[j].out;

Для ∂E/∂wij, где «i» относится к входному слою и «j» к скрытому слою, он немного длиннее.
Каждый блок скрыт (Zj, J = 1, ..., р) суммирует свои дельта-входы (от единиц в выходном слое),

errorInfo_in[j]=summation from k=1 to m(number of output units) of: outputNeuron[k].errInfo*w[j][k]

Затем я вычислить информацию об ошибке скрытого блока:

hiddenNeuron[j].errInfo=errorInfo_in[j]*derivated_sigmoid(hiddenNeuron[j].in);

Наконец ∂E/∂wij является:

hiddenNeuron[j].errInfo*x[i] (where x[i] is the output of an input unit)

я применяю RPROP, как описано здесь http://www.inf.fu-berlin.de/lehre/WS06/Musterererkennung/Paper/rprop.pdf
Для всего веса между входным и скрытым и скрытым выходом.
Я пытаюсь распознать буквы из «#» и «-», 9 (строки) x7 (столбцы).
MSE просто застрял в 172 после нескольких эпох.
Я знаю, что RPROP - это пакетное обучение, но я использую онлайн-обучение, потому что я читаю, что он работает в любом случае.

ответ

1

RPROP не работает с чистым онлайн-обучением, он может работать с мини-пакетным обучением, при условии, что мини-пакет достаточно большой. Абсолютное значение MSE является плохим индикатором чего-либо, особенно в пользовательских наборах данных, где значения золотого стандарта неизвестны.

Лучше всего протестировать недавно внедренные алгоритмы NN на простые вещи, такие как логические ворота (AND, OR, XOR), прежде чем перейти к чему-то более сложному. Таким образом, вы всегда будете уверены в своем коде и методологиях. Для задач распознавания символов вы также можете протестировать на хорошо известных наборах данных, таких как MNIST, где ожидаемые результаты известны, и вы можете сравнить свои результаты с предыдущей работой.

Для задач классификации обычно требуется измерить точность классификации, так как это намного лучший показатель производительности, чем MSE.