arrow arrow--cut calendar callback check chevron chevron--large cross cross--large download filter kununu linkedin magnifier mail marker media-audio media-blog media-video menu minus Flieger phone play plus quote share youtube

Transfer Learning

Wie man bessere Modelle baut, indem man bei anderen abguckt

Spätestens seit ChatGPT sind Deep Learning-Modelle aus dem Bereich Natural Language Processing (NLP) in aller Munde. Der Erfolg, gemessen an der Qualität von ChatGPTs Rückgaben („Aussagen“), ist dabei auf folgende Faktoren zurückzuführen: Es wird eine riesige Datenmenge benötigt, welche anschließend in ein mathematisches Modell mit einer ebenso riesigen Anzahl an justierbaren Parametern gekippt wird. Hinsichtlich der Größenordnung wurde das Basismodell für ChatGPT unter anderem auf der gesamten englischen Wikipedia trainiert und mit 175 Milliarden Parametern ausgestattet [1]. Tatsächlich ist laut aktuellem Stand der Forschung der naive Ansatz frei nach dem Motto „viel hilft viel“ durchaus valide. Forscher*innen zeigen in ihrem Paper „Scaling Laws for Neural Language Models“, dass die Performance von großen Sprachmodellen immer weiter verbessert werden kann, wenn man nur mehr Daten aufwendet, mehr Parameter für das Modell definiert und mehr Compute-Power mitbringt [2]. Gleichzeitig argumentieren sie, dass es noch keine Obergrenze zu geben scheint, ab welcher man über das Aufwenden von mehr Ressourcen keine signifikante Verbesserung in der Modellperformance mehr beobachten kann. 

Foto von Timo Walter
Timo Walter

Data Scientist

Dies impliziert einen Wettbewerbsvorteil für all jene, die mit großen Budgets Zugriff auf eben solche Ressourcen haben. Ebenso erweckt es den Eindruck, als benötige man eine Unmenge an eigenen Daten, um wirklich beeindruckende Ergebnisse mit einer KI erzielen zu können. Heißt das nun, dass wir uns auf eine Monopolkultur im State-of-the-Art KI-Bereich zubewegen, in welcher die neuesten und besten Ergebnisse aus der KI-Forschung nur den großen Tech-Konzernen zugänglich sind?

Hier kommt eine Technik des maschinellen Lernens mit dem Namen Transfer Learning ins Spiel. Die Grundidee ist, sich die bereits trainierten riesigen Modelle (auch Foundation Models genannt) zu Nutze zu machen und sie mit den eigenen Daten lediglich feinzujustieren. Aber wie funktioniert das eigentlich? Sind solche Foundation Models frei verfügbar? Wo bekomme ich sie? Und gibt es Pitfalls und Risiken, welcher man sich bewusst sein sollte?

Transfer Learning Schaubild
Abbildung 1: Beispiel für das Ersetzen des Kopfes / Output-Layers eines neuronalen Netzes. Die Hidden Layer können dabei beliebig tief sein und beliebige Architekturen annehmen, beispielsweise Transformerblöcke oder Ähnliches. In der oberen Skizze ist der Kopf dafür ausgelegt, anhand des gegebenen Inputs zu entscheiden, ob dieser einen Namen enthält. Der Kopf der zweiten Skizze hingegen soll entscheiden, ob die Bewertung positiv, neutral oder negativ einzuordnen ist. Dabei bleibt der Rest der Netzwerkarchitektur strukturell unberührt und unterscheidet sich nicht. Lediglich die Werte der verfügbaren Parameter werden feinjustiert.

Transfer Learning, wie funktioniert das?

Transfer Learning ist eine Methode, um Wissen aus einer Ausgangssituation zu extrahieren und es auf eine andere Zielsituation anzuwenden. Ausgangspunkt für das Transfer Learning ist ein vortrainiertes Modell. Diese Modelle bestehen aus einer Vielzahl an Schichten, die miteinander verknüpft sind und über welche Berechnungen ausgeführt werden. 

