Technologische Neuigkeiten, Bewertungen und Tipps!

Einfluss von Optimierern in Bildklassifikatoren – Auf dem Weg zur KI

Hinweis: Der folgende Artikel hilft Ihnen dabei: Einfluss von Optimierern in Bildklassifikatoren – Auf dem Weg zur KI

Ursprünglich veröffentlicht auf Towards AI, dem weltweit führenden Nachrichten- und Medienunternehmen für KI und Technologie. Wenn Sie ein KI-bezogenes Produkt oder eine KI-bezogene Dienstleistung entwickeln, laden wir Sie ein, darüber nachzudenken, KI-Sponsor zu werden. Bei Towards AI helfen wir bei der Skalierung von KI- und Technologie-Startups. Wir helfen Ihnen dabei, Ihre Technologie der breiten Masse zugänglich zu machen.

EINFÜHRUNG

Haben Sie sich jemals gefragt, warum ein DNN hinsichtlich der Genauigkeit nicht die erwartete Leistung erbringt, insbesondere wenn es offizielle oder inoffizielle Berichte von Experten und Enthusiasten gibt, die mit demselben Netzwerk und demselben Datensatz, den Sie verwenden, Spitzenleistungen erzielen? Ich erinnere mich, dass es mir schwer fiel, mich mit dem Gedanken auseinanderzusetzen, dass meine Modelle einfach versagt haben, obwohl von ihnen eine gute Leistung erwartet wurde. Was verursacht das? Tatsächlich gibt es viele Faktoren mit unterschiedlichem Potenzial, die Leistung Ihrer Architektur zu beeinflussen. Ich werde in diesem Artikel jedoch nur auf eine davon eingehen. Dieser Faktor ist „Die Wahl des zu verwendenden Optimierungsalgorithmus“.

Was ist ein Optimierer? Ein Optimierer ist eine Funktion oder ein Algorithmus, der für die Änderung neuronaler Netzwerkattribute (z. B. Gewichtungen, Lernraten) erstellt und verwendet wird, um die Konvergenz zu beschleunigen und gleichzeitig Verluste zu minimieren und die Genauigkeit zu maximieren. DNNs verwenden Millionen von Milliarden Parametern, und Sie benötigen die richtigen Gewichtungen, um sicherzustellen, dass Ihr DNN gut aus den gegebenen Daten lernt und gleichzeitig gut verallgemeinert und angepasst wird, um eine gute Leistung bei unsichtbaren verwandten Daten zu erzielen.

Im Laufe der Jahre wurden verschiedene Optimierungsalgorithmen entwickelt, und einige dieser Algorithmen haben gegenüber anderen sowohl Vorteile als auch Nachteile. Daher ist es unerlässlich, die Grundlagen dieser Algorithmen zu kennen und das Problem zu verstehen, an dem gearbeitet wird, damit wir den besten Optimierer für die Arbeit auswählen können.

Darüber hinaus ist mir aufgefallen, dass viele Forscher den SGD-M-Optimierer (Stochastic Gradient Descent with Momentum) verwenden, in der Industrie jedoch Adam bevorzugt wird. In diesem Artikel werde ich kurze, allgemeine Beschreibungen der beliebtesten Optimierer geben, die in der KI-Welt verwendet werden. Tatsächlich musste ich eine Reihe von Experimenten durchführen, um den Unterschied zwischen diesen Optimierern zu erkennen und einige Fragen zu beantworten, die ich zur Verwendung dieser Optimierer habe, sowie Hinweise darauf zu geben, welcher Optimierer der beste ist und wann/wie man ihn basierend darauf verwendet meine Beobachtungen.

GRUNDBESCHREIBUNG VERSCHIEDENER OPTIMIZER

In diesem Abschnitt werde ich kurz den Stochastic Gradient Descent with Momentum (SGDM), den Adaptive Gradient Algorithm (ADAGRAD), die Root Mean Squared Propagation (RMSProp) und die Adam-Optimierer besprechen.

SGDM: Da der Gradient Descent (GD)-Optimierer die gesamten Trainingsdaten verwendet, um die Gewichte des Modells zu aktualisieren, wird es sehr rechenintensiv, wenn wir Millionen von Datenpunkten haben. Aus diesem Grund wurde der Stochastic Gradient Descent (SGD) entwickelt, um dieses Problem zu lösen, indem jeder Datenpunkt zum Aktualisieren der Gewichte verwendet wird. Dennoch war dies für neuronale Netze (NN) rechenintensiv, da jeder im NN verwendete Datenpunkt sowohl Vorwärts- als auch Rückwärtsausbreitungen erforderte. Außerdem können wir mit SGD die Lernrate nicht erhöhen, während versucht wird, das globale Minimum zu erreichen. Dies macht die Konvergenz bei Verwendung des SGD sehr langsam. Der SGDM war die Lösung für dieses Problem, da er dem normalen SGD einen Impulsterm hinzufügte, der die Konvergenzgeschwindigkeit verbesserte. Für tiefergehende Erklärungen klicken Sie hier.

