Transfer Learning

Was ist Transfer Learning?

Transfer Learning ist ein Deep-Learning-Ansatz, bei dem ein bereits für eine Aufgabe trainiertes Modell als Ausgangspunkt für ein Modell verwendet wird, das eine ähnliche Aufgabe ausführt. Ein Netz mit Transfer Learning zu aktualisieren und umzutrainieren, gelingt schneller und einfacher, als ein Netz von Grund auf zu trainieren. Transfer Learning wird bei der Bildklassifizierung, der Objekterfassung, der Spracherkennung und anderen Anwendungen eingesetzt.

Warum ist Transfer Learning wichtig?

Mit Transfer Learning können Sie von der Expertise in der Deep-Learning-Community profitieren. Beliebte vortrainierte Modelle bieten eine robuste Architektur und müssen nicht von Grund auf trainiert werden. Transfer Learning wird häufig beim beaufsichtigten Lernen eingesetzt, weil

  • man damit Modelle mit weniger gelabelten Daten trainieren kann, indem beliebte Modelle wiederverwendet werden, die bereits an großen Datensätzen trainiert wurden.
  • Damit Trainingszeit und Rechen-Ressourcen eingespart werden können. Beim Transfer Learning werden die Gewichtungen im neuronalen Netz nicht von auf Grund auf erlernt, da das vortrainierte Modell die Gewichtungen bereits anhand des früher Erlernten kennt.
  • Sie von Modellarchitekturen profitieren können, die von der Community aus der Deep-Learning-Forschung entwickelt wurden, darunter auch beliebte Architekturen wie GoogLeNet und ResNet.
Transfer-Learning-Diagramm mit Wissenstransfer von Modell 1 (mit Datensatz 1 trainiert) auf Modell 2 (mit Datensatz 2 trainiert). Datensatz 1 ist größer als Datensatz 2.

Übertragen Sie Wissen von einem vortrainierten Modell auf ein anderes Modell, das mit weniger gelabelten Daten trainiert werden kann.

Von Grund auf trainieren oder Transfer Learning?

Zum Erstellen eines Deep-Learning-Modells können Sie ein Modell von Grund auf trainieren oder an einem vortrainierten Modell Transfer Learning durchführen.

Ein Modell von Grund auf zu entwickeln und zu trainieren, funktioniert besser bei hochspezifischen Aufgaben, für die keine bereits vorhandenen Modelle genutzt werden können. Der Nachteil dieses Ansatzes ist, dass er in der Regel eine große Menge von Daten benötigt, um genaue Ergebnisse zu liefern. Ein Modell von Grund auf zu erstellen, funktioniert auch in solchen Fällen gut, in denen kleinere Netze die gewünschte Genauigkeit erreichen können. Beispielsweise sind rekurrente neuronale Netze (RNNs) und Netze mit Langzeitgedächtnis (LSTM) besonders effektiv bei sequenziellen Daten unterschiedlicher Länge. Sie lösen Probleme wie Signalklassifizierung und Zeitreihenprognosen.

Transfer Learning eignet sich bei Aufgaben, für die es bereits verschiedene vortrainierte Modelle gibt. Zum Beispiel werden viele beliebte neuronale Faltungsnetze (CNNs) am ImageNet-Datensatz vortrainiert: Er enthält über 14 Mio. Bilder und 1000 Bildklassen. Müssen Sie Bilder von Blumen in Ihrem Garten klassifizieren (oder andere Bilder, die es noch nicht im ImageNet-Datensatz gibt), und Sie verfügen nur über eine begrenzte Anzahl von Blumenbildern, können Sie Ebenen und ihre Gewichtungen von einem SqueezeNet-Netz übertragen, die letzten Ebenen ersetzen und Ihr Modell mit den Ihnen vorliegenden Bilder umtrainieren.

Mit dieser Methode erhalten Sie über das Transfer Learning in kürzerer Zeit ein genaueres Modell.

Vergleich der Netzleistung anhand des Trainings zwischen Netzen mit und ohne Transfer Learning. Die Leistungskurve beim Transfer Learning weist einen höheren Start, eine höhere Steigung und eine höhere Asymptote auf.

Vergleich der Netzleistung (Genauigkeit) beim Trainieren von Grund auf und beim Transfer Learning.

Anwendungen zum Transfer Learning

Transfer Learning ist bei vielen Deep-Learning-Anwendungen beliebt, darunter:

Computer Vision

Computer-Vision-Anwendungen beinhalten Bilderkennung, Objekterfassung, Bildsegmentierung und die Verarbeitung von LiDAR-Punktwolken. Sehen Sie sich das MATLAB-Beispiel Klassifizierung von Tumoren in blockförmigen Multiresolution-Bildern mithilfe von Transfer Learning an.

Sprach- und Tonverarbeitung