Hier macht man sich das Lernverhalten von künstlichen neuronalen Netzen zu Nutze: Je tiefer ein Modell gebaut ist, desto komplexere Muster können vom Modell eingefangen werden. Tiefe bezeichnet hier die Anzahl der Schichten / Layer, die zwischen Input- und Output-Schicht definiert werden. Dabei stellt die letzte Schicht (das Output-Layer) die finale Klassifikation- oder Regressionseinheit dar. Trainiert man zum Beispiel ein Modell darauf, innerhalb eines Textinputs Namen erkennen zu können, bewertet die letzte Schicht, ob nun final ein Name vorliegt oder nicht. Prinzipiell können wir nun das Output-Layer austauschen und mit einer Schicht ersetzen, welche darauf ausgelegt ist, das Sentiment des vorliegenden Textes nach positiv, neutral oder negativ einzuordnen. Diese beiden Aufgaben haben auf den ersten Blick herzlich wenig miteinander zu tun. Sie eint lediglich, dass als Input Daten in Form von Text benötigt werden und dieser Input durch ein Deep Learning Modell hindurchgeschleust wird.

Je größer nun dieses Modell ist und je mehr Daten zur Verfügung stehen, desto besser lernt das Modell, wie sich Sprache verhält. Damit meinen wir neben grammatikalischen Grundregeln auch kontextbasiertes Verständnis. Eine KI, die also verstanden hat, wie ein Sprachinput zu interpretieren und analysieren ist, kann dementsprechend für diverse Aufgaben im Sprachkontext angewendet werden. Transformer-basierte Modelle bieten hier im NLP-Kontext mittlerweile die gängige Basis. Man nehme sich also eines der vielen vortrainierten Transformer-Modelle, welches auf einer ähnlichen Datengrundlage vortrainiert wurde, die auch für das eigene Problem relevant ist und ersetzt die letzte (oder die letzten) Schichte(n) so, dass die offene Fragestellung modelliert werden kann. Man spricht davon, dem Modell „einen neuen Kopf aufzusetzen“. Abbildung 1 zeigt das Ersetzen des Kopfes anhand einer Skizze.

Wie viele Layer man nun ersetzt, ist von Problem zu Problem verschiedenen. Die Anzahl der damit einhergehenden Parameter, die man dem Modell neu hinzufügt, kann dabei als eine Art Hyperparameter verstanden werden, welchen es empirisch durch Experimente zu ermitteln gilt. In der Regel reicht es für einen ersten Benchmark schon aus, lediglich die letzte Schicht auszutauschen. Hat man seinem Basismodell nun einen neuen Kopf aufgesetzt, geht es an die noch offene Feinjustierung.

Hierfür benötigt man Daten, die das vorliegende Problem beschreiben und welche das Modell modellieren soll. Mit diesen beginnt man einen Trainingsprozess und hat nun zwei Möglichkeiten: Entweder man fixiert alle Parameter des Basismodells und trainiert nur die Parameter des neu aufgesetzten Kopfes, oder aber man trainiert die Gesamtheit aller Parameter des Modells. Auch hier empfiehlt sich das Experimentieren. Dabei ist das Fixieren der Basisparameter häufig ein solider Startpunkt. 

Ein Fallbeispiel für Transfer Learning

In unserem Beispiel sind wir daran interessiert, im Rahmen eines Named-Entity-Recognition-Problems aus einer Stellenausschreibung die von einem/r Bewerber*In geforderten Fähigkeiten und Skills automatisiert zu extrahieren. Dabei kann die Stellenausschreibung in einem unbekannten Format vorliegen. Weiterhin können sich die Formate von Stellenausschreibung zu Stellenausschreibung unterscheiden. Wir nutzen hier als Basismodell das Transformer-basierte Modell xlm-roberta-base [3]. Das Modell wurde auf 2.5TB auf 100 Sprachen an Textdaten trainiert. Dabei ist die initiale Trainingsstrategie die folgende: Das Modell maskiert zufällig ca. 15% der Textinputs und muss dann versuchen, die maskierten Worte vorherzusagen. Bei dieser Trainingsstrategie wird also nicht nur das unmittelbar folgende Wort einer Textsequenz vorhergesagt, sondern hier wird dem Modell beigebracht, über Informationen vor der Maskierung und hinter der Maskierung den Fokus auf den gesamten Kontext des Textes zu legen. Auf diese Art und Weise erlernt das Modell, wie sich Sprache im Allgemeinen verhält (in 100 gesprochenen Sprachen). Das macht es zu einem guten Kandidaten, um es als Basis für spezifischere Aufgaben zu verwenden. 

