Ich habe ein ziemlich populäres Papier " ERKLÄREN UND HARNESSEN VON ADVERSARIALEN BEISPIELEN " implementiert und in dem Papier eine kontroverse Zielfunktion trainiert
J '' (θ) = αJ (θ) + (1 - α) J '(θ).
Es behandelt α als Hyperparameter. α kann 0,1, 0,2, 0,3 usw. sein.
Unabhängig von diesem speziellen Artikel frage ich mich, warum wir nicht einfach α in unsere Parameter aufnehmen und das beste α lernen.
Was ist der Nachteil dabei? Liegt es an Überanpassung? Wenn ja, warum verursacht das Lernen von nur einem weiteren Parameter so viel Überanpassung?
Antworten:
Das ist eine gute Frage! Ich werde versuchen, eine allgemeinere Antwort zu geben. Die TL; DR- Antwort lautet, dass Sie definitiv Hyperparameter lernen können, nur nicht aus denselben Daten. Lesen Sie weiter für eine etwas detailliertere Antwort.
Ein Hyperparameter entspricht normalerweise einer Einstellung des Lernalgorithmus und nicht einem seiner Parameter. Im Zusammenhang mit Deep Learning wird dies beispielsweise durch den Unterschied zwischen der Anzahl der Neuronen in einer bestimmten Schicht (einem Hyperparameter) und dem Gewicht einer bestimmten Kante (einem regulären, lernbaren Parameter) veranschaulicht .
Warum gibt es überhaupt einen Unterschied? Der typische Fall, um einen Parameter zu einem Hyperparameter zu machen, besteht darin, dass es einfach nicht angebracht ist, diesen Parameter aus dem Trainingssatz zu lernen. Da es beispielsweise immer einfacher ist, den Trainingsfehler durch Hinzufügen von mehr Neuronen zu verringern, würde die Festlegung der Anzahl der Neuronen in einer Schicht zu einem regulären Parameter immer zu sehr großen Netzwerken führen, was wir wissen, dass dies nicht immer wünschenswert ist (aufgrund von Überanpassung).
Auf Ihre Frage ist es nicht so, dass wir die Hyperparameter überhaupt nicht lernen. Abgesehen von den Rechenherausforderungen für eine Minute ist es sehr gut möglich, gute Werte für die Hyperparameter zu lernen, und es gibt sogar Fälle, in denen dies für eine gute Leistung unerlässlich ist. Die Diskussion im ersten Absatz legt lediglich nahe, dass Sie per Definition nicht dieselben Daten für diese Aufgabe verwenden können .
Wenn Sie eine andere Aufteilung der Daten verwenden (wodurch drei nicht zusammenhängende Teile erstellt werden: der Trainingssatz, der Validierungssatz und der Testsatz), können Sie theoretisch das folgende Verfahren zur verschachtelten Optimierung ausführen: In der äußeren Schleife versuchen Sie zu finden die Werte für die Hyperparameter , die den Validierungsverlust minimieren , und in der inneren Schleife versuchen Sie, die Werte für die regulären Parameter zu finden, die den Trainingsverlust minimieren .
Dies ist theoretisch möglich, aber rechenintensiv: Jeder Schritt der äußeren Schleife erfordert das Lösen (bis zur Fertigstellung oder irgendwo in der Nähe davon) der inneren Schleife, die typischerweise rechenintensiv ist. Was die Sache noch komplizierter macht, ist, dass das äußere Problem nicht einfach ist: Zum einen ist der Suchraum sehr groß.
Es gibt viele Ansätze, um dies zu überwinden, indem das obige Setup vereinfacht wird (Rastersuche, Zufallssuche oder modellbasierte Hyperparameteroptimierung). Die Erklärung dieser Ansätze geht jedoch weit über den Rahmen Ihrer Frage hinaus. Wie der Artikel, auf den Sie verwiesen haben, auch zeigt, bedeutet die Tatsache, dass dies ein kostspieliges Verfahren ist, häufig, dass Forscher es einfach ganz überspringen oder nur sehr wenige Einstellungen manuell versuchen und sich schließlich für die beste entscheiden (wiederum gemäß dem Validierungssatz). Zu Ihrer ursprünglichen Frage argumentiere ich jedoch, dass dies - obwohl sehr simpel und erfunden - immer noch eine Form des "Lernens" ist.
quelle
Hyperparameter wie der in diesem Artikel werden häufig verwendet, um mehrere Begriffe in der Verlustfunktion auszugleichen. Wenn Sie sie lernbar gemacht hätten, würde der Optimierungsprozess einfach lernen, das gesamte Gewicht Begriffen zuzuweisen, die einfacher zu optimieren sind, und zwar auf Kosten von Begriffen, die schwerer zu optimieren sind, was den Punkt des Ausgleichs der Begriffe zunichte macht.
Eine andere Möglichkeit, dies zu erkennen, besteht darin, dass die Verlustfunktion ein Ersatz für ein schwer zu definierendes oder zu optimierendes tatsächliches Ziel ist, z. B. "Ausgabebilder sollten realistisch aussehen" oder "gegen gegnerische Beispiele resistent sein". In diesem Fall ist das wahre Ziel nicht "Finden Sie die Hyperparameter, um den Ersatzverlust zu minimieren", sondern "Finden Sie die Hyperparameter so, dass wir, wenn wir SGD für die restlichen Parameter ausführen, um den Ersatz zu optimieren, eine gute Leistung für den Wahren erhalten Zielsetzung".
quelle
Da Sie "unabhängig vom Papier" gefragt haben, möchte ich ein einfacheres Beispiel nehmen: Bestrafte lineare Regression (Ridge / Lasso).
Die Zielfunktion zum Optimieren des Hyperparameters ist ein Ausdruck, der ein Proxy für Generalisierungsfehler ist. Dieser Ausdruck ist schwer als einfache Analysefunktion zu beschreiben, die unterschieden werden kann, aber er kann irgendwann einfach ausgewertet werden, indem einfach das zugrunde liegende Optimierungsproblem gelöst wird.
Um die Funktion (F2) zu bewerten, müssen Sie ein Optimierungsproblem lösen, das teuer sein kann. Selbst wenn Sie den Gradienten für F2 für einen Gradientenabstieg approximieren können, wäre dies teuer und langsam. In solchen Fällen ist eine Rastersuche oft "gut genug".
(Bild aus diesem Beitrag: https://stats.stackexchange.com/a/26607/54725 )
Einige Referenzen:
quelle
Wenn dieser Hyperparameter optimiert wird, werden sowohl J als auch J 'dieselbe Funktion, dh gleiche Gewichte. Sie erhalten eine triviale Lösung.
Wenn Sie eine allgemeinere Philosophie wünschen, sollten Sie Folgendes berücksichtigen: Hyperparameter sind normalerweise nicht mit Daten verwickelt. Was meine ich? In einem neuronalen Netzwerk oder sogar einer einfachen Regression interagieren Ihre Modellparameter in gewisser Weise direkt mit Daten: und so weiter in den Ebenen. Sie sehen, wie sich in Ihren Daten verwickelt. Wenn Sie also eine Ableitung über ein der Zielfunktion nehmen, erhalten Sie Datenpunkte, die auf nicht offensichtliche Weise in Matrix, Hessische, Kreuzprodukte usw. in das Ergebnis eingegeben werden.yL=XLβL
aL=σ(yL)
XL+1=aL βL β
Wenn Sie jedoch versuchen, die Bedingungen erster Ordnung über die Hyperparameter zu schätzen, erhalten Sie diesen Effekt nicht. Die Ableitungen von Hyperparametern bearbeiten häufig die gesamten Teile Ihres Modells, ohne seine Teile wie Ableitungen über Parameter zu mischen. Aus diesem Grund führt die Optimierung von Hyperparametern häufig zu trivialen Lösungen, wie ich sie Ihnen für das jeweilige Papier gegeben habe. Das Optimieren von Hyperparametern belastet Ihren Datensatz nicht und macht ihn unangenehm genug, um etwas Interessantes zu produzieren.
quelle