Sehen Sie sich das MATLAB-Beispiel Transfer Learning mit vortrainierten Audionetzen in Deep Network Designer an.

Textanalysen

Sehen Sie sich das MATLAB GitHub-Beispiel Feinabstimmung des BERT-Modells für japanische Texte an.

Vortrainierte Modelle zum Transfer Learning

Im Zentrum des Transfer Learning steht das vortrainierte Deep-Learning-Modell, das von Deep-Learning-Forschern erstellt und mithilfe von Tausenden oder Millionen von Beispieldatenpunkten trainiert wurde.

Es gibt viele vortrainierte Modelle, von denen jedes Vor- und Nachteile aufweist, die zu berücksichtigen sind:

  1. Vorhersage-Geschwindigkeit: Wie schnell kann das Modell Vorhersagen zu neuen Eingaben liefern? Auch wenn die Vorhersage-Geschwindigkeit aufgrund anderer Faktoren wie Hardware und Batch-Größe variieren kann, hängt sie auch von der Architektur des ausgewählten Modells und seiner Größe ab.
  2. Größe: Wie groß ist der für das Modell gewünschte Speicherbedarf? Wie wichtig die Größe Ihres Modells ist, hängt davon ab, wo und wie Sie es bereitstellen wollen. Soll es auf Embedded Hardware oder einem Desktop-PC ausgeführt werden? Die Größe des Netzes ist besonders wichtig, wenn es auf einem System mit kleinem Arbeitsspeicher bereitgestellt wird.
  3. Genauigkeit: Wie gut war die Leistung des Modells vor dem Umtrainieren? In der Regel wird ein Modell, das gute Leistung mit ImageNet erbringt, auch bei neuen, ähnlichen Aufgaben gute Leistung zeigen. Ein niedriger Genauigkeits-Score bei ImageNet bedeutet jedoch nicht notwendigerweise, dass das Modell bei allen Aufgaben schlecht abschneiden wird.
Vergleich von Modellgröße, Vorhersagegeschwindigkeit und Genauigkeit vorab trainierter CNN-Modelle, die für Transfer Learning verwendet werden können.

Vergleich zwischen Größe, Geschwindigkeit und Genauigkeit von Modellen für beliebte vortrainierte CNN-Netze.

Welches Modell ist das Beste für Ihren Transfer-Learning-Workflow?

Da viele Transfer-Learning-Modelle zur Auswahl stehen, muss man sich immer die Kompromisse und Gesamtziele für das konkrete Projekt vor Augen führen. Ein guter Ansatz ist es, verschiedene Modelle auszuprobieren, um das zu finden, das am besten zu Ihrer Anwendung passt.

Einfache Modelle für den Einstieg, wie GoogLeNet, VGG-16 und VGG-19 können Sie schnell iterieren sowie mit verschiedenen Datenaufbereitungsschritten und Trainingsoptionen experimentieren. Sobald Sie wissen, welche Einstellungen gut funktionieren, können Sie ein genaueres Netz ausprobieren und sehen, ob es Ihre Ergebnisse verbessert.

Speicher- und rechentechnisch effiziente Modelle wie SqueezeNet, MobileNet-v2 und ShuffleNet sind gute Optionen, wenn die Umgebung, in der das Modell bereitgestellt werden soll, dessen Größe einschränkt.

So erhalten Sie vortrainierte Modelle in MATLAB

Erkunden Sie den MATLAB Deep Learning Modell Hub, um nach Kategorie auf die neuesten Modelle zuzugreifen und Tipps zur Auswahl eines Modells zu erhalten. Die meisten Modelle lassen sich mit einer einzelnen MATLAB-Funktion laden, beispielsweise der darknet19-Funktion.

Außerdem können Sie auf vortrainierte Netze von externen Plattformen zugreifen. Sie können ein Modell von TensorFlow™, PyTorch® oder ONNX™ mithilfe einer Importfunktion wie importNetworkFromTensorFlow in ein MATLAB-Modell konvertieren.

Beziehen Sie vortrainierte Deep-Learning-Modelle direkt von MATLAB oder von externen Deep-Learning-Plattformen (PyTorch, TensorFlow und ONNX).

Anwendung von Transfer Learning auf den Softsensor-Entwurf

Lesen Sie, wie Poclain Hydraulics die Vorteile von vortrainierten Netzen in MATLAB genutzt und damit den Entwurf von Softsensoren beschleunigt hat.

„Wir haben zwei neuronale Netze gefunden, die bereits in MATLAB implementiert sind, und mit diesen neuronalen Netzen konnten wir die Codes in die Hardware einbetten, um die Temperatur in Echtzeit vorherzusagen.“

Bruno Dandine, Poclain Hydraulics

Transfer Learning mit MATLAB

