Обучение нейронных сетей

Решил попробовать написать нейронную сеть с обратным распространением ошибки. Формулы брал с этой статьи https://m.habr.com/ru/post/198268/.

После того, как закончил, решил проверить её на чём-то, а именно на выводе входов. То есть, у меня есть 4 входа и 4 выхода, и если я подам на вход 1 1 0 0, то и на выходе должно быть 1 1 0 0. Но моя нейронка с этим не справляется.

Не могу найти ошибку. Вывожу среднее значение суммы квадратичных ошибок и оно каждый раз останавливается на 0.38.

Я понимаю, что мой код на 300+ строк никто не будет смотреть, по этому хочу попросить привести мне в пример простые задачи для нейронки, которые у Вас правильно отрабатывали с n слоями. Может так я смогу найти закономерность, а соответственно и ошибку. Или же сказать мне, в чём может быть ошибка, когда среднее значение останавливается на одном и том-же каждый раз.


Ответы (3 шт):

Автор решения: Константин

тренируйте на логическое И,Или,Xor.

→ Ссылка
Автор решения: Константин

Я сжал по методу гистограммы так:

X = [[0, 0, 0], [0, 1, 1], [0, 0, 1], [1, 1, 1],[0, 1, 0]]
Y = [[0, 0, 0], [0, 1, 1], [0, 0, 1], [1, 1, 1],[0, 1, 0]]
X_gist = [[0, 1/7]]
Y_gist = [[0, 1/7]]

Обучалась на сжатых,проверялась на несжатых,при этом сеть была (3, 2, 3).Для сжатых вектор дополнил нулем.С REKU точность на несжатых==40% то есть узнает 2 вектора из 5-ти.

→ Ссылка
Автор решения: Константин

Обучил свою сеть на 100% со сложными векторами,только там была бинарная классификация,было сжатие,были биасы и параметрический тангенс(параметрический сигмоид с alpha=0.056 только на 60%).Вот TAN:

TAN(x)=alpha*tanh(beta*alpha)
TAN_DERIV(x)=beta/alpha(alpha*alpha-TAN(x)*TAN(x))
гда alpha=1.7159, beta=2/3

X = [[0, 0, 0], [0, 1, 1], [0, 0, 1], [1, 1, 1],[0, 1, 0]]
Y = [[0], [1], [1], [1],[0]]
X_my = [[1, 1/3, 1/3]]
Y_my = [[1/3]]
fit(b_c_new, nn_params, None, X_my, Y_my, X, Y, 100)

Рандомностью при инициализации весов не пользуюсь.

→ Ссылка