• NLP, NLU und NLG

      Natural Language Processing, kurz NLP, umfasst die beiden Untergebiete NLU = Natural Language Understanding und NLG = Natural Language Generating (vgl. Glossar).

      Geht es also bei NLU um das Verständnis natürlicher Sprache, befasst sich NLG mit deren Erzeugung.

      Mit Mitteln der Informatik, der künstlichen Intelligenz und der Linguistik sollen Computer befähigt werden, Sprache zu verstehen bzw. zu erzeugen.

      Spracherkennung spielt beispielsweise bei den bereits erwähnten Chatbots eine Rolle. Ebenso haben Übersetzungen und Textzusammenfassungen hier ihren Ort.



    • (Große) Sprachmodelle = (Large) Language Models = (L)LM


      Bei GPT und seinen Nachfolgern handelt es sich um sogenannte Sprachmodelle bzw. große Sprachmodelle, auf englisch (large) language models or kurz (L)LM.



      Anders als bei einer Programmiersprache, deren Syntax eindeutig festgelegt und nahezu unveränderlich ist, kann es für eine natürliche Sprache nur (temporäre) Modelle geben, die das Zusammenwirken ihrer Komponenten wie z.B. lexikalische Einheiten, Endungen usw. beschreiben.

      Mit Hilfe solcher Modelle erhalten Computer ein Grundverständnis von Sprache und können dieses z.B. zur Berechnung von Wortfolgewahrscheinlichkeiten verwenden.

      Die Funktionsweise beruht dabei auf der Annahme, dass bestimmte Wörter in bestimmten Kontexten öfter auftreten als in anderen.

      Quelle: https://www.dev-insider.de/sprachmodelle-in-der-softwareentwicklung-a-144d5fe71960d8af28aeae3640fdd00c


      Man unterscheidet in der Hauptsache statistische und neuronale Sprachmodelle. Letztere erlauben bessere Vorhersagen, sind aber auch deutlich schwerer zu trainieren, da sie auf neuronalen Netzen beruhen. Erstere nutzen klassische statistische Verfahren.


      Auch wenn es sich bei ChatGPT und seinen Verwandten um neuronale Sprachmodelle handelt, soll hier exemplarisch an einem der ersten Art, den sogenannten Markov-Ketten, die Grundidee verdeutlicht werden. Eine ausführliche Darstellung einschließlich eines Videos mit dem schönen Titel „Wir würfeln Wörter“ und eine Implementierung in der Programmiersprache R findet sich auf der Seite https://blog.ephorie.de/create-texts-with-a-markov-chain-text-generator-and-what-this-has-to-do-with-chatgpt?utm_source=rss&utm_medium=rss&utm_campaign=create-texts-with-a-markov-chain-text-generator-and-what-this-has-to-do-with-chatgpt

      Das Prinzip ist bekannt von den Wortvorschlagslisten, die sich bei den Old-School SMS, aber auch in Chat-Programmen und Textverarbeitungen finden: 

      Kaum haben wir den Anfang eines Wortes getippt, werden Vorschläge eingeblendet, wie das Wort lauten könnte, und an einem Wortende erhält man sogar Vorschläge für das Anschlusswort. Das vom jeweiligen System als die wahrscheinlichste betrachtete Fortsetzung erscheint dabei an zentraler Stelle. 

      Macht man sich einmal den Spaß, immer genau dieses auszuwählen, erscheinen grammatisch und syntaktisch korrekte Wortsequenzen, komplette sinnvolle Sätze entstehen meist nicht.

      (Hier lernt man schnell die Leistungsfähigkeit von ChatGPT schätzen, allein schon wegen der vollständigen, grammatikalisch korrekten und Sinn ergebenden Sätze.)

      Um ein solches System zu erhalten, wählt man sich eine Textbasis und erstellt auf deren Grundlage eine Datenbank, die zu jeder Wortfolge einer bestimmten vorher festgelegten Länge (z.B. 2), dem sogenannten Präfix, aus dem Textvorrat das jeweilig nächste Wort, das sogenannte Suffix, in Tabellenform abspeichert.

      Für den Beispielsatz now he is gone she said he is gone for good sähe eine solche Tabelle beispielsweise folgendermaßen aus:

      Präfix
      Suffix
      now he
      is
      he is
      gone, gone
      is gone
      she, for
      gone she
      said
      she said
      he
      said he
      is
      gone for
      good
      for good
      <leer>, das Programm beendet die Texterzeugung

      Je länger der genutzte Text ist, desto mehr Fortsetzungsmöglichkeiten gibt es, die dann nach dem Zufallsprinzip ausgewählt werden. Schnell wird klar, dass die erhaltene Tabelle inhaltlich und stilistisch maßgeblich durch die Textbasis bestimmt wird.

      Schreibt man nun den Beginn eines Textes, werden die letzten Wörter in Länge des Präfixes verwendet, um der zuvor erstellten Tabelle mögliche Suffixe als Fortsetzungen zu entnehmen und nach dem Zufallsprinzip ein Folgewort auszuwählen. 

      Der Prozess wird dann wiederholt. Aufgrund des sehr großen Textumfangs, das GPT etc. zugrunde liegt, ist der hier geschilderte Weg nicht gangbar, da exorbitante Datentabellen erforderlich wären, die ständig durchsucht werden müssten. Speicherbedarf und Zeitaufwand wären deutlich zu groß. 

      An die Stelle der Tabellen tritt ein trainiertes neuronales Netz - vgl. das entsprechende Kapitel -, das Prinzip ist aber das gleiche.

      Zum Experimentieren mit deutschen Texten lässt sich z.B. die folgende Seite nutzen: https://zufallsgedicht.de/markov/index.php

      Implementierungen in verschiedenen Programmiersprachen mit Beispielen finden sich hier: https://rosettacode.org/wiki/Markov_chain_text_generator


      Auf Basis des oben vorgeführten Beispiel vermutet man, dass erfolgversprechende Sprachmodelle sich auch auf den vorhergehenden Kontext des vorgelegten Präfixes beziehen und ein gewisses Gedächtnis aufweisen müssen. 

      Genau das leisten die folgenden drei Sprachmodelle in fortschreitender Güte, vgl. z. B. https://www.ingenieur.de/technik/fachbereiche/ittk/chatgpt-ist-ueberall-doch-wo-kommt-es-her/

      1.) Rekurrente neuronale Netze (RNN), eine spezielle Version neuronaler Netze aus den 1980er Jahren. Allerdings vergaßen diese schnell und waren nur langsam zu trainieren.

      2.) Die auf Sepp Hochreiter und Jürgen Schmidhuber zurückgehenden LSTM-Netze (Long Short-Term Memory = langes Kurzzeitgedächtnis) aus dem Jahre 1997. 

      Diese Netze konnten sich wesentlich mehr merken und Textstrings von mehreren hundert Wörtern verarbeiten, besaßen allerdings nur begrenzte Sprachkenntnisse.

      3.) 2017 schließlich gelang Google-Mitarbeitenden der Durchbruch mit dem sogenannten Transformermodell, auf dem auch GPT und seine Ableger beruhen; das T in der Abkürzung nimmt darauf Bezug. Beispiele für solche Transformationen, also die Übersetzung von einer Folge von Zeichen in eine andere, wären Übersetzungen, Texterzeugung oder Zusammenfassung längerer Texte.

      Voraussetzung hierfür ist, dass vorab ein Training mittels einer großen Menge von Daten stattgefunden hat, daher das P in GPT, was für pre-Trainer steht.

      Vertiefend dazu: https://towardsdatascience.com/transformer-neural-network-step-by-step-breakdown-of-the-beast-b3e096dc857f sowie https://towardsdatascience.com/beautifully-illustrated-nlp-models-from-rnn-to-transformer-80d69faf2109


      GPT = Generative Pre-Trained Transformer, veröffentlicht 2018

      • unüberwacht + Transformatoren —> Muster, zuvor: überwachtes Lernen + kommentierte Daten: zeitaufwändig + Größe der verfügbaren Datensätze beschränkt

      GPT-2, veröffentlicht 2019

      • Problem: „zu gefährlich“, erzeugt glaubhafte Fake-Texte

      GPT-3, veröffentlicht 2020

      • 175 Milliarden Parameter versus 1,5 Milliarden bei GPT-2, GPT nur 0,12 Milliarden

      • Problem: Verzerrungen wie im Internet: Wahrheit, rassistisch, sexistisch, hasserfüllt

      InstructGPT, Januar 2022

      • Reinforcement Learning mit menschlichen Testern RLHF =  Reinforcement Learing Human Factor

      vgl. https://openai.com/blog/instruction-following/#guide

      und https://openai.com/blog/instruction-following/#moon

      https://openai.com/blog/deep-reinforcement-learning-from-human-preferences/

      ChatGPT = Update von InstructGPT, Dezember 2022

      • Reinforcement

      Zum Unterschied von GPT3 und ChatGPT vgl. die Übersicht mit der dort befindlichen Abbildung: https://matt-rickard.com/gpt-lineage