Gradientenmethoden optimieren Allgemeinen besser als da der Gradient von im Allgemeinen besser skaliert ist . Das heißt, es hat eine Größe, die die Geometrie der Zielfunktion konsistent und hilfreich widerspiegelt, sodass es einfacher ist, eine geeignete Schrittgröße auszuwählen und in weniger Schritten das Optimum zu erreichen.logp(x)p(x)logp(x)
Um zu sehen, was ich meine, vergleichen Sie den Gradientenoptimierungsprozess für und . An jedem Punkt , der Gradient von istWenn wir das mit multiplizieren , erhalten wir die genaue Schrittgröße, die erforderlich ist, um das globale Optimum am Ursprung zu erreichen, unabhängig davon, wasp(x)=exp(−x2)f(x)=logp(x)=−x2xf(x)
f′(x)=−2x.
1/2xist. Dies bedeutet, dass wir nicht zu hart arbeiten müssen, um eine gute Schrittgröße (oder "Lernrate" im ML-Jargon) zu erhalten. Egal wo unser Ausgangspunkt ist, wir setzen unseren Schritt auf die Hälfte des Gefälles und sind in einem Schritt am Ursprung. Und wenn wir den genauen Faktor nicht kennen, können wir einfach eine Schrittgröße um 1 auswählen, ein bisschen nach Zeilen suchen und sehr schnell eine gute Schrittgröße finden, die überall gut funktioniert ist. Diese Eigenschaft ist robust gegenüber der Translation und Skalierung von . Während die Skalierung von führt, dass die optimale Stufenskalierung von 1/2 abweicht, ist die Stufenskalierung unabhängig von mindestens gleich , sodass wir nur einen Parameter finden müssen, um eine effiziente gradientenbasierte Optimierung zu erhalten planen.
xf(x)f(x)x
Im Gegensatz dazu hat der Gradient von sehr schlechte globale Eigenschaften zur Optimierung. Wir habenDies multipliziert den perfekt schönen, gut erzogenen Gradienten mit einem Faktor der mit zunehmendem exponentiell abfällt (schneller als) . Bei haben wir bereits , so dass ein Schritt entlang des Gradientenvektors etwa mal zu klein ist. Um eine vernünftige Schrittgröße für das Optimum zu erhalten, müssten wir den Gradienten um den Kehrwert skalieren, eine enorme Konstantep(x)
p′(x)=f′(x)p(x)=−2xexp(−x2).
−2xexp(−x2)xx=5exp(−x2)=1.4⋅10−1110−11∼1011. Solch ein schlecht skalierter Gradient ist für Optimierungszwecke schlimmer als nutzlos - es ist besser, nur einen Einheitsschritt in Aufwärtsrichtung zu versuchen, als unseren Schritt durch Skalieren gegen ! (In vielen Variablen wird ein bisschen nützlicher, da wir zumindest Richtungsinformationen aus dem Gradienten erhalten, aber das Skalierungsproblem bleibt bestehen.)
p′(x)p′(x)
Im Allgemeinen gibt es keine Garantie dafür, dass so gute Gradientenskalierungseigenschaften aufweist wie dieses Spielzeugbeispiel, insbesondere wenn wir mehr als eine Variable haben. wird jedoch für so ziemlich jedes nicht triviale Problem viel , viel besser sein als . Dies liegt daran, dass die Wahrscheinlichkeit ein großes Produkt mit einer Reihe von Begriffen ist und das Protokoll dieses Produkt in eine Summe umwandelt, wie in mehreren anderen Antworten angegeben. Vorgesehen sind , die Bedingungen der Wahrscheinlichkeit artig von einer Optimierung Sicht ist ihre Log im Allgemeinen gut erzogene, und die Summe von gut erzogene Funktionen ist brav. Mit brav meine ichlogp(x)logp(x)p(x)f′′(x)ändert sich weder zu schnell noch zu stark, was zu einer nahezu quadratischen Funktion führt, die sich leicht mit Gradientenmethoden optimieren lässt. Die Summe eines Derivats ist die Ableitung der Summe, unabhängig von der Reihenfolge des Derivats, was dazu beiträgt, dass dieser große Haufen von Summenbegriffen eine sehr vernünftige zweite Ableitung hat!