Я знаю, что нейронные сети, вероятно, не предназначены для этого, хотя и гипотетически спрашивают, возможно ли обучить глубокую нейронную сеть (или подобную) для решения математических уравнений?
Итак, учитывая 3 входа: 1-й номер, знак оператора, представленный номером (1 - +
, 2 - -
, 3 - /
, 4 - *
и т. Д.), И 2-й номер, то после обучения сеть должна дать мне действительные результаты.
Пример 1 ( 2+2
):
- Вход 1
2
:; Вход 2:1
(+
); Вход 32
:; Ожидаемый результат:4
- Вход 1
10
:; Вход 2:2
(-
); Вход 310
:; Ожидаемый результат:0
- Вход 1
5
:; Вход 2:4
(*
); Вход 35
:; Ожидаемый результат:25
- и другие
Вышеизложенное можно распространить на более сложные примеры.
Это возможно? Если да, то какая сеть может научиться / достичь этого?
neural-networks
math
kenorb
источник
источник
Ответы:
Да, это было сделано!
Тем не менее, приложения не должны заменить калькуляторы или что-то в этом роде. Лаборатория, с которой я связан, разрабатывает нейронные модели эквационального мышления, чтобы лучше понять, как люди могут решить эти проблемы. Это часть области, известной как математическое познание . К сожалению, наш сайт не очень информативен, но вот ссылка на пример такой работы.
Кроме того, недавняя работа по расширению нейронных сетей для включения внешних хранилищ памяти (например, машин нейронного Тьюринга), как правило, использует решение математических задач в качестве хорошего доказательства концепции. Это связано с тем, что многие арифметические задачи включают в себя длинные процедуры с сохраненными промежуточными результатами. Смотрите разделы этой статьи о длинном двоичном сложении и умножении.
источник
На самом деле, нет.
Нейронные сети хороши для определения нелинейных отношений между входами, когда есть скрытые переменные. В приведенных выше примерах отношения являются линейными, и нет скрытых переменных. Но даже если бы они были нелинейными, традиционный дизайн ANN не был бы хорошо подходящим для достижения этой цели.
Тщательно создавая слои и строго следя за обучением, вы можете получить сеть, которая будет последовательно генерировать выходные данные 4.01, скажем, для входных данных: 2, 1 (+) и 2, но это не только неправильно, это по своей сути ненадежно применение технологии.
источник
1) Это возможно! На самом деле, это пример популярного фреймворка глубокого обучения Keras. Проверьте эту ссылку, чтобы увидеть исходный код .
2) Этот конкретный пример использует рекуррентную нейронную сеть (RNN) для обработки проблемы как последовательности символов, создавая последовательность символов, которые формируют ответ. Обратите внимание, что этот подход, очевидно, отличается от того, как люди склонны думать о решении простых задач сложения, и, вероятно, не так, как вы бы хотели, чтобы компьютер решал такую проблему. В основном это пример последовательности для обучения последовательности с использованием Keras. При обработке последовательных или временных рядов RNN являются популярным выбором.
источник
Да, может показаться, что теперь возможно достичь большего, чем требуется на примере, который вы дали в этой статье, описывает решение DL для значительно более сложной проблемы - генерации исходного кода для программы, описанной на естественном языке .
Оба из них могут быть описаны как проблемы регрессии (т.е. цель состоит в том, чтобы минимизировать некоторую функцию потерь в наборе проверки), но пространство поиска в случае естественного языка намного больше.
источник
Есть довольно хорошо зарекомендовавшая себя область автоматического доказательства теорем . Скорее всего, это включает решение уравнений, но не обязательно включает ИИ. Этот пост от Cross Validated stackexchange содержит дополнительную информацию по этой теме.
источник