Grundlagen der KI
Was ist Gradientenabstieg?
Was ist ein Gradientenabstieg?
Wenn Sie Þber die Schulung von neuronalen Netzen gelesen haben, sind Sie wahrscheinlich bereits auf den Begriff âGradientenabstiegâ gestoÃen. Gradientenabstieg ist die primÃĪre Methode zur Optimierung der Leistung eines neuronalen Netzes, um den Fehler-/Verlustrate des Netzes zu reduzieren. Allerdings kann der Gradientenabstieg fÞr Neueinsteiger im Bereich des maschinellen Lernens ein wenig schwer zu verstehen sein, und dieser Artikel wird versuchen, Ihnen eine ordentliche Intuition dafÞr zu vermitteln, wie der Gradientenabstieg funktioniert.
Der Gradientenabstieg ist ein Optimierungsalgorithmus. Er wird verwendet, um die Leistung eines neuronalen Netzes zu verbessern, indem er Anpassungen an den Parametern des Netzes vornimmt, sodass die Differenz zwischen den Vorhersagen des Netzes und den tatsÃĪchlichen/erwarteten Werten des Netzes (als Verlust bezeichnet) so klein wie mÃķglich ist. Der Gradientenabstieg beginnt mit den Anfangswerten der Parameter und verwendet Operationen, die auf der Infinitesimalrechnung basieren, um ihre Werte in Richtung der Werte anzupassen, die das Netz so genau wie mÃķglich machen. Sie mÞssen nicht viel Þber Infinitesimalrechnung wissen, um zu verstehen, wie der Gradientenabstieg funktioniert, aber Sie mÞssen ein VerstÃĪndnis fÞr Gradienten haben.
Was sind Gradienten?
Nehmen wir an, es gibt ein Diagramm, das den Fehler darstellt, den ein neuronales Netz macht. Der untere Teil des Diagramms stellt die Punkte mit dem geringsten Fehler dar, wÃĪhrend der obere Teil des Diagramms der Bereich ist, in dem der Fehler am grÃķÃten ist. Wir mÃķchten vom oberen Teil des Diagramms zum unteren Teil hinabsteigen. Ein Gradient ist einfach eine MÃķglichkeit, die Beziehung zwischen Fehler und den Gewichten des neuronalen Netzes zu quantifizieren. Die Beziehung zwischen diesen beiden Dingen kann als Steigung dargestellt werden, wobei falsche Gewichte mehr Fehler erzeugen. Die Steilheit der Steigung/Gradienten stellt dar, wie schnell das Modell lernt.
Eine steilere Steigung bedeutet, dass groÃe Fehlerreduzierungen vorgenommen werden und das Modell schnell lernt, wÃĪhrend bei einer Steigung von Null das Modell auf einem Plateau ist und nicht lernt. Wir kÃķnnen die Steigung hinabsteigen, indem wir einen Gradienten berechnen, eine Richtung der Bewegung (Ãnderung der Parameter des Netzes) fÞr unser Modell.
Lassen Sie uns die Metapher ein wenig ÃĪndern und uns eine Reihe von HÞgeln und TÃĪlern vorstellen. Wir mÃķchten den unteren Teil des HÞgels erreichen und den Teil des Tales finden, der den geringsten Verlust darstellt. Wenn wir am oberen Teil des HÞgels beginnen, kÃķnnen wir groÃe Schritte hinabsteigen und sicher sein, dass wir in Richtung des unteren Punktes des Tales unterwegs sind.
Als wir jedoch nÃĪher an den unteren Punkt des Tales kommen, mÞssen unsere Schritte kleiner werden, sonst kÃķnnten wir den tatsÃĪchlichen unteren Punkt des Tales Þbersehen und auf der anderen Seite landen. Ãhnlich verhÃĪlt es sich, wenn wir die Gewichte des Netzes anpassen, die Anpassungen kÃķnnen tatsÃĪchlich dazu fÞhren, dass das Netz weiter vom Punkt des geringsten Verlusts entfernt wird, und daher mÞssen die Anpassungen im Laufe der Zeit kleiner werden. Im Kontext des Abstiegs eines HÞgels in Richtung eines Punktes des geringsten Verlusts ist der Gradient ein Vektor/Anweisungen, der den Pfad angibt, den wir nehmen sollten, und wie groà unsere Schritte sein sollten.
Jetzt, da wir wissen, dass Gradienten Anweisungen sind, die uns sagen, in welche Richtung wir uns bewegen sollten (welche Koeffizienten aktualisiert werden sollten) und wie groà unsere Schritte sein sollten (wie sehr die Koeffizienten aktualisiert werden sollten), kÃķnnen wir uns mit der Berechnung von Gradienten und dem Gradientenabstieg befassen.
Berechnung von Gradienten und Gradientenabstieg

