In den meisten maschinellen Lernaufgaben, in denen Sie eine Wahrscheinlichkeit formulieren können, die maximiert werden sollte, würden wir tatsächlich die log-Wahrscheinlichkeit anstelle der Wahrscheinlichkeit für einige Parameter optimieren . ZB beim Maximum-Likelihood-Training ist es normalerweise die Log-Likelihood. Wenn Sie dies mit einer Gradientenmethode tun, beinhaltet dies einen Faktor:
Sehen Sie hier oder hier für einige Beispiele.
Natürlich ist die Optimierung äquivalent, aber der Gradient wird unterschiedlich sein, so dass sich jede gradientenbasierte Methode anders verhält (insbesondere stochastische Gradientenmethoden). Gibt es eine Rechtfertigung dafür, dass der Gradient besser funktioniert als der Gradient?
Antworten:
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)=−x2 x f(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)
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!
quelle
Unterlauf
Der Computer verwendet eine begrenzte Fließkommadarstellung von Brüchen, wobei das Multiplizieren so vieler Wahrscheinlichkeiten garantiert sehr nahe bei Null liegt.
Mit haben wir dieses Problem nicht.log
quelle
Der Logarithmus der Wahrscheinlichkeit mehrerer gemeinsamer Wahrscheinlichkeiten vereinfacht sich zu der Summe der Logarithmen der einzelnen Wahrscheinlichkeiten (und die Summenregel ist einfacher als die Produktregel zur Differenzierung).
Der Logarithmus eines Mitglieds der Familie der exponentiellen Wahrscheinlichkeitsverteilungen (einschließlich der allgegenwärtigen Normalen) ist in den Parametern polynomisch (dh die Maximalwahrscheinlichkeit wird bei Normalverteilungen auf die kleinsten Quadrate reduziert ).
Die letztere Form ist sowohl numerisch stabiler als auch symbolisch leichter zu unterscheiden als die erstere.
Last but not least ist der Logarithmus eine monotone Transformation, bei der die Orte der Extrema erhalten bleiben (insbesondere sind die geschätzten Parameter der maximalen Wahrscheinlichkeit für die ursprüngliche und die logarithmisch transformierte Formulierung identisch).
quelle
Es ist viel einfacher, eine Ableitung der Summe der Logarithmen zu nehmen, als eine Ableitung des Produkts, das beispielsweise 100 Multiplikatoren enthält.
quelle
In der Regel besteht das grundlegendste und einfachste Optimierungsproblem darin, eine quadratische Funktion zu optimieren. Sie können das Optimum einer solchen Funktion leicht finden, egal wo Sie anfangen. Wie sich dies manifestiert, hängt von der jeweiligen Methode ab. Je näher Ihre Funktion an einem Quadrat liegt, desto besser.
Wie von TemplateRex festgestellt, ergeben sich bei einer Vielzahl von Problemen die Wahrscheinlichkeiten, mit denen die Wahrscheinlichkeitsfunktion berechnet wird, aus der Normalverteilung oder werden durch diese angenähert. Wenn Sie also am Protokoll arbeiten, erhalten Sie eine schöne quadratische Funktion. Wenn Sie dagegen an den Wahrscheinlichkeiten arbeiten, haben Sie eine Funktion, die
Welche Funktion würden Sie lieber optimieren, dies oder das ?
(Das war eigentlich ganz einfach; in der Praxis kann Ihre Suche so weit vom Optimum entfernt beginnen, dass die Funktionswerte und Verläufe, auch wenn Sie sie numerisch berechnen könnten, für die Zwecke der Optimierung nicht von 0 zu unterscheiden und nutzlos sind Algorithmus. Aber die Umwandlung in eine quadratische Funktion macht dies zu einem Kinderspiel.)
Beachten Sie, dass dies mit den bereits erwähnten numerischen Stabilitätsproblemen völlig im Einklang steht. Der Grund, warum die Protokollskala erforderlich ist, um mit dieser Funktion zu arbeiten, ist genau derselbe Grund, warum sich die Protokollwahrscheinlichkeit (für Optimierungszwecke und andere Zwecke) viel besser verhält als das Original.
Sie könnten dies auch auf eine andere Weise angehen. Auch wenn es keinen Vorteil für das Protokoll gab (was es gibt) - wir werden die Protokollskala trotzdem für Ableitungen und Berechnungen verwenden. Aus welchem Grund sollte die exp-Transformation nur zur Berechnung des Gradienten angewendet werden? Wir können genauso gut mit dem Protokoll konsistent bleiben.
quelle
Mit erhöhen wir den Dynamikumfang des Optimierungsalgorithmus. Die in -Anwendungen sind normalerweise ein Produkt von Funktionen. Zum Beispiel ist es bei der Maximum-Likelihood-Schätzung das Produkt der Form , wobei Die Dichtefunktion ist, die sein kann größer oder kleiner als 1, übrigenslnp p L(x|θ)=Πni=1f(xi|θ) f(.)
Wenn also sehr groß ist, dh eine große Stichprobe, ist Ihre Wahrscheinlichkeitsfunktion Normalerweise weit von 1 entfernt: Sie ist entweder sehr klein oder sehr groß, weil es sich um eine Potenzfunktion .n L(.) L∼f(.)n
Indem wir ein Protokoll erstellen, verbessern wir einfach den Dynamikbereich jedes Optimierungsalgorithmus, sodass dieser auf die gleiche Weise mit extrem großen oder kleinen Werten arbeiten kann.
quelle
Einige nette Antworten wurden bereits gegeben. Aber ich bin kürzlich auf einen neuen gestoßen:
Häufig erhalten Sie einen riesigen Trainingsdatensatz , und Sie definieren ein Wahrscheinlichkeitsmodell , und Sie möchten die Wahrscheinlichkeit für maximieren . Es wird angenommen, dass sie unabhängig sind, dh Sie haben Nun, man oft eine Art von stochastischen tun (Mini-Batch) Gradienten-based Training, das heißt in jedem Schritt für Ihren Verlust , optimieren Sie für , dhX p(x|θ) x∈X p(X|θ)=∏x∈Xp(x|θ). L L(X′|θ) X′⊂X θ′:=θ−∂∑x∈X′L(x|θ)∂θ.
Nun werden diese stochastischen Schritte additiv akkumuliert. Aus diesem Grund möchten Sie die Eigenschaft, dass im Allgemeinen
Dies ist der Fall für
L(X|θ)=∑x∈XL(x|θ). L(x|θ)=−logp(x|θ).
quelle