Ich habe eine Eingabe, die eine Liste ist, und die Ausgabe ist das Maximum der Elemente der Eingabeliste.
Kann maschinelles Lernen eine solche Funktion lernen, die immer das Maximum der in der Eingabe vorhandenen Eingabeelemente auswählt?
Dies mag als eine ziemlich grundlegende Frage erscheinen, aber es könnte mir ein Verständnis dafür geben, was maschinelles Lernen im Allgemeinen bewirken kann. Vielen Dank!
machine-learning
deep-learning
user78739
quelle
quelle
Antworten:
Vielleicht , aber beachten Sie, dass dies einer der Fälle ist, in denen maschinelles Lernen nicht die Antwort ist . Es besteht die Tendenz, maschinelles Lernen in Fällen zu versuchen, in denen regelbasierte Standardlösungen tatsächlich schneller, einfacher und im Allgemeinen genau die richtige Wahl sind: P
Bearbeiten : Ich schrieb ursprünglich als "Ja, aber beachten Sie, dass ...", aber dann fing an, mich selbst zu bezweifeln, da ich es noch nie gesehen hatte. Ich habe es heute Nachmittag ausprobiert und es ist auf jeden Fall machbar:
Die Ausgabe ist 0.74576, sodass die maximalen 74,5% der Zeit korrekt ermittelt werden. Ich habe keinen Zweifel, dass dies verbessert werden könnte, aber da ich sage, dass dies kein nützlicher Fall ist, würde ich ML empfehlen.
EDIT 2 : Eigentlich habe ich heute Morgen mit dem RandomForestClassifier von sklearn erneut gestartet und es lief deutlich besser:
Und hier sind es 94,4% der Proben, bei denen das Maximum korrekt identifiziert wurde, was in der Tat ziemlich gut ist.
quelle
@
, wie in@Marco13
). Zu der Frage: Ich denke, Ihre Aussage "Maschinelles Lernen ist nicht die Antwort" macht dies deutlich. Ich befürchte vor allem, dass zu viele Menschen bei der Verwendung von ML / DL / NNs nicht die erforderliche Sorgfalt anwenden , und insbesondere, wenn sie auf etwas stoßen, das so aussieht , als könnte es "ihr Problem lösen", ohne zu verstehen, warum es so scheint und somit ohne zu erkennen, wann eine "Lösung" nur ein Artefakt eines nicht so gut verstandenen Prozesses ist.Ja. Ganz wichtig ist, dass SIE sich für die Architektur einer Lösung für maschinelles Lernen entscheiden. Architekturen und Trainingsverfahren schreiben sich nicht von selbst; Sie müssen entworfen oder als Vorlage verwendet werden, und die Schulung dient dazu, eine Parametrisierung der Architektur zu ermitteln, die für eine Reihe von Datenpunkten geeignet ist.
Sie können eine sehr einfache Architektur erstellen, die tatsächlich eine maximale Funktion enthält:
Dabei sind a und b gelernte Parameter.
Bei genügend Trainingsbeispielen und einer angemessenen Trainingsroutine lernt diese sehr einfache Architektur sehr schnell, a auf 1 und b auf Null für Ihre Aufgabe zu setzen.
Maschinelles Lernen besteht häufig darin, mehrere Hypothesen über die Funktion und Transformation von Eingabedatenpunkten zu unterhalten und zu lernen, nur die Hypothesen beizubehalten, die mit der Zielvariablen korrelieren. Die Hypothesen sind explizit in der Architektur und den Unterfunktionen codiert, die in einem parametrisierten Algorithmus verfügbar sind, oder als die Annahmen, die in einem "parameterlosen" Algorithmus codiert sind.
Beispielsweise ist die Wahl der Verwendung von Punktprodukten und Nichtlinearitäten, wie sie in dem Vanille-Neuronalnetzwerk ML üblich sind, etwas willkürlich; es drückt die umfassende Hypothese aus, dass eine Funktion unter Verwendung einer vorbestimmten zusammengesetzten Netzwerkstruktur aus linearen Transformationen und Schwellenfunktionen konstruiert werden kann. Verschiedene Parametrisierungen dieses Netzwerks verkörpern verschiedene Hypothesen darüber, welche linearen Transformationen verwendet werden sollen. Jede Toolbox von Funktionen kann verwendet werden, und es ist die Aufgabe eines Maschinenschülers, durch Differenzierung oder Ausprobieren oder ein anderes wiederholbares Signal herauszufinden, welche Funktionen oder Merkmale in seinem Array eine Fehlermetrik am besten minimieren. In dem oben gegebenen Beispiel reduziert sich das gelernte Netzwerk einfach auf die maximale Funktion selbst, wohingegen ein undifferenziertes Netzwerk alternativ eine minimale Funktion "lernen" könnte. Diese Funktionen können auf andere Weise ausgedrückt oder angenähert werden, wie in der linearen oder neuronalen Netzregressionsfunktion in einer anderen Antwort. In der Summe kommt es wirklich darauf an, welche Funktionen oder LEGO-Teile Sie in Ihrer ML-Architektur-Toolbox haben.
quelle
max()
(aus beschrifteten Daten) finden (/ lernen / ableiten ) kann. Sie sagten nicht " Angesichts dessen, dass Sie bereitsmax()
einen Baustein haben"Ja - Maschinelles Lernen kann lernen, das Maximum in einer Liste von Zahlen zu finden.
Hier ist ein einfaches Beispiel für das Lernen, den Index des Maximums zu finden:
quelle
Lernalgorithmen
Anstatt eine Funktion als Berechnung zu lernen, die von einem vorwärtsgerichteten neuronalen Netz durchgeführt wird, gibt es eine ganze Forschungsdomäne in Bezug auf Lernalgorithmen aus Probendaten. Beispielsweise könnte man so etwas wie eine neuronale Turing-Maschine oder eine andere Methode verwenden, bei der die Ausführung eines Algorithmus durch maschinelles Lernen an seinen Entscheidungspunkten gesteuert wird. Spielzeugalgorithmen wie das Finden eines Maximums oder das Sortieren einer Liste oder das Umkehren einer Liste oder das Filtern einer Liste werden häufig als Beispiele in der Algorithmuslernforschung verwendet.
quelle
Ich werde gebildete Designs von meiner Antwort ausschließen. Nein, es ist nicht möglich , einen Out-of-the-Box-Ansatz für maschinelles Lernen (ML) zu verwenden, um die maximale Funktion für beliebige Listen mit beliebiger Genauigkeit vollständig darzustellen . ML ist eine datenbasierte Methode, und es ist klar, dass Sie eine Funktion in Regionen, in denen Sie keine Datenpunkte haben, nicht approximieren können. Daher kann der Raum möglicher Beobachtungen (der unendlich ist) nicht durch endliche Beobachtungen abgedeckt werden.
Meine Aussagen basieren theoretisch auf Cybekos Universal Approximation Theorem für neuronale Netze. Ich zitiere den Satz aus Wikipedia:
Wenn Ihr Beobachtungsraum kompakt ist, können Sie möglicherweise die maximale Funktion mit einem endlichen Datensatz approximieren. Wie die Antwort mit den meisten Stimmen deutlich machte, sollten Sie das Rad nicht neu erfinden!
quelle
Hier ist eine Erweiterung meines Kommentars. Zum Vorwort: @DanScally hat absolut Recht, dass es keinen Grund gibt, ML zu verwenden, um maximal eine Liste zu finden. Aber ich denke, dass Ihr "es mir ein Verständnis dafür geben könnte, was maschinelles Lernen im Allgemeinen bewirken kann" Grund genug ist, sich damit auseinanderzusetzen.
Zum Schluss für die folgende Frage: Können wir einen NN in diesen Zustand schulen? Mit @DanScally haben wir angefangen. Vielleicht hilft uns die Kenntnis der theoretischen Architektur, die Lösung zu finden? (Beachten Sie, dass das Netz auch außerhalb des Bereichs der Trainingsmuster eine gute Leistung erbringt, wenn wir den oben angegebenen Satz von Gewichten kennen / schätzen können.)
Notizbuch in Github / Colab
Wenn ich etwas ändere, bekomme ich eine bessere Testnote (0,838), und selbst wenn ich eine Probe außerhalb des ursprünglichen Trainingsbereichs teste, bekomme ich eine anständige Note (0,698). Verwenden von Eingängen, die auf skaliert sind[−1,1] Erhöht die Testnote auf 0,961, mit einer Out-of-Range-Note von 0,758. Aber ich bewerte mit der gleichen Methode wie @DanScally, was ein wenig unehrlich erscheint: Die Identitätsfunktion wird bei dieser Metrik perfekt abschneiden. Ich habe auch ein paar Koeffizienten ausgedruckt, um zu sehen, ob etwas in der Nähe der oben beschriebenen exakten Anpassung erscheint (nicht wirklich); und ein paar rohe Ausgaben, die darauf hindeuten, dass das Modell ein Maximum zu ängstlich vorhersagt, und auf der Seite der Vorhersage, dass keine der Eingaben das Maximum ist, irren. Vielleicht könnte es helfen, das Ziel zu ändern, aber an diesem Punkt habe ich bereits zu viel Zeit investiert. Wenn jemand die Herangehensweise verbessern möchte, kann er gerne mitspielen (in Colab, wenn er möchte) und mich informieren.
quelle
Ja, selbst so einfaches maschinelles Lernen wie gewöhnliche lineare kleinste Quadrate kann dies mit etwas angewandter Klugheit tun.
(Aber die meisten würden diesen schrecklichen Overkill für möglich halten).
(Ich gehe davon aus, dass wir maximal abs des Eingabevektors finden wollen):
quelle