Wenn Sie MATLAB mit der Deep Learning Toolbox™ einsetzen, können Sie auf Hunderte von vortrainierten Modellen zugreifen und Transfer Learning mit integrierten Funktionen oder interaktiven Apps durchführen. Bei anderen Transfer-Learning-Anwendungen sind möglicherweise auch andere Toolboxen wie die Computer Vision Toolbox™, die Audio Toolbox™, die Lidar Toolbox™ oder die Text Analytics Toolbox™ erforderlich.

Der Ablauf beim Transfer Learning

Der Ablauf beim Transfer Learning umfasst die Auswahl, das Abändern, das Umtrainieren und den Einsatz eines vortrainierten Netzes, um mit neuen Daten eine Vorhersage zu treffen.

Diagramm mit Ablaufschritten beim Transfer Learning.

Es gibt zwar verschiedene Transfer-Learning-Architekturen und -Anwendungen, doch die meisten Abläufe beim Transfer Learning folgen einer gemeinsamen Abfolge von Schritten. Die folgende Abbildung zeigt den Transfer-Learning-Ablauf bei der Bildklassifizierung. Transfer Learning wird an einem vortrainierten GoogLeNet-Modells, einem Netz mit 22 Ebenen Tiefe, das dazu trainiert wurde, 1000 Objektkategorien zu klassifizieren.

  1. Wählen Sie ein vortrainiertes Modell aus. Zum Einstieg kann es hilfreich sein, ein relativ einfaches Modell zu wählen.
Vorab trainiertes CNN-Modell, das für Transfer Learning in Bildklassifizierungsaufgaben verändert werden kann.

Architektur des GoogLeNet-Modells, einem Netz mit 22 Ebenen Tiefe, das dazu trainiert wurde, 1000 Objektkategorien zu klassifizieren.

  1. Ersetzen Sie die letzten Ebenen. Um das Netz so umzutrainieren, dass es einen neuen Satz Bilder und Klassen klassifiziert, ersetzen Sie die letzte lernfähige Ebene und die letzte Klassifizierungsebene des GoogLeNet-Modells. Die letzte vollständig verbundene Ebene (letzte lernfähige Ebene) wird so modifiziert, dass sie dieselbe Anzahl an Knoten enthält, wie es neue Klassen gibt. Die neue Klassifikationsebene erstellt eine Ausgabe auf Basis der von der softmax-Ebene berechneten Wahrscheinlichkeiten.
Das Ersetzen der letzten Ebenen eines vorab trainierten CNN-Modells vor dem erneuten Training des Modells ist entscheidend für Transfer Learning.

Ersetzen Sie die letzte lernfähige Ebene und die letzte Klassifikationsebene eines CNN-Modells, bevor Sie es umtrainieren.

Nach der Bearbeitung der Ebenen gibt die letzte, vollständig verbundene Ebene die  neue Anzahl an Klassen an, die das Netz erlernt. Die Klassifikationsebene bestimmt die Ausgaben von den neu verfügbaren Ausgabekategorien. Beispielsweise wurde GoogLeNet ursprünglich in 1000 Kategorien trainiert, doch durch das Ersetzen der letzten Ebenen können Sie es so umtrainieren, dass es nur die fünf (oder jede andere Anzahl) Kategorien der Objekte klassifiziert, an denen Sie interessiert sind.

  1. Sperren Sie optional die Gewichtungen. Sie können die Gewichtungen früherer Ebenen im Netz sperren, indem Sie die Lernraten in diesen Ebenen auf null setzen. Beim Trainieren werden die Parameter der gesperrten Ebenen nicht aktualisiert, was das Netztraining erheblich beschleunigt. Ist der neue Datensatz klein, kann das Sperren von Gewichtungen auch verhindern, dass das Netz an die neuen Daten überangepasst wird.
  2. Trainieren Sie das Modell um. Durch das Umtrainieren wird das Netz so aktualisiert, dass es mit den neuen Bildern und Kategorien in Zusammenhang stehende Merkmale erlernt und identifiziert. In den meisten Fällen werden beim Neutraining weniger Daten als beim Trainieren eines Modells von Grund auf benötigt.
  3. Prognostizieren und bewerten Sie die Netzgenauigkeit. Nach dem Umtrainieren des Modells können Sie neue Bilder klassifizieren und die Netzleistung bewerten.

Ein interaktiver Ansatz für das Transfer Learning

Mit der Deep Network Designer-App können Sie interaktiv den gesamten Ablauf des Transfer Learning abschließen – einschließlich des Auswählens und Importierens (aus MATLAB, TensorFlow oder PyTorch) eines vortrainierten Modells, des Änderns der letzten Ebenen und des Umtrainierens des Netzes mithilfe neuer Daten – und das mit geringem oder völlig ohne Programmieraufwand.

Erfahren Sie mehr über Transfer Learning

Sehen Sie das Video an, um mit Transfer Learning auf Befehlszeilenebene oder mit dem Deep Network Designer zu beginnen.

Verwandte Themen