Обратное распространение ошибки на C++ или псевдокоде

Самый первый шаг ошибочный, надо так:

Вы похоже подверглись характерной иллюзии дурных учебников, которые в свою очередь подхватили розенблаттовскую блажь. Он путал нейроны с синапсами и сигналами. Нейроны - это устройства, включающие в себя линейную комбинацию и функцию активации, т.е. нейрон - это функция вида z = f(X*W). z, X и data - это все

сигналы

, которые поступают на синапсы и являются выходами активационных функций нейронов предыдущего слоя.

Нужно различать слои сигналов и слои нейронов. Слоев нейронов на единицу меньше, чем слоев сигналов. Когда говорят "трехслойный перцептрон", то имеют в виду три слоя сигналов и два слоя нейронов. Количество слоев активационных функций равно числу слоев нейронов (это следует из определения нейрона).

Розенблаттовская дурь превозобладает в учебниках: каждый сигнал называется нейроном. Однако более грамотным является кибернетический (системный) подход: нейрон - это система, т.е. функция.

Не надо на каждый сигнал навешивать активационную функцию, это не нейрон. Даже в дурных учебниках, кстати, к входным сигналам активационные функции не применяют. Просто они настолько сами запутались, что единицу считают нейроном смещения. Не существует никаких "нейронов смещения"! Есть только константа (единица), которая образует свободный член линейной комбинации. Это просто сигнал.

Сигналы - это слои переменных, которые находятся между слоями нейронов (=функций), ну или точнее они перемежаются друг с другом.

Добавлено через 14 минут

Соответственно некорректны выражения:

И вообще из-за этой путаницы в терминологии, шаги 4-7 неправильные.

Нужно пройтись по слоям

нейронов

и пересчитать их функции. Забудьте про эти слои сигналов (которые называют нейронами), это хрень собачья. И не надо ничего обнулять (шаг 4 в топку).

Как только справитесь с прямым распространением, можно будет смотреть дальше.

Добавлено через 21 минуту

Еще такая интересная инфа:

1. Когда говорят "входной слой", имеют в виду слой сигналов X. Тут

нет

нейронов и активационных функций.

2. Когда говорят "скрытый слой", имеют в виду слои промежуточных сигналов Z или h (кто как любит назначать переменные). У каждого скрытого слоя имеется соответствующий слой нейронов со своими активационными функциями, эти слои нейронов начинаются с самого первого, заканчиваются предпоследним.

3. Последний слой нейронов образует выходной слой сигналов Y.

4. Таким образом, у каждого слоя, кроме входного X, имеется свой слой нейронов.

Нарисуйте трехслойный перцептрон и разберитесь. Просто помните, что под слоями нейронов имеют в виду слои сигналов. Пускай они дурят, а вы будьте умнее.)))