Wir haben ca. 400 Stellenausschreibungen vorbereitet, die unsere Datengrundlage bilden. Dies entspricht ungefähr 2MB an Textdaten. Diese Daten haben wir mit den Labels „Hardskill“ und „Education“ versehen, an welchem sich dann das Modell in der Feinjustierung orientieren soll. Wir führen anschließend einen Trainings-/Validierungs- und Testsplit durch, sodass das Modell für die Feineinstellungen ausschließlich die Trainingsdaten zu Gesicht bekommt, die sich auf ca. 1,4 MB beschränken. Diese geringe Menge an Daten reicht aus, um ein Modell zu erzeugen, welches unser formuliertes Problem mit beeindruckender Qualität lösen kann. Ein Beispiel ist im GIF dargestellt. Weitere Verbesserungen können dabei stets vorgenommen werden, in dem man beispielweise mehr Daten für die Feinjustierung vorbereitet. 

Pitfalls

Sollte man sich für einen Transfer Learning Ansatz entscheiden, muss man einige Punkte beachten. Zum einen ist da das Thema Catastrophic Forgetting. Darunter versteht man das Overfitting auf den Trainingsdaten für die Feinjustierung. Dies hat zur Folge, dass die bereits gelernten Verknüpfungen des Basismodells wieder vergessen werden. Um Catastrophic Forgetting vorzubeugen, bieten sich mehrere Möglichkeiten an. Zum einen trainiert man das Modell mit dem eigens aufgesetzten Kopf nur für wenige Epochen, zum anderen nutzt man eine eher geringe Lernrate. Beide Faktoren tragen dazu bei, dass man die bereits erlernten Zusammenhänge des Basismodells erhält und zeitgleich die Feinjustierung für das eigene Problem durchführen kann. In ihrem Paper „How to Fine-Tune BERT for Text-Classification“ zeigen die Forscher*Innen, dass sich für BERT-Modelle eine stetige Abnahme der Lernrate in Abhängigkeit der Anzahl der Modellschichten anbietet, um Catastrophic Forgetting aus dem Weg zu gehen [4]. 

Transfer Learning hat seine Stärke für Bild- und Textdaten bereits eindrucksvoll unter Beweis gestellt. Für Daten im Tabellen Format sieht die Sache etwas anders aus. Da wir uns im Transfer Learning in der Regel auf künstliche neuronale Netze beschränken und diese gegenüber den etablierten Gradient-Boosting-Methoden oft im Performance-Nachteil sind, ist Transfer Learning für tabellarische Daten bisher wenig beachtet und erforscht. Neuronale Netze haben Schwierigkeiten mit der Heterogenität der Verteilungen von tabellarischen Daten. Hier liegen die Features / Spalten häufig in den verschiedensten Formaten vor (kontinuierlich und diskret sowie auf verschiedenen Skalen), sodass ein Deep Learning Ansatz nur dann Sinn macht, wenn der verfügbare Datenbestand sehr groß ist.

Wo bekomme ich vortrainierte Modelle?

Hier gibt es mehrere Anlaufstellen. Viele der gängigen Bibliotheken für das Arbeiten mit Deep Learning Modellen bieten API-Schnittstellen zu bereits vortrainierten Modellen an. Beispielsweise verwaltet PyTorch ein eigenes Model-Hub [5]. Eine weitere bekannte Anlaufstelle ist huggingface.co [6]. Hier kann man sich durch eine Vielzahl an Filtern klicken, um eine große Menge an bereits entwickelten Modellen vorzufinden, welche in der Regel für die eigenen Zwecke weiterverwendet, werden können. Dabei ist auf die jeweilige Lizensierung in der Model Card zu achten. Ebenfalls beobachten wir immer häufiger, dass Forschungsgruppen ihre Modelle inklusive der vortrainierten Parameter in zugehörigen GitHub Repositories veröffentlichen. Als Beispiel ließe sich hier Meta AIs kürzlich vorgestelltes LLaMA Sprachmodell aufführen [7] . Weiterhin ist paperswithcode.com [8] einen Blick wert.

Neugierig, wie Sie Foundation Models und Transfer Learning in Ihre Organisation oder Ihr Produktportfolio integrieren können? Gerne unterstützen wir ganzheitlich, von der Konzeptionierung bis hin zur Entwicklung eines fertigen Produktes.

Ausblick

