Czy można wyszkolić sieć neuronową do rozwiązywania równań matematycznych?

24

Zdaję sobie sprawę, że sieci neuronowe prawdopodobnie nie są do tego przystosowane, jednak pytając hipotetycznie, czy można trenować głęboką sieć neuronową (lub podobną) w celu rozwiązywania równań matematycznych?

Biorąc pod uwagę 3 dane wejściowe: 1. liczbę, znak operatora reprezentowany przez liczbę (1 - +, 2 - -, 3 - /, 4 - *itd.), A także 2. liczbę, a następnie po szkoleniu sieć powinna dać mi prawidłowe wyniki.

Przykład 1 ( 2+2):

  • Wejście 1: 2; Wejście 2: 1( +); Wejście 3: 2; Oczekiwany wynik:4
  • Wejście 1: 10; Wejście 2: 2( -); Wejście 3: 10; Oczekiwany wynik:0
  • Wejście 1: 5; Wejście 2: 4( *); Wejście 3: 5; Oczekiwany wynik:25
  • a więc

Powyższe można rozszerzyć na bardziej wyrafinowane przykłady.

Czy to jest możliwe? Jeśli tak, to jakiego rodzaju sieć może się tego nauczyć?

kenorb
źródło

Odpowiedzi:

21

Tak, zostało to zrobione!

Jednak aplikacje nie zastępują kalkulatorów ani niczego podobnego. Laboratorium, z którym jestem związany, opracowuje modele sieci neuronowej wnioskowania równościowego, aby lepiej zrozumieć, w jaki sposób ludzie mogą rozwiązać te problemy. Jest to część dziedziny znanej jako poznanie matematyczne . Niestety nasza strona internetowa nie jest zbyt pouczająca, ale oto link do przykładu takiej pracy.

Poza tym ostatnie prace nad rozszerzeniem sieci neuronowych o zewnętrzne magazyny pamięci (np. Neural Turing Machines) zwykle używają rozwiązywania problemów matematycznych jako dobrego dowodu koncepcji. Wynika to z faktu, że wiele problemów arytmetycznych wymaga długich procedur z zapisanymi wynikami pośrednimi. Zobacz sekcje tego artykułu na temat długiego dodawania i mnożenia binarnego.

zergylord
źródło
dla mnie nie tylko sieci neuronowe, ale architektury neuronowe z pamięcią zewnętrzną. Architektury takie jak NTM i DNC mogą używać do rozwiązywania algorytmów takich jak najkrótsza ścieżka, ponieważ mają one możliwość wykonywania iteracyjnego procesu poprzez śledzenie tego, co zostało zrobione (bez katastrofalnego zapominania). Ale dla mnie korzystanie z nadzorowanego uczenia się jest po prostu błędne, jak wspomniano w drugiej odpowiedzi.
Shamane Siriwardhana
Pierwszy link nie działa, czy masz zamiennik?
kenorb
Oba linki właśnie dla mnie zadziałały, co za świetny artykuł!
Zakk Diaz
8

Nie całkiem.

Sieci neuronowe są dobre do określania nieliniowych relacji między wejściami, gdy istnieją ukryte zmienne. W powyższych przykładach relacje są liniowe i nie ma żadnych ukrytych zmiennych. Ale nawet gdyby były nieliniowe, tradycyjny projekt ANN nie nadawałby się do tego.

Ostrożnie konstruując warstwy i ściśle nadzorując szkolenie, możesz uzyskać sieć, która konsekwentnie produkuje wynik 4.01, powiedzmy, dla danych wejściowych: 2, 1 (+) i 2, ale to nie tylko źle, to z natury zawodna niewiarygodna zastosowanie technologii.

dynrepsys
źródło
5

1) Jest to możliwe! W rzeczywistości jest to przykład popularnej platformy do głębokiego uczenia się Keras. Sprawdź ten link, aby zobaczyć kod źródłowy .

2) Ten konkretny przykład wykorzystuje rekurencyjną sieć neuronową (RNN) do przetworzenia problemu jako sekwencji znaków, tworząc sekwencję znaków, które tworzą odpowiedź. Zauważ, że to podejście różni się oczywiście od tego, jak ludzie myślą o rozwiązywaniu prostych problemów z dodawaniem i prawdopodobnie nie chciałbyś, aby komputer rozwiązał taki problem. Przeważnie jest to przykład uczenia sekwencyjnego za pomocą Keras. Podczas obsługi wejść sekwencyjnych lub szeregów czasowych popularnym wyborem są numery RNN.

użytkownik3390629
źródło
1

Tak - wydaje się, że teraz można osiągnąć więcej, ponieważ przykład, który podałeś w tym dokumencie, opisuje rozwiązanie DL znacznie trudniejszego problemu - generowanie kodu źródłowego dla programu opisanego w języku naturalnym .

Oba z nich można opisać jako problemy z regresją (tj. Celem jest zminimalizowanie funkcji utraty w zestawie walidacyjnym), ale przestrzeń wyszukiwania w przypadku języka naturalnego jest znacznie większa.

NietzscheanAI
źródło