Можно ли обучить нейронную сеть для решения математических уравнений?


24

Я знаю, что нейронные сети, вероятно, не предназначены для этого, хотя и гипотетически спрашивают, возможно ли обучить глубокую нейронную сеть (или подобную) для решения математических уравнений?

Итак, учитывая 3 входа: 1-й номер, знак оператора, представленный номером (1 - +, 2 - -, 3 - /, 4 - *и т. Д.), И 2-й номер, то после обучения сеть должна дать мне действительные результаты.

Пример 1 ( 2+2):

  • Вход 1 2:; Вход 2: 1( +); Вход 3 2:; Ожидаемый результат:4
  • Вход 1 10:; Вход 2: 2( -); Вход 3 10:; Ожидаемый результат:0
  • Вход 1 5:; Вход 2: 4( *); Вход 3 5:; Ожидаемый результат:25
  • и другие

Вышеизложенное можно распространить на более сложные примеры.

Это возможно? Если да, то какая сеть может научиться / достичь этого?



1
Это может быть актуально - github.com/deepmind/matmatics_dataset
GaneshTata

Ответы:


21

Да, это было сделано!

Тем не менее, приложения не должны заменить калькуляторы или что-то в этом роде. Лаборатория, с которой я связан, разрабатывает нейронные модели эквационального мышления, чтобы лучше понять, как люди могут решить эти проблемы. Это часть области, известной как математическое познание . К сожалению, наш сайт не очень информативен, но вот ссылка на пример такой работы.

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


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

Первая ссылка мертва, у вас есть замена?
Кенорб

Обе ссылки только что работали для меня, что за отличная статья!
Закк Диас

8

На самом деле, нет.

Нейронные сети хороши для определения нелинейных отношений между входами, когда есть скрытые переменные. В приведенных выше примерах отношения являются линейными, и нет скрытых переменных. Но даже если бы они были нелинейными, традиционный дизайн ANN не был бы хорошо подходящим для достижения этой цели.

Тщательно создавая слои и строго следя за обучением, вы можете получить сеть, которая будет последовательно генерировать выходные данные 4.01, скажем, для входных данных: 2, 1 (+) и 2, но это не только неправильно, это по своей сути ненадежно применение технологии.


5

1) Это возможно! На самом деле, это пример популярного фреймворка глубокого обучения Keras. Проверьте эту ссылку, чтобы увидеть исходный код .

2) Этот конкретный пример использует рекуррентную нейронную сеть (RNN) для обработки проблемы как последовательности символов, создавая последовательность символов, которые формируют ответ. Обратите внимание, что этот подход, очевидно, отличается от того, как люди склонны думать о решении простых задач сложения, и, вероятно, не так, как вы бы хотели, чтобы компьютер решал такую ​​проблему. В основном это пример последовательности для обучения последовательности с использованием Keras. При обработке последовательных или временных рядов RNN являются популярным выбором.


1

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

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.