Чи можна навчити нейронну мережу розв’язувати математичні рівняння?


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/mathematics_dataset
GaneshTata

Відповіді:


21

Так, це зроблено!

Однак програми не повинні замінювати калькулятори чи щось подібне. Лабораторія, з якою я пов’язана, розробляє моделі нейронної мережі з рівняльних міркувань, щоб краще зрозуміти, як люди можуть вирішити ці проблеми. Це частина поля, відомого як Математичне пізнання . На жаль, наш веб-сайт не надзвичайно інформативний, але ось посилання на приклад такої роботи.

Крім того, останні роботи по розширенню нейронних мереж для включення зовнішніх сховищ пам’яті (наприклад, Нейронні машини Тюрінга), як правило, використовують рішення математичних завдань як хороший доказ концепції. Це тому, що багато арифметичних проблем пов'язані з довгими процедурами із збереженими проміжними результатами. Дивіться розділи цієї статті про довге двійкове додавання та множення.


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

Перша посилання мертва, у вас є заміна?
kenorb

Обидва посилання просто працювали для мене, яка чудова папір!
Zakk Diaz

8

Не зовсім.

Нейронні мережі хороші для визначення нелінійних зв’язків між входами, коли є приховані змінні. У наведених вище прикладах зв'язки лінійні, і прихованих змінних немає. Але навіть якби вони були нелінійними, традиційний дизайн ANN був би не годиться для цього.

Ретельно будуючи шари і ретельно контролюючи навчання, ви можете отримати мережу для послідовного отримання результатів 4.01, скажімо, для входів: 2, 1 (+) і 2, але це не тільки неправильно, це по суті ненадійне. застосування технології.


5

1) Можна! Насправді, це приклад популярної програми глибокого навчання Keras. Перегляньте це посилання, щоб побачити вихідний код .

2) Цей конкретний приклад використовує періодичну нейронну мережу (RNN) для обробки проблеми як послідовності символів, створюючи послідовність символів, що утворюють відповідь. Зауважте, що цей підхід, очевидно, відрізняється від того, як люди схильні думати про вирішення простих проблем із додаванням, і, ймовірно, не так, як ви хотіли б, щоб комп'ютер вирішив таку проблему. Переважно це приклад послідовності навчання послідовності за допомогою Кераса. При обробці послідовних або часових рядів введеннями, RNN - популярний вибір.


1

Так - здавалося б, що зараз можна досягти більшого, потрібно з прикладу, який ви наводили в цій роботі, описує рішення DL значно складнішої проблеми - генерування вихідного коду для програми, описаної природною мовою .

І те і інше можна охарактеризувати як проблеми регресії (тобто мета - мінімізувати деяку функцію втрат на наборі перевірки), але простір пошуку в природній мові значно більший.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.