ADAGRAD: Der adaptive Gradientenalgorithmus (Adagrad) ist ein Algorithmus zur Gradienten-basierten Optimierung, der versucht, die Lernrate an die Parameter anzupassen. Die Lernrate passt die Parameter Komponente für Komponente an, indem Erkenntnisse aus früheren Beobachtungen einbezogen werden. Es nimmt kleinere Aktualisierungen der Parameter vor, die mit häufigen Funktionen verbunden sind, und größere Aktualisierungen derjenigen mit Funktionen, die nicht häufig vorkommen. Adagrad macht außerdem die manuelle Anpassung der Lernrate überflüssig, da es die Lernrate basierend auf den Parametern automatisch aktualisiert. Die Lernrate nimmt jedoch schnell ab, sodass das Modell davon ausgeht, dass es kurz vor dem Erreichen der Konvergenz steht und die erwartete Leistung etwas verfehlt. Um mehr zu erfahren, klicken Sie hier.

RMSProp: Der von Geoffrey Hinton vorgeschlagene (obwohl noch unveröffentlichte) RMSProp ist eine Erweiterung der GD- und der AdaGrad-Version des Gradientenabstiegs, die einen abklingenden Durchschnitt von Teilgradienten bei der Anpassung der Schrittgröße für jeden Parameter verwendet. Es wurde festgestellt, dass die Größe der Gradienten für verschiedene Parameter unterschiedlich sein kann und sich während des Trainings ändern kann. Daher könnte die automatische Wahl der Lernrate durch Adagrad die nicht optimierte Wahl sein. Hinton löste dieses Problem, indem er die gelernten Gewichte mithilfe eines gleitenden Durchschnitts der quadrierten Gradienten aktualisierte. Um mehr zu erfahren, klicken Sie hier.

Adam: Dieser Optimierer wurde 2015 von Diederik Kingma und Jimmy Ba vorgeschlagen und kann wohl als der beliebteste Optimierer aller Zeiten angesehen werden. Es kombiniert die Vorteile und Vorteile von SGDM und RMSProp in dem Sinne, dass es die Dynamik von SGDM und die Skalierung von RMSProp nutzt. Im Gegensatz zu GD und SGD ist es recheneffizient und benötigt nur wenig Speicher. Es wurde für den Einsatz bei Problemen mit sehr verrauschten/spärlichen Gradienten entwickelt. Um mehr zu erfahren, klicken Sie hier oder hier.

EXPERIMENTE

Aufgrund der Größe meiner Rechenressourcen habe ich beschlossen, mich auf die Verwendung von LeNet und AlexNet für den CIFAR-10-Datensatz zu konzentrieren. Der CIFAR-10-Datensatz besteht aus 50.000 Trainingsbildern und 10.000 Testbildern. Ich habe diese Modelle für 50 Epochen mit den Optimierern SGD, SGDM, Adagrad, RMSProp und Adam trainiert. Für den SGDM habe ich einen Impuls von 0,9 verwendet. Die globale Lernrate für meine erste Reihe von Experimenten betrug 0,001 (1e-3).

Note: Ich strebe keine sehr guten Ergebnisse an. Stattdessen versuche ich, die Auswirkungen jedes Optimierers auf die Leistung des Modells zu erkennen.

Ich beginne damit, die wichtigen Bibliotheken aufzurufen:

Dann habe ich den CIFAR-10-Datensatz geladen und transformiert:

Die LeNet- und AlexNet-Modelle:

Den vollständigen Code finden Sie hier Repository (Geben Sie einen Stern, wenn es Ihnen nichts ausmacht.)

Die Ergebnisse sind wie folgt.

Beim LeNet-Modell war die Testgenauigkeit von SGDM mit fast 70 % am höchsten, während der Trainingsverlust 0,635 betrug. Adam hatte den geringsten Trainingsverlust, aber ihre Testgenauigkeit betrug nur 67 %. LeNet mit Adagrad war erbärmlich und hatte eine Testgenauigkeit von 48 %, was weitaus geringer war als die SGD mit 54,03 %. RMSProp ergab eine Testgenauigkeit von 65 % und einen Zugverlust von 0,630.

Beim AlexNet-Modell hatte SGDM mit 83,75 % immer noch die beste Testgenauigkeit, dicht gefolgt von Adagrad mit 82,79 %. Allerdings betrug der Trainingsverlust von SGD 0,016, während Adagrad 0,005 hatte, was sehr gering ist und dem Modell kaum Raum für Verbesserungen gab. Das Adam-Ergebnis war überraschend niedrig, wenn man bedenkt, wie hoch die Bewertung im KI-Bereich ist. RMSProp schien kein Konvergenzvertrauen zu haben, hatte aber eine ähnliche Testgenauigkeit wie Adam.