Der Gradientenabstieg beginnt an einem Punkt mit hohem Verlust und nimmt durch multiple Iterationen Schritte in Richtung des geringsten Verlusts, um die optimale Gewichtskonfiguration zu finden. Foto: Ð ÐūÐžÐ°Ð― ÐĄŅзÐļ via Wikimedia Commons, CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)
Um den Gradientenabstieg durchzufÞhren, mÞssen die Gradienten zunÃĪchst berechnet werden. Um den Gradienten zu berechnen, mÞssen wir die Verlust-/Kostenfunktion kennen. Wir verwenden die Kostenfunktion, um die Ableitung zu bestimmen. In der Infinitesimalrechnung bezeichnet die Ableitung einfach die Steigung einer Funktion an einem gegebenen Punkt, also berechnen wir im Grunde die Steigung des HÞgels basierend auf der Verlustfunktion. Wir bestimmen den Verlust, indem wir die Koeffizienten durch die Verlustfunktion laufen lassen. Wenn wir die Verlustfunktion als âfâ darstellen, kÃķnnen wir die Gleichung fÞr die Berechnung des Verlusts wie folgt angeben (wir laufen die Koeffizienten einfach durch unsere gewÃĪhlte Kostenfunktion):
Verlust = f(Koeffizient)
Dann berechnen wir die Ableitung oder bestimmen die Steigung. Das Erhalten der Ableitung des Verlusts sagt uns, in welche Richtung auf oder ab der Steigung wir uns bewegen sollten, indem es uns das entsprechende Vorzeichen gibt, um unsere Koeffizienten anzupassen. Wir bezeichnen die entsprechende Richtung als âDeltaâ.
Delta = Ableitungsfunktion(Verlust)
Wir haben nun bestimmt, in welche Richtung wir uns bewegen sollten, um den Punkt des geringsten Verlusts zu erreichen. Das bedeutet, dass wir die Koeffizienten im neuronalen Netzwerk aktualisieren und hoffentlich den Verlust reduzieren kÃķnnen. Wir aktualisieren die Koeffizienten basierend auf den vorherigen Koeffizienten minus der entsprechenden Ãnderung des Werts, wie durch die Richtung (Delta) und ein Argument bestimmt, das die GrÃķÃe der Ãnderung steuert (die GrÃķÃe unseres Schritts). Das Argument, das die GrÃķÃe der Aktualisierung steuert, wird als âLernrateâ bezeichnet, und wir bezeichnen es als âAlphaâ.
Koeffizient = Koeffizient â (Alpha * Delta)
Dann wiederholen wir diesen Prozess, bis das Netz um den Punkt des geringsten Verlusts konvergiert, der nahe bei Null liegen sollte.
Es ist sehr wichtig, den richtigen Wert fÞr die Lernrate (Alpha) zu wÃĪhlen. Der gewÃĪhlte Lernsatz muss weder zu klein noch zu groà sein. Denken Sie daran, dass unsere Schritte kleiner werden mÞssen, wenn wir uns dem Punkt des geringsten Verlusts nÃĪhern, sonst kÃķnnten wir den tatsÃĪchlichen Punkt des geringsten Verlusts Þbersehen und auf der anderen Seite landen. Der Punkt des geringsten Verlusts ist klein, und wenn unsere Ãnderungsrate zu groà ist, kann der Fehler wieder zunehmen. Wenn die SchrittgrÃķÃen zu groà sind, kann die Leistung des Netzes um den Punkt des geringsten Verlusts herum springen, ihn auf einer Seite Þber- und auf der anderen Seite unter-schreiten. Wenn dies passiert, wird das Netz nie auf die tatsÃĪchliche optimale Gewichtskonfiguration konvergieren.
Im Gegensatz dazu kann das Netz potenziell sehr lange brauchen, um auf die optimalen Gewichte zu konvergieren, wenn die Lernrate zu klein ist.
Arten von Gradientenabstieg
Jetzt, da wir verstehen, wie der Gradientenabstieg im Allgemeinen funktioniert, lassen Sie uns einige der verschiedenen Arten von Gradientenabstieg betrachten.
Batch-Gradientenabstieg: Diese Form des Gradientenabstiegs lÃĪuft durch alle Trainingsbeispiele, bevor die Koeffizienten aktualisiert werden. Diese Art von Gradientenabstieg ist wahrscheinlich die rechentechnisch effizienteste Form des Gradientenabstiegs, da die Gewichte nur aktualisiert werden, wenn die gesamte Charge verarbeitet wurde, was bedeutet, dass es weniger Aktualisierungen gibt. Allerdings kann der Batch-Gradientenabstieg die Schulung sehr lange dauern, wenn die Datenmenge eine groÃe Anzahl von Trainingsbeispielen enthÃĪlt.
Stochastischer Gradientenabstieg: Beim stochastischen Gradientenabstieg wird fÞr jede Iteration des Gradientenabstiegs und der Parameteraktualisierung nur ein einzelnes Trainingsbeispiel verarbeitet. Dies geschieht fÞr jedes Trainingsbeispiel. Da nur ein Trainingsbeispiel vor der Parameteraktualisierung verarbeitet wird, konvergiert es tendenziell schneller als der Batch-Gradientenabstieg, da Aktualisierungen frÞher vorgenommen werden. Allerdings kann es sehr lange dauern, wenn die Datenmenge groà ist, und daher kann die Verwendung einer der anderen Arten von Gradientenabstieg bevorzugt werden.
Mini-Batch-Gradientenabstieg: Der Mini-Batch-Gradientenabstieg funktioniert, indem die gesamte Trainingsdatenmenge in Unterabschnitte aufgeteilt wird. Er erstellt kleinere Mini-Batches, die durch das Netzwerk laufen, und wenn das Mini-Batch verwendet wurde, um den Fehler zu berechnen, werden die Koeffizienten aktualisiert. Der Mini-Batch-Gradientenabstieg schlÃĪgt einen Mittelweg zwischen dem stochastischen Gradientenabstieg und dem Batch-Gradientenabstieg ein. Das Modell wird hÃĪufiger aktualisiert als beim Batch-Gradientenabstieg, was bedeutet, dass es eine etwas schnellere und robustere Konvergenz auf die optimalen Parameter des Modells gibt. Es ist auch rechentechnisch effizienter als der stochastische Gradientenabstieg












