Oliver Zeigermann und Stefan Toth
17.08.2021
Transformer Modelle von Huggingface als Grundlage für Texte
Sprache ist eine schwierige Sache. Wortstellung, Subkultur, Mehrdeutigkeiten oder auch der Einfluss von Dialekten machen sowohl die Erkennung, als auch die maschinelle Generierung von sinnvollen Sätzen schwierig. Früher kamen im Machine Learning hier Rekursive Neuronale Netze (RNNs) zum Einsatz, seit einigen Jahren treiben jedoch sogenannte “Transformer” ihr Unwesen. Sie sind einfacher zu trainieren und liefern erstaunlich gute Ergebnisse. Der Schlüssel ist dabei die sogenannte “self-attention”, bei der Wörter über ihre Position und die umgebenden Wörter im Satz codiert werden. So entsteht “Kontext” für einzelne Wörter der gut parallelisierbar erkannt und bei Umformungen erhalten bleiben kann.
Der Original-Transformer beschreibt sowohl Encoder, als auch Decoder und angesprochenen Attention-Mechanismus. Er war für Übersetzungsaufgaben gedacht, mittlerweile gibt es jedoch vortrainierte Modelle und abgewandelte Ansätze für die Zusammenfassung von Texten, die Beantwortung von Fragen zu einem Text, das Füllen von lückenhaften Texten, das fortsetzen angefangener Sätze oder das Erkennen von Stimmungen in Texten. Aus dem Ursprungsmodell ist ein ganzer Zoo von Ansätzen entstanden, der von Ihnen eingesetzt und kombiniert werden kann.
Wie funktioniert die angesprochene “Self-Attention” nun konkret? Am besten lässt sich das mit einem Beispiel zeigen. Betrachten Sie die beiden folgenden Sätze:
“Max genoss die Natur und die frische Landluft in vollen Zügen.”
“Der tägliche Arbeitsweg in vollen Zügen war für Julia immer eine Qual.”
“Volle Züge” hat in den beiden obigen Sätzen eine andere Bedeutung. Der Self-Attention Mechanismus versucht diesen Sachverhalt zu erkennen, indem einerseits die Position im Satz gecheckt wird, andererseits aber auch die umgebenden Wörter analysiert werden. Das scheint in diesem Fall besonders relevant, liegen doch im Kontext des ersten Satzes Wörter wie “Natur”, “Landluft” bzw. “genoss” und im Kontext des zweiten Satz “Arbeitsweg” und “Qual”. Diese unterschiedlichen Kontexte führen zu einer unterschiedlichen Codierung. Ein Decoder könnte die in den Sätzen enthaltene Semantik also in andere Sprachen oder sogar Bilder übertragen ohne der Wortdopplung zu viel Gewicht zu schenken. Cool oder?
Falls Sie mit den folgenden Begriffen vertraut sind, sagt es Ihnen vielleicht etwas wenn wir behaupten Transformers verwenden keine “Convolutional” Neuronalen Netze (CNNs) oder Rekurrente Neuronalen Netze (RNNs). Insbesondere weil das die bisherigen Standard-Lösungen für die angesprochenen Problemstellungen waren, ist das überraschend. Falls Ihnen das nichts sagt, ist das kein Problem, weil Transformers schließlich weder das eine noch das andere verwenden.
Stattdessen werden Feedforward Netze eingesetzt, und im Decoder mit Auto-Regression gearbeitet. Bild 2 zeigt den konzeptionellen Ablauf in etwas mehr Detail.
Der Encoder ist mit einer bestimmten Sprache trainiert und wird von uns Normal-Sterblichen lediglich angewendet. Hierbei wird ein gegebener Satz in Vektordarstellung transformiert. Die angesprochene Self-Attention inklusive.
Beim Decoder kommt im Fall der gemeinsamen Verwendung von Encoder und Decoder das Encoding-Ergebnis an. Also grob gesagt die “Idee” die zu formulieren ist. Daraus erstellt der Decoder eine Antwort auf die er trainiert wurde - also z.B. einen Satz in einer bestimmten Sprache. Dabei wird das Teilergebnis immer wieder selbst zum Input, um Wort für Wort ein in der Zielsprache gültiges Ergebnis zu generieren. Da in diesem Teil recht kreativ Sätze geschaffen oder Bilder kreiert werden, könnte man diesen Teil auch gut als “Generator” bezeichnen. Im ursprünglichen Modell der Sprachübersetzung ergibt die Benennung aber durchaus Sinn.
Die Ursprungsidee der Original Transformers beinhaltet wie weiter oben besprochen Encoder und Decoder, sowie die Idee der Self-Attention. Konkret angewandt wurde diese Idee auf ein Übersetzungsproblem. Mittlerweile gibt es eine Vielzahl an Abwandlungen des Ansatzes und “Transformer” ist keine einzelne Methode mehr, sondern ein ganzer Gattungsbegriff.
Einige Probleme benötigen nur den Encoder-Teil des Original-Transformers. Das “verstehen” von Texten und deren Semantik reicht z.B. aus, um Fragen zu einem Text mit einzelnen Original-Text-Passagen zu beantworten, oder die Stimmung eines Textes in “positiv” oder “negativ” zu sortieren. Auch das Füllen von einzelnen Wortlücken in Texten gelingt mit Encodern gut. In allen drei Fällen wird keine “komplexe” Antwort verlangt für die ein Decoder gebraucht würde. BERT und abgeleitete Modelle sind hier berühmte Vertreter von der Stange.
Der Decoder-Teil kann gegebene Inputs in Sätze einer bestimmten Sprache oder sogar Bilder generieren. Das ist für sich genommen auch bereits sinnvoll, z.B. um angefangene Sätze zu vervollständigen oder Text in Bildsprache zu übersetzen. GPT wäre ein Beispiele für diese Anwendungsform. Dazu gleich mehr.
Die kombinierte Verwendung von Encoder und Decoder, wie im Original-Muster ermöglicht neben Übersetzungen auch Zusammenfassungen von Texten. Hier wird tatsächlich transformiert und der Name ist wohl am passendsten. Modelle wie T5 und BART sind hier am weitesten verbreitet.
Zu großer Aufmerksamkeit hat es die dritte Evolutionsstufe der Generative Pre-trained Transformer, nämlich GPT-3 gebracht. Dieser Decoder basierte Transformer erzeugt aus einer textuellen Anfrage beliebiger Natur eine passende, ebenfalls textuelle Ausgabe. Was dabei passend ist, ergibt sich aus dem für sein Training verwendeten Text-Material. Da dies im Falle von GPT-3 ein Großteil der im Internet frei verfügbaren Texte ist, kann GPT-3 sogar zu einer Beschreibung passenden Quellcode erstellen.
Das Training erfolgt durch die Vorhersage des nächsten Worts in einem Text anhand der vorherigen Wörter. Ebenso funktioniert die Benutzung, bei der dem Modell typischerweise eine Aufgabe als Freitext gestellt wird. Diesen sieht GPT-3 dann als gegebenen Kontext an, aus dem es den Text weiterführt und damit die Antwort gibt. Typischerweise ist diese bei einem Punkt zu Ende und wird durch einen Prompt wie einem Doppelpunkt in der Anfrage eingeleitet. Diese Anfrage kann auch zusätzliche Details oder gar Beispiele enthalten.
In der folgenden Darstellungen sehen Sie ein Beispiel einer solchen Anfrage als grauen Text. Diese ist also durch den Benutzer erstellt. Der fett gedruckte Text ist die Antwort von GPT-3 mit dem Doppelpunkt als Prompt. GPT-3 könnte den Text so lange fortführen wie wir wünschen. Der Abbruch nach dieser Textlänge ist also willkürlich durch den Benutzer erfolgt.
In diesem Beispiel wird nur ein Decoder verwendet, da die Anfrage als Teil des Ausgabestroms angesehen wird. Dies erlaubt komplette Unterhaltungen, bei denen der Kontext nicht verloren geht. Allerdings erfordert eine derartige Leistung auch ein sehr großes Modell mit aufwändigem Training, das für fast jedes Unternehmen unpraktikabel ist. Daher müssen wir uns bis auf weiteres mit dem etwas schwächeren GPT-2-Modell begnügen.
Der beschriebene Transformer-Ansatz trägt sogar noch weiter und ist auf die Generierung von Bildern anhand von textuellen Beschreibungen anwendbar. Dazu kann das von GPT-3 abgeleitete DALL·E Modell verwendet werden. Dieses ist mit Paaren aus Bildern und passenden Beschreibungen trainiert. Daraus ergibt sich eine Generalisierung die deutlich über typische Gegenstände hinauswächst. Auch nicht real existierende Objekte sind erzeugbar oder reale Objekte kombinierbar. Wie die durch DALL·E erstellten Varianten des embarc-Segels. Ist hier vielleicht die nächste Version unseres Logos dabei?
Transformer bieten einen ganzen Zoo vortrainierter Modelle für die gängigsten Aufgaben im Bereich Textverarbeitung. Diese sind auf Plattformen wie Huggingface in großer Vielfalt zu finden. Während die besten Modelle häufig nur die englische Sprache beherrschen, sind viele Modelle auch auf Deutsch trainiert oder sogar für eine größere Auswahl von Sprachen verfügbar. Ein eigenes Training von Grund auf ist meist zu aufwändig und teuer. Allerdings können Sie mittels Feinabstimmung ein Modell an die Erfordernisse Ihrer eigenen Domäne anpassen und auf diese Weise bessere Ergebnisse erzielen. Für einen Austausch oder Hilfe bei den ersten Schritten stehen wir Ihnen gern zur Seite.
[1] Das ursprüngliche wissenschaftliche Papier für Transformers “Attention Is All You Need”: https://arxiv.org/pdf/1706.03762.pdf
[2] Eine strukturierte Übersicht der auf Huggingface verfügbaren Modelle: https://huggingface.co/transformers/model_summary.html
[3] Paper für GPT-3: https://arxiv.org/abs/2005.14165
[4] GPT-3 Variante, die aus einer Text-Eingabe ein Bild generiert: https://openai.com/blog/dall-e/
[5] DALL·E mini, Online Demo für DALL·E: https://huggingface.co/spaces/flax-community/dalle-mini
[6] Unser Blog-Post zu allgemeinen Ansätzen im Bereich Sprachverarbeitung: https://www.embarc.de/blog/machine-learning-anwendungen-text/
[7] Mehr Anwendungsbeispiele und auch mehr technische Details über Transformer: https://mlconference.ai/machine-learning-principles/natural-language-processing-nlp-the-transformer-zoo/