Aus den LeNet-Ergebnissen hätte man leicht schließen können, dass Adagrad ein schlechter Optimierer ist, und aus den AlexNet-Ergebnissen sah RMSProp wie ein Optimierer aus, der in der Lage ist, das Modell bei der Überanpassung an die Trainingsdaten zu unterstützen, aber es geht um mehr als nur um dies frühzeitiger Abschluss. Um dieses Problem zu untersuchen, müssen weitere Experimente durchgeführt werden.

WEITERE EXPERIMENTE

Aufgrund der Ergebnisse von RMSProp und Adam wurde unter Verwendung des AlexNet-Modells ein weiteres Experiment durchgeführt, diesmal mit einer Lernrate von 1e-5.

Nun, das ist eher so. Eine niedrigere Lernrate stabilisierte den RMSProp-Optimierer und verbesserte Adams Leistung. Wir könnten leicht zu dem Schluss kommen, dass es besser ist, niedrigere Lernraten für Optimierer zu verwenden, die Skalierung verwenden. Wir müssen jedoch sicherstellen, dass dies nicht allgemein gilt. Deshalb habe ich versucht, mit SGDM eine niedrigere Lernrate zu verwenden, was zu sehr schlechten Ergebnissen führte. Daher eignen sich niedrigere Lernraten besser für Skalierungsoptimierer.

Dennoch haben wir nicht genügend Experimente, um weitere Beobachtungen zu machen, daher werde ich im nächsten Abschnitt die aktuellen Beobachtungen aus den derzeit kurzen Experimenten zu jedem Optimierer diskutieren.

DISKUSSIONEN UND SCHLUSSFOLGERUNGEN

SGD: Nicht empfohlen! Obwohl es sicher zu einer Konvergenz kommt, braucht es normalerweise Zeit, es zu lernen. Was der SGDM oder Adam in 50 Epochen lernen könnte, wird der SGD in etwa 500 Epochen lernen. Es besteht jedoch eine gute Chance, dass Sie gute Ergebnisse erzielen, wenn Sie mit einer hohen Lernrate (z. B. 1e-1) beginnen. Sie können es auch verwenden, wenn Sie genügend Zeit haben, auf die Konvergenz zu warten; sonst bleib weg.

SGDM: Empfohlen! Dieser Optimierer hat in den Experimenten die besten Ergebnisse geliefert. Allerdings funktioniert es möglicherweise nicht gut, wenn die anfängliche Lernrate niedrig ist. Ansonsten konvergiert es schnell und trägt auch zur Generalisierbarkeit des Modells bei. Es ist absolut empfehlenswert!

Adagrad: Empfehlenswert! Aus den Experimenten könnte man sagen, dass dieser Optimierer am schlechtesten zu verwenden ist, insbesondere wenn Sie ein kleines Modell wie LeNet für komplexe Datensätze verwenden. In tieferen Netzwerken könnten zwar gute Ergebnisse erzielt werden, eine optimale Leistung ist jedoch nicht garantiert.

RMSProp: Empfohlen! Auch dieser Optimierer hat eine sehr gute Leistung erbracht. Bei Verwendung mit einer niedrigeren Lernrate könnten bessere Leistungen erzielt werden. Abgesehen von der Leistung ist die Konvergenzgeschwindigkeit hoch, und wir können den Grund erkennen, warum es manchmal in Produktionsbereichen (Industrie) eingesetzt wird.

Adam: Empfohlen! Nach Ansicht einiger Experten lernt Adam alle Muster, einschließlich des Rauschens im Zugsatz, und konvergiert daher schnell. In den obigen Experimenten können wir jedoch sehen, dass es nicht so gut konvergiert wie das SGDM, aber es konvergiert und lernt schnell. Außerdem könnte ich wetten, dass die Leistung bei größeren Datensätzen (die natürlich mehr Rauschen enthalten würden) besser sein wird als die der anderen oben besprochenen Optimierer.

Ich hoffe, dass Sie mit diesem praktischen Einblick in die heute verwendeten gängigen Optimierer Einblicke und eine Vorstellung davon bekommen haben, warum Optimierer benötigt werden und wie diese Optimierer die Modellleistung beeinflussen. Wenn Sie Vorschläge und Feedback haben, hinterlassen Sie bitte einen Kommentar oder verbinden Sie sich mit mir auf LinkedIn. Danke schön.

Um mehr über diese Optimierer sowie andere Optimierer zu erfahren, die in diesem Artikel nicht behandelt werden, verwenden Sie bitte diesen Link.

Um auf die hier verwendeten Codes zuzugreifen, Repository.


Impact of Optimizers in Image Classifiers wurde ursprünglich in Towards AI auf Medium veröffentlicht, wo die Leute die Diskussion fortsetzen, indem sie diese Geschichte hervorheben und darauf reagieren.

Veröffentlicht über Towards AI

Table of Contents