Beim maschinellen Lernen geht es häufig um die Optimierung einer Funktion, die viele lokale Minima aufweist. Ein gutes Beispiel ist die Vorwärtskopplung neuronaler Netze mit versteckten Einheiten. Unabhängig davon, ob diese Funktionen diskret oder kontinuierlich sind, gibt es keine Methode, die ein globales Minimum erreicht und stoppt. Es ist leicht zu beweisen, dass es keinen allgemeinen Algorithmus gibt, um ein globales Minimum einer stetigen Funktion zu finden, selbst wenn es eindimensional und glatt ist (unendlich viele Ableitungen hat). In der Praxis stecken alle Algorithmen zum Lernen neuronaler Netze in einem lokalen Minimum. Dies lässt sich leicht überprüfen: Erstellen Sie ein zufälliges neuronales Netzwerk, nehmen Sie eine große Anzahl von Antworten auf zufällige Eingaben vor und versuchen Sie dann, ein anderes neuronales Netzwerk mit derselben Architektur zu erlernen, um die Antworten zu kopieren. Es gibt zwar die perfekte Lösung, aber weder Backpropagation noch ein anderer Lernalgorithmus werden sie entdecken können.
Einige Lernmethoden, wie simuliertes Tempern oder genetische Algorithmen, untersuchen viele lokale Minimas. Für stetige Funktionen gibt es Methoden wie Gradientenabstieg, die das nächstgelegene lokale Minimum finden. Sie sind viel schneller, deshalb sind sie in der Praxis weit verbreitet. Wenn jedoch genügend Zeit zur Verfügung steht, übertrifft die erste Gruppe von Methoden die spätere Gruppe in Bezug auf den Trainingssatzfehler. Bei Problemen in der realen Welt ist die letztgenannte Gruppe mit vertretbaren zeitlichen Einschränkungen normalerweise besser.
Für einige Modelle, wie die logistische Regression, gibt es ein lokales Minimum, die Funktion ist konvex, die Minimierung konvergiert zum Minimum, aber die Modelle selbst sind simpel.
Das ist die bittere Wahrheit.
Beachten Sie auch, dass der Konvergenznachweis und der Konvergenznachweis für die beste Lösung zwei verschiedene Dinge sind. Ein Beispiel hierfür ist der K-Means-Algorithmus.
Schließlich wissen wir bei einigen Modellen überhaupt nicht, wie man lernt. Wenn die Ausgabe beispielsweise eine willkürlich berechenbare Funktion von Eingaben ist, kennen wir keine guten Algorithmen, die in angemessener Zeit eine Turing-Maschine oder eine äquivalente Maschine finden, die diese Funktion implementiert. Wenn zum Beispiel f (1) = 2, f (2) = 3, f (3) = 5, f (4) = 7, ..., f (10) = 29 (zehn erste Primzahlen), ziehen wir an Ich kenne keinen Lernalgorithmus, der in angemessener Zeit vorhersagen könnte, dass f (11) = 31 ist, es sei denn, er kennt das Konzept der Primzahlen bereits.