Nach den immer neueren Erfolgen neuronaler Netze beim Spielen von Brettspielen könnte das nächste Ziel, das wir uns gesetzt haben, nützlicher sein, als Menschen in Starcraft zu schlagen. Genauer gesagt fragte ich mich, ob
Können neuronale Netze trainiert werden, um klassische algorithmische Probleme zu lösen?
Hier meine ich, dass das Netzwerk zum Beispiel einen Eingabegraphen mit gewichteten Kanten und zwei angegebenen Eckpunkten und , und wir haben ihn gebeten, so schnell wie möglich einen kürzesten Pfad zu finden . Dann würde sich das neuronale Netzwerk wohl selbst entdecken und trainieren, um Dijkstra oder ähnliches zu verwenden.s t s t
Einerseits wissen wir, dass die Rechenleistung neuronaler Netze . Andererseits weiß ich nicht, ob dies unbedingt mit meiner Frage zusammenhängt. Trotzdem wissen wir für die meisten Probleme nicht, ob sie in gelöst werden können oder nicht. Zu sehen, ob sich ein neuronales Netzwerk selbst trainieren kann, könnte ein guter Indikator dafür sein, ob es einen schnellen Algorithmus gibt oder nicht. Wenn sich neuronale Netze beispielsweise nicht darauf trainieren können, SAT schnell zu lösen, ist es (noch wahrscheinlicher), dass . Ich frage mich, was ein neuronales Netzwerk mit GRAPHISOMORPHISMUS oder FAKTORISIERUNG tun würde. N P ⊄ T C 0
Das Extrahieren des Algorithmus ist natürlich eine ganz andere Frage. Ich vermute, Experten wissen, wie das geht, aber darüber zu diskutieren, ist nicht das Thema dieser Frage.
Hinzugefügt zwei Tage später: Nachdem ich die Antworten gesehen habe, möchte ich angeben, dass ich es gerne wissen würde, wenn Sie negativ antworten
Warum ist Schachspielen einfacher als Dijkstra oder Graphisomorphismus?
Antworten:
Laut diesem Blog von Reza Zadeh ist das Training eines neuronalen Netzwerks, um selbst für nur zwei Drittel der Trainingsbeispiele eine korrekte Ausgabe zu erzielen, rechenintensiv:
quelle
Dies ist keine vollständige Antwort und ich bin nicht sehr erfahren in neuronalen Netzen, aber vielleicht hilfreich.
NNs erhalten im Wesentlichen eine Eingabe und erzeugen eine Antwort. Sie werden dann durch Übung trainiert, um ähnliche Antworten auf "ähnliche" Eingaben in der Domäne zu erzeugen, z. B. dasselbe Etikett für Bilder desselben Tieres oder hohe Bewertungen für "gute" Schachpositionen, bei denen gut hohe Gewinnchancen bedeutet.
Wie ich bereits sagte, sind neuronale Netze ein ungleichmäßiges Berechnungsmodell, das völlig anders funktioniert als schrittweise Algorithmen, die auf Turing-Maschinen ausgeführt werden. Stellen Sie sich sie stattdessen als "weiche" Schaltkreise vor, die kontinuierliche Mathematik anstelle von Booleschen verwenden und optimiert oder trainiert werden können und sich irren dürfen.
Teilweise ist es der Unterschied, jemanden zu bitten, eine Frage nach besten Kräften zu beantworten, und ihn um die richtige Antwort zu bitten, zusammen mit dem Beweis, dass sie richtig ist. Teilweise ist es der Unterschied zwischen der Lösung eines Problems mit fester Größe und der gleichzeitigen Lösung des Problems für alle möglichen Eingabegrößen.
Jedes Mal, wenn Dijkstra auf einer Instanz ausgeführt wird, die eine beliebige Größe haben kann, beweist dies implizit, dass die Ausgabe die einzig wahre und keine andere Antwort ist. Bei der Schach- und Bilderkennung gibt man die bestmögliche Antwort und Fehler werden toleriert. Darüber hinaus trainiert man nur Netzwerke, um diese Probleme jeweils einer Größe zu lösen. Ich glaube, wir wissen noch nicht, wie wir eine solche neuronale Netzlösung verallgemeinern können, um beispielsweise Problemfälle mit völlig unterschiedlichen Größen und Formen zu lösen.
Ich denke nicht, dass wir davon ausgehen sollten, dass neuronale Netze kürzeste Wege oder ähnliche algorithmische Probleme nicht lösen können, aber sie lösen Probleme auf eine grundlegend andere Weise als ein Schritt-für-Schritt-Algorithmus, der immer korrekt ist.
Zurück zur Ähnlichkeit zwischen neuronalen Netzen und Schaltkreisen: Beachten Sie, dass Schaltkreise seit Jahrzehnten untersucht werden. Angesichts der fehlenden Antworten auf (5) meiner vorherigen Frage wissen wir jedoch fast nichts darüber, wie man für einen bestimmten Zustand vollständig korrekte Schaltkreise konstruiert Problem außer durch Umwandlung eines einheitlichen Algorithmus (Turing Machine) in eine Schaltung.
quelle
Ich bin keineswegs ein Experte, aber ich verstehe noch nicht, warum nicht.
Neuronale Netze führen grundsätzlich eine Optimierung nach einem "Kosten-Nutzen-Modell" durch, das oft schon vorher bekannt ist. Darüber hinaus ist der Suchraum gut definiert, mit gültigen und ungültigen Bewegungen, die bekannt sind, und "Variationen", die einfach zu definieren sind. Selbst für AlphaZero und AlphaGo basieren die Kostenfunktionen wahrscheinlich auf der Gewinnrate und der daraus resultierenden Verteilung der Gewinnraten für alle möglichen Züge nach einem Zug oder einer Art Heuristik dafür.
Für die Entwicklung von Algorithmen fordern Sie das Programm im Wesentlichen auf, zu lernen, wie eine korrekte Zeichenfolge (mit einer bereits bekannten impliziten Codierungs- und Kostenfunktion) ausgegeben wird, die einem Programm entspricht, das "einen Algorithmus ausführt". Es gibt jedoch möglicherweise unendlich viele Algorithmen, mit denen Sie ein Programm implementieren können. Vielleicht möchten Sie also die richtigen "Fitness" -Metriken definieren.
Selbst für bestimmte Programme kann es jedoch schwierig sein, "Fitness" -Metriken zu definieren. Zeit? Raumnutzung? Quantifizierung von "Nebenwirkungen?" Optimalerweise generieren Sie "das kürzeste Programm", das nur das tut , was Sie möchten.
Ich nehme an, wenn Sie die richtigen Fitnessmetriken und Anpassungsalgorithmen finden, können Sie dies tun.
quelle
"Neuronale Netze" transformieren einen Vektor von einem dimensionalen Raum in einen anderen dimensionalen Raum. Sie sind also nichts weiter als hochgradig nichtlineare Funktionsapproximatoren. Selbst neuronale Netze verwenden Approximationsalgorithmen für ihre Verlustminimierung. Das Training neuronaler Netze für die Entwicklung neuer Algorithmen kommt jedoch nicht in Frage. tomas mikolov hat in diesem bereich einige arbeit mit stapelverstärkten wiederkehrenden neuronalen netzen geleistet, und ich habe auch von "neuronalen turingmaschinen" für diese domäne gehört. Das Finden optimaler Strategien war jedoch die Hauptursache für das Studium des Lernens zur Stärkung, das in gewissem Zusammenhang mit Ihrer Frage steht. Die Verwendung neuronaler Netze zur Entwicklung neuer Algorithmen ist jedoch zumindest in naher Zukunft nicht möglich.
quelle
Ich bin ein QA-Automatisierungsingenieur, beanspruche also kein Fachwissen in neuronalen Netzen, aber tautologisch kann NN selbst Algorithmen erstellen. Der Mensch selbst ist auf einer bestimmten Ebene NN, und wir erstellen Algorithmen. Es liegt also nahe, dass künstliche NN-Systeme, die wir erstellen, selbst Algorithmen erstellen können.
quelle