Пример реализации простой нейросети для решения частного случая квадратного уравнения
Метод обучения - обратное распространение ошибки.
Для входов нейросети предназначен справочник "Виды входов нейрона".
В нашем случае у нейрона будет 3 входа A, B и С для моделирования решения квадратного уравнения: A^2 + B^2 = C.
Будем обучать сеть решать частный случай: 3^2 + 4^2 = 25
Соответственно логика обучения такая: На вход сети подаем A = 3, B = 4 и C = 25.
Сеть может выдавать результат от 0 до 1. Тогда, если на входы A и B всегда подавать 3 и 4, а на C - разные значения от 0 до 50, например, то сеть должна выдавать разные результаты. Условимся, что при правильном решении равном 25 сеть должна выдавать 0.5, а при 24 или 26 соответственно отклоняться от правильного решения в сторону до 0 или до 1, т.е. например выдавать 0.49 или 0.51.
1. В обработке создать нейроны по входам (количество входов соответствует справочнику Виды входов нейрона и равно 3 - А, B и С) нажмем кнопку "Удалить всю сеть".
2. Создадим первый слой из 3 нейронов. Номер слоя = 1, количество нейронов = 3. Нажимаем кнопку "Создать слой".
3. Создадим 2 результирующий слой из 1 нейрона. Номер слоя = 2, количество нейронов = 1. Нажмем кнопку "Создать слой".
4. Обучим сеть. learning rate = 0.1, Количество эпох = 100. Входы = 3, 4 и 25. Нажмем кнопку "Обучение" пару-тройку раз.
Видим, что с параметром learning rate = 0.1 сеть учится медленно - результат выхода почти не меняется.
5. Поменяем learning rate на равный 1. learning rate = 1.
6. Нажмем кнопку "Обучение" пару тройку раз.
Видим, что каждый раз результат меняется примерно на 0.1. Это примерно нас устраивает.
7. Нажимаем кнопку "Обучение" много раз, пока результат максимально не приблизится к нужному = 0.5
Я нажал кнопку "Обучение" несколько раз, пока результат не стал равен Выход слоя № 2 = 0,502337251130515574371506871.
На этом я остановлюсь. Примерно = 0.5. Поставлю learning rate = 0.1 и обучу сеть еще несколько раз.
8. Потом нажму кнопку "Решение уравнения". Получаются следующие результаты:
Для решения C = 24 вероятность равна: Выход слоя № 2 = 0,50224931433802282343940104
Для решения C = 25 вероятность равна: Выход слоя № 2 = 0,502251120153580808663836204
Для решения C = 26 вероятность равна: Выход слоя № 2 = 0,502252646179899385421301948
То есть правильное решение = (Выход слоя № 2 = 0,502251120153580808663836204), а побочные решения соответственно отклоняются.
Вот как-то примерно так и работают нейросети.
Вывод я бы из всего этого сделал такой. Если задачу можно решить с помощью точной математики, то лучше делать это нормальной математикой, но если задача сложная и точную формулу придумать трудно, то можно попробовать нейросеть.