Können neuronale Netze verwendet werden, um Algorithmen zu entwickeln?

9

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 tGstst

Einerseits wissen wir, dass die Rechenleistung neuronaler NetzeT.C.0 . 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 0T.C.0N.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?

domotorp
quelle
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
Lev Reyzin

Antworten:

2

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:

In der Tat zeigt J. Stephen Judd 1988, dass das folgende Problem NP-hart ist:

Gibt es bei einem allgemeinen neuronalen Netzwerk und einer Reihe von Trainingsbeispielen eine Reihe von Kantengewichten für das Netzwerk, damit das Netzwerk für alle Trainingsbeispiele die richtige Ausgabe liefert?

Judd zeigt auch, dass das Problem NP-schwer bleibt, selbst wenn nur ein Netzwerk die korrekte Ausgabe für nur zwei Drittel der Trainingsbeispiele erzeugen muss, was impliziert, dass selbst ein ungefähres Training eines neuronalen Netzwerks im schlimmsten Fall an sich schwierig ist. 1993 verschlimmern Blum und Rivest die Nachrichten: Selbst ein einfaches Netzwerk mit nur zwei Schichten und drei Knoten ist NP-schwer zu trainieren!

Mohammad Al-Turkistany
quelle
1
Ich sehe nicht wirklich, wie dies meine Frage beantwortet.
Domotorp
Bevor Sie den Beitrag bearbeitet haben, geht es bei Ihrer ersten Frage um das Training von NN. Seit Sie das CC-Tag hinzugefügt haben, zeigt meine Antwort, dass es schwierig ist, NN zu trainieren, unabhängig davon, ob Ihr algorithmisches Problem in P oder NPC liegt
Mohammad Al-Turkistany
Es tut mir leid, wenn ich vage war.
Domotorp
0

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.

Warum ist Schachspielen einfacher als Dijkstra oder Graphisomorphismus?

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.

usul
quelle
Ich denke nicht, dass eine Antwort einen Unterschied macht - zwei Spieler können Dijkstra spielen, indem sie gegeneinander antreten und einen kürzeren Weg finden. Skalierbarkeit könnte ein ernsthafteres Problem sein. Glauben Sie, dass NNs lernen können, wie man NIM spielt?
Domotorp
@domotorp, ich denke, es gibt einen großen konzeptionellen und praktischen Unterschied zwischen korrekten Algorithmen und falschen, aber ungefähren Heuristiken. Sie haben nicht gefragt, warum Schach schwieriger ist als ungefähre kürzeste Wege, Sie haben gefragt, warum Schach schwieriger ist als Dijkstra, was nachweislich 100% der Zeit bei allen Eingabegrößen korrekt ist. Re: nim, keine Ahnung; Sie benötigen eine NN-Architektur, die zunächst beliebig große Eingaben akzeptiert ...
usul
0

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.

CinchBlue
quelle
-3

"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.

riemann77
quelle
Ich denke, eine optimale Strategie für ein geeignetes Spiel ist die gleiche wie ein optimaler Algorithmus für das entsprechende Problem.
Domotorp
@domotorp "Strategie" ist eher eine Heuristik als ein Algorithmus
riemann77
-6

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.

Francis H Erdman III
quelle