Erfahren Sie, wie Gradient Descent funktioniert und wie er implementiert wird.
Der gradient descent ist einer der wichtigsten Algorithmen im gesamten maschinellen Lernen und Deep Learning . Es handelt sich um einen äußerst leistungsstarken Optimierungsalgorithmus, mit dem lineare Regression, logistische Regression und neuronale Netzwerkmodelle trainiert werden können. Wenn Sie sich mit maschinellem Lernen beschäftigen, ist es daher unerlässlich, den gradient descent salgorithmus gründlich zu verstehen.
Was ist gradient descent?
Bei Data Science geht es darum, komplexe Muster und Verhaltensweisen bei der Analyse von Big Data zu entdecken. Diese nennt man „Patterns“, also wiederkehrende Motive. Durch maschinelles Lernen geht es dabei darum, Algorithmen zu trainieren, Muster bei der Datenanalyse zu erkennen, um eine bestimmte Aufgabe besser auszuführen. Das heißt, einer Software beizubringen, eine Aufgabe auszuführen oder Vorhersagen autonom zu treffen. Dazu wählt und trainiert der Data Scientist Algorithmen, die Datenanalysen durchführen. Ziel ist natürlich, deren Vorhersagen im Laufe der Zeit zu verbessern.
Folglich basiert maschinelles Lernen weitgehend auf dem Training von Algorithmen. Je mehr diese Algorithmen Daten ausgesetzt sind, desto besser lernen sie, eine Aufgabe ohne spezifische Anweisungen auszuführen; sie lernen durch Erfahrung. Wir verwenden verschiedene Arten von Algorithmen beim maschinellen Lernen. Unter ihnen ist der gradient descent einer der nützlichsten und beliebtesten.
gradient descent ist ein Optimierungsalgorithmus. Er wird verwendet, um den Minimalwert einer Funktion schneller zu finden. Die Definition des gradient descent ist ziemlich einfach. Es handelt sich um einen Algorithmus, um das Minimum einer konvexen Funktion zu finden. Dazu werden iterativ die Parameter der betreffenden Funktion geändert. Es handelt sich um einen Algorithmus, der beispielsweise bei der linearen Regression verwendet wird.
Eine konvexe Funktion ist eine Funktion, die wie ein schönes Tal mit einem globalen Minimum in der Mitte aussieht. Umgekehrt ist eine nicht-konvexe Funktion eine Funktion, die mehrere lokale Minima hat. Der gradient descentalgorithmus sollte nicht auf diese Funktionen angewendet werden, da sonst die Gefahr besteht, dass man beim ersten angetroffenen Minima hängen bleibt.
gradient descent wird auch als „Algorithmus mit der tiefsten Abwärtsneigung“ bezeichnet. Er ist sehr wichtig beim maschinellen Lernen, wo er zur Minimierung einer Kostenfunktion verwendet wird. Letztere wird verwendet, um das beste Vorhersagemodell in der Datenanalyse zu bestimmen. Je stärker die Kosten minimiert werden, desto besser kann die Maschine Vorhersagen treffen.
Es gibt drei bekannte Abstiegsarten. Schauen wir sie uns genauer an:
Batch-gradient descent
Beim Batch-gradient descent, auch bekannt als Vanilla-gradient descent, werden die Fehler für jedes Beispiel im Trainingsdatensatz berechnet. Dies geschieht jedoch erst, nachdem jedes Trainingsbeispiel sorgfältig ausgewertet wurde. Man kann diesen Prozess durchaus mit einem Zyklus vergleichen. Manche Leute bezeichnen ihn auch als Trainingsära.
Batch-gradient descent hat mehrere Vorteile. Insbesondere seine Rechenleistung ist äußerst praktisch, da er eine stabile Konvergenz und einen stabilen Fehlergradienten entwickelt. Allerdings hat der Batch-gradient descent auch einige Nachteile. Manchmal kann sein stabiler Fehlergradient zu einem ungünstigen Konvergenzzustand führen. Darüber hinaus muss der Trainingsdatensatz in seinem Algorithmus und Speicher vorhanden sein.
Stochastischer gradient descent
Das SGD stellt für jedes Trainingsbeispiel individuelle Parameteraktualisierungen bereit. So kann jedem Beispiel Aufmerksamkeit gewidmet werden, um sicherzustellen, dass der Prozess fehlerfrei abläuft. Je nach Problem kann dies dazu beitragen, dass das SGD im Vergleich zum Batch-gradient descent schneller wird. Seine regelmäßigen Aktualisierungen liefern uns detaillierte Verbesserungsraten.
Allerdings sind diese Aktualisierungen rechenintensiv, insbesondere im Vergleich zum Ansatz des schrittweisen Abstiegs. Darüber hinaus kann die Häufigkeit der Aktualisierungen zu verrauschten Gradienten führen und verhindern, dass die Fehlerrate sinkt. Stattdessen steigt die Fehlerrate sprunghaft an und wird auf lange Sicht problematisch.
Mini-Batch-gradient descent
Wissenschaftler verwenden Mini-Batch-gradient descent als Startmethode. Warum? Weil es eine perfekte Mischung aus den Konzepten des stochastischen Abstiegs und des Batch-Abstiegs ist. Es unterteilt Datensätze (Training) in Batches und führt für jeden Batch ein Update durch, wodurch ein Gleichgewicht zwischen der Effizienz von BGD und der Robustheit von DDC geschaffen wird.
Beliebte Mini-Batches reichen von fünfzig bis zweihundertsechsundfünfzig, aber wie bei vielen anderen Methoden des maschinellen Lernens gibt es keine klaren Regeln, da sie von Anwendung zu Anwendung variieren. Menschen verwenden sie als grundlegende Option zum Trainieren neuronaler Netzwerke. Es ist auch eine beliebte Art des Hill Descent im Deep-Learning-Bereich.
Warum ist der gradient descent beim maschinellen Lernen so wichtig?
Beim maschinellen Lernen verwenden wir den gradient descentalgorithmus in überwachten Lernproblemen, um die Kostenfunktion zu minimieren, die eine konvexe Funktion ist (z. B. der mittlere quadratische Fehler).
Dank dieses Algorithmus lernt die Maschine, indem sie das beste Modell findet. Denken Sie daran, dass das Minimieren der Kostenfunktion bedeutet, die Parameter a, b, c usw. zu finden, die die geringsten Fehler zwischen unserem Modell und den y-Punkten des Datensatzes ergeben. Sobald die Kostenfunktion minimiert ist, öffnet dies die Tür zum Erstellen präziser Spracherkennungsprogramme, Computer-Vision-Programme und Anwendungen zur Vorhersage des Börsenkurses.
Sie können sehen, warum der gradient descentalgorithmus von grundlegender Bedeutung ist: Die Maschine lernt daraus.
Um die Funktionsweise und Nützlichkeit dieses Algorithmus besser zu veranschaulichen, verwenden wir oft die Analogie des Berges. Wir stellen uns eine Person vor, die sich in den Bergen verirrt hat. Im Grunde geht es darum, den Weg zurück zu finden, indem man zunächst nach der Richtung mit einem steilen Abhang sucht. Nachdem man dieser Richtung eine bestimmte Strecke gefolgt ist, muss diese Methode wiederholt werden, bis ein Tal erreicht ist (der niedrigste Wert). Beim maschinellen Lernen besteht der gradient descent darin, diese Methode in einer Schleife zu wiederholen, bis ein Minimum für die Kostenfunktion gefunden wird. Aus diesem Grund wird er als iterativer Algorithmus bezeichnet und erfordert viel Rechenarbeit.
Hier ist eine zweistufige Strategie, die Ihnen hilft, wenn Sie sich in den Bergen verlaufen:
- Von Ihrer aktuellen Position aus blicken Sie rundherum in die Richtung, in der der Hang am steilsten abfällt.
- Wenn Sie die Richtung gefunden haben, folgen Sie ihr ein Stück weit (sagen wir, Sie gehen 300 Meter) und wiederholen Schritt 1.
Indem Sie die Schritte 1 und 2 in einer Schleife wiederholen, können Sie sicher sein, dass Sie das Minimum des Tals erreichen. Diese Strategie ist nichts anderes als der gradient descentalgorithmus.
Schritt 1: Berechnen Sie die Ableitung der Kostenfunktion
Wir starten von einem zufälligen Anfangspunkt (als ob wir uns in den Bergen verlaufen hätten) und messen dann den Wert der Steigung an diesem Punkt. In der Mathematik misst man eine Steigung, indem man die Ableitung der Funktion berechnet.
Schritt 2: Aktualisieren der Modellparameter
Wir bewegen uns dann eine gewisse Distanz d in Hangrichtung, die nach unten geht, diesmal jedoch nicht 300 Meter. Diese Distanz wird als „Lernrate“ bezeichnet.
Das Ergebnis dieser Operation ist eine Änderung der Parameterwerte unseres Modells (unsere Koordinaten im Tal ändern sich, wenn wir uns bewegen).
In welchen Bereichen wird gradient descent verwendet?
Der gradient descentalgorithmus wird hauptsächlich in den Bereichen maschinelles Lernen und Deep Learning verwendet. Letzteres kann als verbesserte Version des maschinellen Lernens betrachtet werden. Es ermöglicht die Erkennung der subtilsten Muster. Dies sind Disziplinen, die fundierte mathematische und Python-Kenntnisse erfordern.
Diese Programmiersprache verfügt über mehrere Bibliotheken, die die Anwendung des maschinellen Lernens erleichtern. Diese Disziplin ist sehr nützlich, um große Datenmengen genau und schnell zu analysieren. Sie ermöglicht prädiktive Analysen auf der Grundlage vergangener Trends oder Ereignisse.
Maschinelles Lernen ist eine der Wissenschaften, die hinsichtlich ihrer Nutzungsmöglichkeiten eng mit Big Data verbunden sind. Es ermöglicht, die Grenzen der menschlichen Intelligenz bei der Analyse großer Datenströme zu überwinden. Mit den riesigen Datensätzen, die online verfügbar sind, kann künstliche Intelligenz (KI) ohne menschliches Eingreifen selbstständig lernen. Maschinelles Lernen wird beispielsweise im Bereich vernetzter Objekte eingesetzt. Dank ihm kann sich eine KI an die Gewohnheiten der Bewohner eines vernetzten Hauses anpassen und ihre Aufgaben unter Berücksichtigung dieser Gewohnheiten ausführen.
Beispielsweise kann KI die Heizung eines Raumes je nach Wetterlage anpassen. Diese Wissenschaft ermöglicht es uns auch, immer ausgefeiltere Staubsaugerroboter zu haben. gradient descent durch maschinelles Lernen ist das Herzstück der großen Fortschritte in der künstlichen Intelligenz. In der Praxis gibt es viele Anwendungen des gradient descent durch Ingenieure und KI-Spezialisten.
Es ist nützlich für Suchmaschinen wie Google und beliebte Empfehlungsmaschinen wie YouTube, Netflix oder Amazon. Basierend auf den von Benutzern gesammelten Daten versuchen die Algorithmen, die Interessen des Internetbenutzers zu verstehen. Dadurch können sie relevante Suchergebnisse und bessere Empfehlungen anbieten.
Dank maschinellem Lernen sind Computer nun in der Lage, die menschliche Sprache zu verstehen und zu verarbeiten. Diese Anwendung hat digitale Assistenten wie Alexa, Google Assistant und Siri hervorgebracht. Auch für Videospielentwickler sind maschinelles Lernen und gradient descentanwendungen sehr nützlich. Ziel ist es, KIs in die Lage zu versetzen, die meisten menschlichen Aufgaben zu meistern, damit sich die Menschen auf wertvollere Tätigkeiten konzentrieren können. Künstliche Intelligenz und maschinelles Lernen ermöglichen es Unternehmen, die Bedürfnisse ihrer Kunden und zukünftige Trends vorherzusehen.
So implementieren Sie gradient descent
gradient descent ist ein Algorithmus, der aufgrund der Rechenkomplexität bei linearen Regressionen verwendet wird. Die allgemeine mathematische Formel für gradient descentlautet xt+1= xt- η∆xt, wobei η die Lernrate und ∆xt die Abstiegsrichtung darstellt. gradient descent ist ein Algorithmus, der auf konvexe Funktionen anwendbar ist. Wenn ƒ als zu minimierende konvexe Funktion betrachtet wird, besteht das Ziel darin, bei jeder Iteration ƒ(xt+1) ≤ ƒ (xt) zu erhalten.
Die Idee besteht darin, diesen Algorithmus zu verwenden, der nach und nach das Minimum einer mathematischen Funktion berechnet. Bei bestimmten Gleichungen ist dies die beste Lösungsmethode. Wenn wir über gradient descent sprechen, müssen wir auch das Konzept einer Kostenfunktion verstehen. In einem überwachten Modus ermöglicht diese Funktion die Messung der Fehlerspanne zwischen einer Schätzung und dem tatsächlichen Wert. Die Formel zur Berechnung des mittleren quadratischen Gradienten im Fall eines linearen Regressionsproblems lautet wie folgt:
Bei der Anwendung des gradient descent kommt auch das Konzept der Lernrate zum Einsatz. Dabei handelt es sich um einen Hyperparameter, der die Anpassung der Netzwerkgewichte in Bezug auf den Verlustgradienten steuert. Es ist zu beachten, dass eine optimale Lernrate sehr wichtig ist, um schneller und effizienter ein Minimum zu erreichen. Sie sollte weder zu hoch noch zu niedrig sein.
Wenn der Wert sinkt, zeigt dies, dass man sich allmählich entlang der Abwärtskurve bewegt. Mehrere Optimierungsmethoden verwenden den gradient descentalgorithmus, z. B. RMSprop, Adam und SGD. Um bei der Verwendung dieses Algorithmus keine Fehler zu machen, wird empfohlen, seine Parameter sorgfältig auszuwählen. Man sollte auch bedenken, dass das gefundene Minimum möglicherweise nicht als globales Minimum betrachtet wird.
Die Hauptfunktion eines Gradienten besteht darin, die Änderung jedes Gewichts im Vergleich zur Änderung der Fehler zu messen. Stellen Sie sich Gradienten als die Steigung einer Funktion vor. Die Steigung ist umso steiler, je höher der Gradient ist – dies ist eine günstige Voraussetzung für Modelle, da sie schnell lernen können. Das Modell hört jedoch mit dem Lernen auf, wenn die Steigung Null wird. Mathematisch gesehen könnte ein Gradient als endliche Ableitung in Bezug auf seine Eingaben beschrieben werden.
Im Implementierungsteil werden wir zwei Funktionen schreiben. Eine davon ist die Kostenfunktion, die die tatsächliche Ausgabe und die vorhergesagte Ausgabe als Eingabe verwendet und den Verlust zurückgibt. Die zweite ist die eigentliche gradient descentfunktion, die die unabhängige Variable und die Zielvariable (abhängige Variable) als Eingabe verwendet und mithilfe des gradient descentalgorithmus die am besten passende Linie findet.
Die Iterationen, die Lernrate und der Abbruchschwellenwert sind die Abstimmungsparameter des gradient descentalgorithmus und können vom Benutzer festgelegt werden. In der Hauptfunktion initialisieren wir zufällige linear verknüpfte Daten und wenden den gradient descentalgorithmus auf die Daten an, um die am besten passende Linie zu finden. Das mit dem gradient descentalgorithmus ermittelte optimale Gewicht und die optimale Verzerrung werden dann verwendet, um die Linie der besten Anpassung in der Hauptfunktion zu zeichnen.
Die Ausgabe des folgenden Codes lautet wie folgt:
Sie können den obigen Code mit diesem Notebook testen und ausführen .
Lernrate: Die Rolle der Hyperparameter
Ein weiteres wichtiges Element ist die Lernrate. Beim maschinellen Lernen nennen wir diese Art von Faktor einen Hyperparameter, da er strenggenommen kein Parameter unseres Modells ist, aber dennoch (genau wie die Modellparameter) Auswirkungen auf die endgültige Leistung unseres Modells hat.
Die Lernrate (oft als α oder manchmal als η bezeichnet) gibt die Geschwindigkeit an, mit der sich die Koeffizienten entwickeln. Diese Größe kann fest oder variabel sein. Eine der derzeit beliebtesten Methoden heißt Adam und hat eine Lernrate, die mit der Zeit skaliert.
Beim Einsatz des gradient descent sind viele Szenarien zu erwarten und zu berücksichtigen:
Lernrate zu hoch
Wenn die Lernrate zu groß ist, werden Sie beim gradient descent zu große Schritte machen. Dies hat den Vorteil, dass Sie schnell zum Minimum der Kostenfunktion gelangen, aber Sie laufen Gefahr, dieses Minimum zu verfehlen, indem Sie im Unendlichen darum herum oszillieren. In der Talanalogie ist es so, als würden Sie sich jedes Mal mehrere Kilometer bewegen und so an der Schutzhütte vorbeikommen, ohne es zu merken.
Lernrate zu klein
Um den vorherigen Fall zu vermeiden, könnten Sie versucht sein, eine sehr niedrige Lernrate zu wählen. Wenn sie jedoch zu klein ist, besteht das Risiko, dass es unendlich lange dauert, bis Sie zum Minimum der Kostenfunktion konvergieren. Es ist ein bisschen so, als würden Sie sich entscheiden, Millimeter für Millimeter den Berg hinaufzuklettern, um den tiefsten Punkt im Tal zu finden.
- Warum sind Lernraten so wichtig?
Es ist wichtig, die Lernraten auf geeignete Werte einzustellen, damit der gradient descentlokale Minima erreicht. Daher sollten sie am besten weder zu hoch noch zu niedrig eingestellt werden. Dies ist wichtig, da das Erreichen des Minimums bei zu langen Schritten kompliziert werden könnte. Wenn wir die Lernraten auf niedrigere Werte einstellen, erreicht der gradient descent möglicherweise schließlich seine lokalen Minima. Dies kann jedoch einige Zeit dauern.
Auswirkungen unterschiedlicher Lernraten auf die Konvergenz (Bildnachweis: cs231n )
- So finden Sie die besten Lernraten
Leider gibt es keine Zauberformel, um die richtige Lernrate zu finden. Meistens muss man herumprobieren und mehrere Werte ausprobieren, bis man den richtigen findet. Dies nennt man Hyperparameter-Tuning, und es gibt verschiedene Strategien, um dies richtig zu machen.
Eine gute Möglichkeit, einen optimalen Betrieb des gradient descent sicherzustellen, besteht darin, die Kostenfunktion während der laufenden Optimierung einzurichten. Geben Sie die Anzahl der Wiederholungen auf der X-Achse ein, und der Wert der Kostenfunktion wird auf der Y-Achse angezeigt. Auf diese Weise können Sie den Wert der Kostenfunktion nach jeder gradient descentsiteration sehen und gleichzeitig die Genauigkeit der Lernrate verfolgen. Sie können auch verschiedene Werte ausprobieren und sie zusammen darstellen stable diffusion xl.
Wenn der gradient descent optimal funktioniert, verringert sich die Kostenfunktion nach jeder Iteration. Wenn die Kostenfunktion nicht reduziert werden kann, konvergiert der gradient descent und bleibt auf demselben Niveau. Die Anzahl der Iterationen, die für die Konvergenz des gradient descent erforderlich sind, variiert erheblich. Manchmal sind fünfzig Iterationen erforderlich, manchmal können es bis zu zwei oder drei Millionen sein. Es ist schwierig, die Anzahl der Iterationen im Voraus abzuschätzen.
Einige Algorithmen können Ihnen automatisch mitteilen, ob beim gradient descent eine Konvergenz stattgefunden hat. Es wäre jedoch besser, im Voraus einen Konvergenzschwellenwert festzulegen, der ebenfalls recht schwer abzuschätzen ist. Dies ist ein wichtiger Grund, warum sich einfache Diagramme am besten für Konvergenztests eignen.
Fazit
Während Wissenschaftler gradient descent verwenden, um die Werte der Parameter einer Funktion zu ermitteln und so die Funktionskosten zu minimieren, verwenden Programmierer gradient descent als Optimierungsalgorithmus beim Trainieren von Modellen für maschinelles Lernen. Beim gradient descent werden einige seiner Parameter iterativ angepasst, um eine bestimmte Funktion basierend auf konvexen Funktionen zu minimieren.
gradient descent ist wahrscheinlich die bekannteste Optimierungsstrategie, die im Deep Learning und im maschinellen Lernen verwendet wird. Datenwissenschaftler verwenden ihn häufig, wenn die Möglichkeit besteht, jeden Algorithmus mit Lernmodellen zu kombinieren. Den gradient descentalgorithmus zu verstehen ist relativ einfach, und seine Implementierung ist sogar noch einfacher. Um tiefer in den Bereich des Deep Learning einzutauchen, sehen Sie sich unseren vollständigen Katalog mit Kursen zum maschinellen Lernen an .