Est-il possible d'entraîner le réseau neuronal à résoudre des équations mathématiques?


24

Je suis conscient que les réseaux de neurones ne sont probablement pas conçus pour cela, mais en posant une question hypothétique, est-il possible de former le réseau de neurones profond (ou similaire) pour résoudre des équations mathématiques?

Donc, étant donné les 3 entrées: 1er numéro, signe d'opérateur représenté par le nombre (1 - +, 2 - -, 3 - /, 4 -* , etc.), et le 2e numéro, puis après la formation, le réseau devrait me donner les résultats valides.

Exemple 1 ( 2+2):

  • Entrée 1: 2; Entrée 2: 1( +); Entrée 3: 2; Production attendue:4
  • Entrée 1: 10; Entrée 2: 2( -); Entrée 3: 10; Production attendue:0
  • Entrée 1: 5; Entrée 2: 4( *); Entrée 3: 5; Production attendue:25
  • et donc

Ce qui précède peut être étendu à des exemples plus sophistiqués.

Est-ce possible? Si oui, quel type de réseau peut apprendre / réaliser cela?



1
Cela pourrait être pertinent - github.com/deepmind/mathematics_dataset
GaneshTata

Réponses:


21

Oui, c'est fait!

Cependant, les applications ne remplacent pas les calculatrices ou quelque chose comme ça. Le laboratoire auquel je suis associé développe des modèles de réseaux neuronaux de raisonnement équationnel pour mieux comprendre comment les humains pourraient résoudre ces problèmes. C'est une partie du domaine connu sous le nom de cognition mathématique . Malheureusement, notre site Web n'est pas très informatif, mais voici un lien vers un exemple d'un tel travail.

En dehors de cela, les travaux récents sur l'extension des réseaux de neurones pour inclure des mémoires externes (par exemple les machines de neurones de Turing) ont tendance à utiliser la résolution de problèmes mathématiques comme une bonne preuve de concept. En effet, de nombreux problèmes arithmétiques impliquent de longues procédures avec des résultats intermédiaires stockés. Voir les sections de cet article sur l'addition binaire longue et la multiplication.


pour moi non seulement des réseaux neuronaux mais des architectures neuronales avec mémoire externe. Les architectures comme NTM et DNC ​​peuvent utiliser pour résoudre des algorithmes comme le chemin le plus court car ils ont la capacité d'exécuter le processus itératif en gardant une trace de ce qui était fait (pas d'oubli catastrophique). Mais pour moi, utiliser un apprentissage simplement supervisé est tout simplement faux, comme mentionné dans la deuxième réponse.
Shamane Siriwardhana

Le premier lien est mort, avez-vous le remplaçant?
kenorb

Les deux liens ont juste fonctionné pour moi, quel excellent article!
Zakk Diaz

8

Pas vraiment.

Les réseaux de neurones sont bons pour déterminer les relations non linéaires entre les entrées lorsqu'il y a des variables cachées. Dans les exemples ci-dessus, les relations sont linéaires et il n'y a pas de variables cachées. Mais même s'ils n'étaient pas linéaires, une conception ANN traditionnelle ne serait pas bien adaptée pour y parvenir.

En construisant soigneusement les couches et en supervisant étroitement la formation, vous pourriez obtenir qu'un réseau produise de manière cohérente la sortie 4.01, par exemple, pour les entrées: 2, 1 (+) et 2, mais ce n'est pas seulement faux, c'est un élément intrinsèquement peu fiable application de la technologie.


5

1) C'est possible! En fait, c'est un exemple du cadre d'apprentissage en profondeur populaire Keras. Consultez ce lien pour voir le code source .

2) Cet exemple particulier utilise un réseau neuronal récurrent (RNN) pour traiter le problème comme une séquence de caractères, produisant une séquence de caractères qui forment la réponse. Notez que cette approche est évidemment différente de la façon dont les humains ont tendance à penser à résoudre des problèmes d'addition simples, et ce n'est probablement pas la façon dont vous voudriez qu'un ordinateur résout un tel problème. Généralement, il s'agit d'un exemple de séquence à séquence d'apprentissage en utilisant Keras. Lors de la gestion d'entrées séquentielles ou chronologiques, les RNN sont un choix populaire.


1

Oui - il semblerait qu'il soit maintenant possible d'en faire plus est requis à partir de l'exemple que vous avez donné, cet article décrit une solution DL à un problème beaucoup plus difficile - générer le code source d'un programme décrit en langage naturel .

Ces deux problèmes peuvent être décrits comme des problèmes de régression (c'est-à-dire que le but est de minimiser certaines fonctions de perte sur l'ensemble de validation), mais l'espace de recherche dans le cas du langage naturel est beaucoup plus grand.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.