Eine sichere Antwort, die falsch war
Eine neue Mitarbeiterin fragt einen Chatbot, wann der Verleih sonntags öffnet. Er antwortet sofort, höflich und in einem sicheren Satz. Die Zeiten stimmen nicht.
Kaputt war nichts. Das Modell hat genau das getan, wofür es gebaut ist. Diese Lektion zeigt, was das ist, an einem Modell, das klein genug zum Nachrechnen ist.
Am Ende dieser Lektion
Notiz
Ich kann erklären, wie ein Sprachmodell das nächste Wort wählt und wo es danebenliegt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Sprachmodell | ein Programm, das die Wahrscheinlichkeit des nächsten Tokens angibt | |
| Token | ein Stück Text, mit dem ein Modell arbeitet, ein Wort oder ein Teil davon | |
| Wahrscheinlichkeit | wie wahrscheinlich etwas ist, von 0 bis 1 | |
| Bigramm | zwei Tokens direkt nebeneinander | der zug |
| Trainingstext | der Text, aus dem ein Modell lernt | |
| Erfundene Antwort | flüssiger Text, der nicht stimmt, auch Halluzination genannt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Aus Text werden Tokens
Ein Modell liest Buchstaben nicht so wie Sie. Es zerlegt Text zuerst in Tokens. Bei einem großen Modell sind das häufige Wörter und Stücke seltener Wörter, oft mit dem Leerzeichen davor.
Unser kleines Modell macht es einfach. Es schreibt alles klein, behandelt den Punkt als eigenes Token und trennt an Leerzeichen.
Einen Satz in Tokens zerlegen
satz = "Der Laden öffnet um neun. Der Laden schließt um sechs."
# Kleinschreiben, und der Punkt wird ein eigenes Token.
tokens = satz.lower().replace(".", " .").split()
print(tokens)
print(len(tokens), "Tokens")
# Hängen Sie einen eigenen Satz an. Wie viele Tokens sind es jetzt?
Wahrscheinlichkeiten aus Zählungen
Ein Bigramm-Modell lernt nur eines: welches Token auf welches folgt. Gehen Sie den Trainingstext durch und zählen Sie jedes Paar von Nachbarn.
Für die Wahrscheinlichkeiten nach einem Wort teilen Sie jede Zählung durch die Zahl der Male, die auf dieses Wort überhaupt etwas folgte. bigram.py macht das für das englische Wort „the“ in einem kurzen Text über einen Laden.
Zählen, was auf the folgt
docker exec jupyter python3 steps/bigram.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beispiel: nach dem Wort the
| Nächstes Token | Zählung | Wahrscheinlichkeit |
|---|---|---|
| shop | 3 | 3 / 9 = 0,33 |
| desk | 2 | 2 / 9 = 0,22 |
| hour | 1 | 1 / 9 = 0,11 |
| bikes, customer, door | je 1 | je 0,11 |
| Summe | 9 | 1,00, bis auf Rundung |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Das nächste Wort selbst zählen
# Zählen, was in einem kurzen Text auf ein Wort folgt.
text = "der kaffee ist heiss . der kaffee ist teuer . der tee ist heiss ."
woerter = text.split()
wort = "ist"
zaehlungen = {}
gesamt = 0
for n in range(len(woerter) - 1):
if woerter[n] == wort:
danach = woerter[n + 1]
if danach in zaehlungen:
zaehlungen[danach] = zaehlungen[danach] + 1
else:
zaehlungen[danach] = 1
gesamt = gesamt + 1
for danach in zaehlungen:
print(wort, danach, zaehlungen[danach], "von", gesamt)
# Setzen Sie wort auf "der". Welches Wort folgt am wahrscheinlichsten?
Schreiben heißt, immer wieder das nächste Token wählen
Zum Schreiben wählt das Modell ein nächstes Token, oft zufällig nach den Wahrscheinlichkeiten gewichtet. Dann wählt es vom neuen Token aus wieder eines, und so weiter.
Nichts in dieser Schleife prüft, ob der Satz stimmt. Ein großes Modell ist ein neuronales Netz, das auf Tausende früherer Tokens schaut statt auf eines. Es lernt aus riesigen Textmengen, wählt aber trotzdem wahrscheinliche nächste Tokens.
Vier Sätze aus den Zählungen schreiben
docker exec jupyter python3 steps/generate.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, ein Sprachmodell schlage Fakten nach und berichte sie. Es erzeugt wahrscheinliche nächste Tokens. Sind die wahrscheinlichen Wörter auch wahr, stimmt die Antwort. Sind sie es nicht, klingt die falsche Antwort genauso sicher. Prüfen Sie deshalb alles, was zählt.
Der Trainingstext entscheidet, was wahrscheinlich ist
Ein Modell kann nur die Muster seines Trainingstexts wiedergeben. Unser Text sagt dreimal „the shop“, also greift das Modell zu „shop“, egal worum es geht.
Ein großes Modell tut dasselbe mit Menschen. Verbindet sein Text einen Beruf meist mit einem Geschlecht oder ein Land mit einem Verbrechen, wiederholt es das. Das ist Verzerrung aus den Daten, in einer einzelnen Antwort oft unsichtbar.
Wie Sie eine Antwort prüfen
Behandeln Sie eine Antwort als Entwurf von jemandem, der schnell schreibt und nie prüft. Fragen Sie, woher eine Angabe stammt, und öffnen Sie die Quelle selbst. Eine Quelle, die es nicht gibt, ist ein Warnzeichen.
Rechnen Sie jede Zahl nach. Stellen Sie dieselbe Frage anders und vergleichen Sie. Geben Sie keine vertraulichen Daten wie Kundennamen ein, außer Ihre Organisation erlaubt das Werkzeug dafür.
Weiterführend: zwei Wörter Rückblick
Kopieren Sie den Text aus generate.py in eine Notebook-Zelle. Lassen Sie das Modell auf zwei frühere Wörter schauen statt auf eines. Zählen Sie, welches Wort auf jedes Paar folgt, etwa auf „the shop“.
Erzeugen Sie vier Sätze mit demselben Startwert. Liegen sie näher am Trainingstext? Erklären Sie, warum ein Modell mit mehr Rückblick besser schreibt, aber trotzdem erfinden kann.