In diesem Beitrag haben wir gesehen, wie man mittels Transfer Learning bereits vortrainierte, riesige Deep Learning Modelle auf ein eigenes Problem feinjustieren kann. Diese Methode eröffnet auch Teams mit Zugang zu geringeren Datenmengen, das Potential von Foundation-Models zu heben. Nicht unerwähnt bleiben soll eine weitere Art des Transfer Learnings, welche man unter dem Namen Few Shot Learning (oder auch Prompt Tuning, Learned Prompts oder In-Context Learning) findet. Hier kann ein vortrainiertes Sprachmodell gänzlich ohne eigene Daten auf ein eigenes Problem projiziert werden. Damit ist diese Methode besonders effizient, da hier keine Neutrainierung der Modellparameter erforderlich ist. Gut geeignet für diese Prozedur sind Modelle aus der Generative Pretrained Transformer (GPT – aus ChatGPT) Familie.

Angenommen wir sind daran interessiert, unsere Stellenausschreibungen in einem bestimmten, einheitlichen Format zurückzugeben. Um dieses Problem zu lösen, können wir einem GPT-Modell beispielsweise folgenden Input geben:

Input: Studium im Bereich der IT, Naturwissenschaften oder Psychologie o.ä.
Output: Studium: IT, Naturwissenschaften, Psychologie

Input: akademischen Abschluss in Informatik, Mathematik oder einer Naturwissenschaft oder vergleichbare Fachrichtung
Output: Studium: Informatik, Mathematik, Naturwissenschaften

Input: Erfolgreich abgeschlossenes Studium der Informatik oder Mathematik, Ausbildung als Fachinformatiker
Output: Studium: Informatik, Mathematik | Ausbildung: Fachinformatiker

Input: Hochschulstudium z.B. in Wirtschaftsinformatik, Informatik, BWL, VWL
Output:


Das Modell versucht nun auf Basis unseres Inputs den weiteren Verlauf des Textes (und damit den nächsten Output) vorherzusagen. Allerdings bietet solch ein Ansatz kaum Interpretierbarkeit, was das Entwickeln und Debugging von Applikationen auf Basis von Few Shot Learning kompliziert werden lassen kann [9].  

Transfer Learning ist in unseren Augen ein wichtiges Werkzeug auf dem Weg zur Demokratisierung von KI. Durch das Bereitstellen von Foundation Models aus Forschungseinrichtungen entsteht ein Ökosystem aus Anwendungen und Produkten, welche auf diesen Modellen fußen, aber verschiedenste Probleme lösen. Erkenntnisse aus der Produktentwicklung hingegen können zurück in den Wissenschaftskreislauf gespielt werden, um weitere Generationen von Foundation Models zu verbessern.

Literaturverzeichnis

[1] OpenAI, [Online]. Available: github.com/openai/gpt-3/blob/master/model-card.md. [Zugriff am 07.03.2023].

[2] J. Kaplan, T. Henighan, S. McCandlish, T. B. Brown, B. Chess, R. Child, S. Gray, A. Radford, J. Wu und D. Amodei, „Scaling Laws for Neural Language Models,“ CoRR, Nr. abs/2001.08361, 2020. 

[3] A. Conneau, K. Khandelwal, N. Goyal, V. Chaudhary, G. Wenzek, F. Guzmàn, E. Grave, M. Ott, L. Zettlemoyer und V. Stoyanov, „Unsupervised Cross-lingual Representation Learning at Scale,“ CoRR, Nr. abs/1911.02116, 2019. 

[4] C. Sun, X. Qiu, Y. Xu und X. Huang, „How to Fine-Tune BERT for Text Classification?,“ CoRR, Nr. abs/1905.05583, 2019. 

[5] PyTorch, „PYTORCH HUB,“ [Online]. Available: pytorch.org/hub/. [Zugriff am 07.03.2023].

[6] Huggingface, „Huggingface The Model Hub,“ [Online]. Available: huggingface.co/docs/hub/models-the-hub. [Zugriff am 07. 03. 2023].

[7] Meta AI, [Online]. Available: ai.facebook.com/blog/large-language-model-llama-meta-ai/. [Zugriff am 08.03.2023].

[8] PapersWithCode. [Online]. Available: paperswithcode.com. [Zugriff am 07.03.2023].

[9] K. Matrineau, „What is prompt-tuning?,“ IBM, 15. 02. 2023. [Online]. Available: research.ibm.com/blog/what-is-ai-prompt-tuning. [Zugriff am 07.03.2023].