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ć?
neural-networks
math
kenorb
źródło
źródło
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło
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.
źródło
Istnieje dość dobrze ugruntowana dziedzina automatycznego dowodzenia twierdzeń . Najprawdopodobniej obejmuje to rozwiązywanie równań, ale niekoniecznie wymaga sztucznej inteligencji. Ten post z wymiany sprawdzonych stosów zawiera więcej informacji na ten temat.
źródło