Transfer Learning

Transfer Learning für das Training von Deep-Learning-Modellen

Transfer Learning ist ein Deep-Learning-Ansatz, bei dem ein 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 neu zu trainieren, gelingt gewöhnlich viel schneller und einfacher, als ein Netz von Grund auf zu trainieren. Dieser Ansatz wird meist für Anwendungen aus der Objekt-, Bild- und Spracherkennung oder Ähnliches verwendet.

Transfer Learning ist eine beliebte Technik, weil:

  • Man damit Modelle mit kleineren Mengen gelabelter 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 nicht von auf Grund auf erlernt, da das vortrainierte Modell die Gewichtungen bereits anhand des früher Erlernten kennt.
  • Sie können von Modellarchitekturen profitieren, die von der Community aus der Deep-Learning-Forschung entwickelt wurden, darunter auch beliebte Architekturen wie GoogLeNet und ResNet.

Vortrainierte Modelle für das 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 Beispielbildern trainiert wurde.

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

  • Größe: Wie 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.
  • Genauigkeit: Wie war die Leistung des Modells schon vor dem Neutraining? In der Regel wird ein Modell, das gute Leistung mit ImageNet erbringt, einem häufig genutzten Datensatz mit einer Million Bildern und Tausend Bilderklassen, 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.
  • Vorhersage-Geschwindigkeit: Wie schnell kann das Modell Vorhersagen anhand neuer Inputs treffen? Auch wenn die Vorhersage-Geschwindigkeit aufgrund anderer Deep-Learning-Parameter wie Hardware und Batch-Größe variieren kann, wird sie ebenfalls von der Architektur des ausgewählten Modells und seiner Größe abhängen.

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

Mit MATLAB und der Deep Learning Toolbox haben Sie mit einer einzigen Codezeile Zugriff auf vortrainierte Netze aus der neuesten Forschung.  Die Toolbox gibt außerdem Tipps zur Auswahl des passenden Netzes für Ihr Transfer-Learning-Projekt.

Welches Modell ist das Beste für Ihre Transfer-Learning-Anwendung?

Da die Auswahl an Modellen für das Transfer Learning groß ist, muss man sich immer die Kompromisse und Gesamtziele für das konkrete Projekt vor Augen führen. Ein Netz mit relativ geringer Genauigkeit kann beispielsweise perfekt für eine neue Deep-Learning-Aufgabe geeignet sein. Ein guter Ansatz ist es, verschiedene Modelle auszuprobieren und so genau das zu finden, das am besten zu Ihrer Anwendung passt.

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

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

Mit dem Deep Network Designer lassen sich in kurzer Zeit verschiedene vortrainierte Modelle für Ihr Projekt auswerten und so die Kompromisse zwischen den verschiedenen Modellarchitekturen besser verstehen.

Der Transfer-Learning-Workflow

Es gibt zwar viele verschiedene Transfer-Learning-Architekturen und -Anwendungen, aber die meisten Transfer-Learning-Workflows folgen einer typischen Abfolge von Schritten.

  1. Auswahl eines vortrainierten Modells. Zum Einstieg kann es hilfreich sein, ein relativ einfaches Modell zu wählen. In diesem Beispiel wird GoogLeNet verwendet, ein beliebtes Netz mit 22 Ebenen Tiefe, das so trainiert wurde, dass es 1000 Objektkategorien klassifizieren kann.
  1. Ersetzen der letzten Ebenen. Um das Netz so neu zu trainieren, dass es einen neuen Satz Bilder und Klassen klassifiziert, ersetzen Sie die letzten Ebenen des GoogLeNet-Modells. Die letzte vollständig verbundene Ebene wird so modifiziert, dass sie dieselbe Anzahl an Knoten enthält, wie es neue Klassen gibt, und eine neue Klassifikationsebene, die eine Ausgabe auf Basis der von der softmax-Ebene berechneten Wahrscheinlichkeiten erstellt.
  • Nach der Bearbeitung der Ebenen gibt die letzte vollständig verbundene Ebene die neue Anzahl an Klassen an, die das Netz erlernt, und die Klassifikationsebene bestimmt die Ausgaben der 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 neu trainieren, dass es nur die fünf (oder jede andere Anzahl) Objektkategorien klassifiziert, an denen Sie interessiert sind.
  1. Optionales Einfrieren der Gewichtungen. Die Gewichtungen früherer Ebenen im Netz lassen sich 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. Neu-Trainieren des Modells. Durch das Neutraining 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 benötigt als beim Trainieren eines Modells von Grund auf.
  3. Vorhersage und Bewertung der Genauigkeit von Netzen. Nach dem Neutraining des Modells können Sie neue Bilder klassifizieren und die Netzleistung bewerten.

    Von Grund auf trainieren oder Transfer Learning?

    Die beiden typischerweise genutzten Ansätze beim Deep Learning sind das Trainieren eines Modells von Grund auf und das Transfer Learning.

    Ein Modell von Grund auf zu entwickeln und zu trainieren eignet sich besser für hochspezifische 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 erfordert, um genaue Ergebnisse zu liefern. Haben Sie etwa bei einer Textanalyse keinen Zugriff auf ein für Textanalysen vortrainiertes Modell, aber auf eine große Menge Beispieldaten, ist die wahrscheinlich beste Herangehenweise, ein Modell von Grund auf zu entwickeln.

    Transfer Learning ist nützlich für Aufgaben wie die Objekterkennung, für die es eine Vielzahl beliebter vortrainierter Modelle gibt. Wenn Sie beispielsweise Blumenbilder klassifizieren müssen und nur eine begrenzte Anzahl von Blumenbildern haben, können Sie Gewichtungen und Ebenen von einem AlexNet-Netz übertragen, die letzte Klassifikationsebene ersetzen und Ihr Modell mit den Ihnen vorliegenden Bildern neu trainieren.

Der Transfer-Learning-Workflow: Netz laden, Ebenen ersetzen, Netz trainieren und Genauigkeit bewerten.

In solchen Fällen ist mit dem Transfer Learning in kürzerer Zeit eine höhere Modellgenauigkeit erreichbar.

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

Ein interaktiver Ansatz für das Transfer Learning

Mit Deep Network Designer können Sie interaktiv den gesamten Transfer-Learning-Workflow erledigen – einschließlich Import eines vortrainierten Modells, Ändern der letzten Ebenen und Neutrainieren des Netzes mithilfe neuer Daten, und das ganz oder fast ohne Programmieren.

Deep Network Designer ist ein Point-and-Click-Tool zum Erstellen und Modifizieren tiefer Neuronaler Netze in MATLAB. Dieses Video zeigt, wie die App in einem Transfer-Learning-Workflow eingesetzt wird.

Weitere Informationen finden Sie bei der Deep Learning Toolbox und Computer Vision Toolbox™.

Siehe auch: deep learning, convolutional neural networks, GPU Coder, artificial intelligence, biomedical signal processing