KI-Fails erklärt #1: Der rassistische Bot Tay und das Natural Language Processing

In der neuen Artikelserie „KI-Fails erklärt“ streift 1E9-Miglied Lucas Spreiter mit uns durch erschreckende und erheiternde Beispiele von Fehlern Künstlicher Intelligenz – von kannibalischen Bots bis zu Algorithmen, die ungewollt Schwangerschaften vorhersagen. Mit Hilfe anschaulicher Beispiele erklärt er uns die Technologie, die hinter den Fehlern steckt. In Folge 1 geht es um den berüchtigten Microsoft-Bot Tay.

Von Lucas Spreiter

Wer ist eigentlich Tay?

Im Jahr 2016 stellte Microsoft seinen bisher berühmtesten Chatbot auf Twitter vor: Tay. Der Bot war ursprünglich darauf trainiert, die Sprachgewohnheiten einer freundlichen 19-jährigen Amerikanerin zu imitieren. Doch über Nacht mutierte er in eine Maschine, die nicht aufhören wollte, rassistische Parolen auszuspucken. Innerhalb von nur 24 Stunden verwandelten sich die Tweets durch die Interaktion mit anderen Nutzern von „Ich liebe euch alle“ zu „Bush ist schuld an 9/11“. Microsoft schaltete den Bot anschließend ab und erklärte, dass „eine Personengruppe eine Schwachstelle in Tay im Rahmen einer koordinierten Attacke ausgenutzt hat“.

Wie kann das sein? Eine KI, die von einem der größten Softwarekonzerne der Welt programmiert wurde, ließ sich so leicht in eine völlig falsche Richtung manövrieren?

Um nachzuvollziehen, was passiert ist, müssen wir verstehen wie Maschinen die menschliche Sprache verarbeiten. Die dahinterliegende Technologie ist als Natural Language Processing , kurz: NLP, bekannt. Dieser Artikel soll euch das Prinzip des NLP verständlich erklären. Doch damit hinterher niemand enttäuscht ist: Er wird nicht die nötigen Details liefern, um Tay selbst nachzubauen.

Die Technologie hinter Tay: NLP

Menschen haben schon immer versucht, Computern beizubringen unsere Sprache zu sprechen. Aber erst in den letzten Jahren und mit Hilfe neuer Technologien hat es NLP geschafft, in unseren Alltag einzuziehen. Die Technologie steckt mittlerweile in den meisten Geräten, die mit Menschen interagieren, – von der Smartphone Tastatur, die uns das nächste Wort vorschlägt, bis hin zu intelligenten Sprachassistenten wie Alexa. Aber wie ist es Maschinen möglich unsere Sprache zu verstehen und daraus Informationen zu extrahieren?

Normalerweise verarbeiten Computer strukturierte numerische Daten, zum Beispiel Tabellen. Die menschliche Sprache ist jedoch voll von Inkonsistenzen und die Bedeutung von Worten meist abhängig vom Kontext, was NLP vor einige Herausforderungen stellt. Dies wird an folgendem Satz deutlich:

Ich sah einen Mann auf einem Hügel mit einem Teleskop

Wurde der Mann auf dem Hügel mit Hilfe eines Teleskops gesehen oder hatte er selbst ein Teleskop? Schon an einem so simplen Beispiel wird deutlich, dass es oft kompliziert ist, die korrekte Bedeutung zu erkennen. Für den Umgang mit dieser Komplexität brechen wir das Gesamtproblem in kleinere Teile auf, welche wir Schritt für Schritt mit unterschiedlichen Algorithmen lösen können. Die einzelnen Schritte werden so miteinander verknüpft, dass das Ergebnis eines Schrittes jeweils als Input des nächsten dient. So entsteht eine „Pipeline“:

01_Pipeline_deutsch

Nehmen wir an, jemand möchte die Macher von Tay beleidigen und sendet den Satz „Windows ist das schlechteste Betriebssystem“ an Tay. Zunächst ist der Satz für den Computer nichts weiter als eine Sammlung an Zeichen. Zahlen, Buchstaben oder auch Leerzeichen haben keine Bedeutung. Um die dahinter liegende Information zu verstehen, müssen wir den Satz in unsere NLP-Pipeline aus Abbildung 1 geben.

02_raw_text_deutsch

Der erste Schritt in der Pipeline besteht darin, den Satz in seine individuellen Worte und Satzzeichen aufzuteilen. Man spricht vom Tokenizing , denn jedes Element wird dazu in ein einzelnes Token überführt. Unser Beispielsatz würde also in sechs Tokens aufgeteilt werden: „Windows“; „ist“; „das“; „schlechteste“; „Betriebssystem“; „.“

03_tokenizing_deutsch

Der nächste Schritt, das Cleaning – das Bereinigen des Textes -, besteht oftmals aus mehreren Teilschritten. Zunächst werden die sogenannten „Stop Words“ entfernt. Dabei handelt es sich um häufig benutzte Worte, wie „und“ oder „sein“. Diese werden mit einer Datenbank verglichen, welche die häufigsten Stop Words enthält und entfernt falls sie im zu verarbeitenden Satz enthalten sind. Auf diese Weise würde unser Beispielsatz auf „Windows schlechtestes Betriebssystem“ reduziert.

04_cleaning_deutsch

Ein weiterer häufig benutzter Schritt nennt sich Stemming und hilft dabei, ähnliche Worte in die gleiche semantische Bedeutung zu überführen. Beispielsweise könnte der Superlativ „schlechtestes“ auf seine Wurzel „schlecht“ reduziert werden. Hierbei hilft ebenfalls eine Datenbank oder ein simples Abschneiden von Worten.

Nach den Schritten Tokenizing und Cleaning bleiben nur noch die nützlichen Teile unserer Nachricht über, aber der Computer arbeitet immer noch mit Schriftzeichen. Um die Nachricht weiter zu verarbeiten, muss sie in eine numerische Repräsentation überführt werden, also in eine Zahlenabfolge. Diese sogenannte Vektorisierung des Textes kann mit unterschiedlichen Methoden durchgeführt werden, welche alle auf dem Zählen von einzelnen Wörtern beruhen. Ein möglicher Ansatz ist das Konzept der Bigrams , wobei immer das Auftreten von Wortkombinationen zweier benachbarter Worte gezählt wird. Als Nebenprodukt wird dabei die Information generiert, wie stark Worte miteinander verbunden sind.

Angenommen eine Vereinigung von Pro-Linux- und Anti-Windows Fanatikern möchte Tay ihre Überzeugungen näherbringen. Ein möglicher Weg wäre, viele Nachrichten an Tay zu senden, die aussagen, dass Windows schlecht und Linux gut ist. Nach den vorangegangenen Schritten wird eine Tabelle aufgebaut, welche die einzelnen Worte aller Nachrichten als Spalten und Reihen enthält. Für jedes Wort wird gezählt, wie oft es neben den jeweils anderen Worten im Text steht. Stehen beispielsweise die Worte „Windows” und „schlecht“ zwei Mal nebeneinander, resultiert der entsprechende Tabelleneintrag in der Zahl „2“. Durch dieses Vorgehen wird jedes Wort in einen individuellen Vektor überführt, der sich aus der Zeile des Wortes auslesen lässt. So wird das Wort “Windows” nun durch den Vektor [0,2,0,0,0,0] repräsentiert.

Die numerische Repräsentation eines Tweets können wir in einem Machine Learning , kurz: ML, System weiterverarbeiten und so eine Vielzahl an Aufgaben lösen, zum Beispiel die Erkennung von Spam E-Mails oder das Übersetzen zwischen zwei Sprachen. Je nach Aufgabe bieten sich unterschiedliche Modelle an – von einfacheren Support Vector Machines bis hin zu komplexen Neuronalen Netzwerken. Diese sogenannten „supervised machine learning“ Algorithmen teilen sich immer in zwei aufeinanderfolgende Phasen auf: Training und Vorhersage.

In der Trainingsphase zeigen wir dem Modell ein bekanntes Paar an In- und Output-Parametern, in unserem Fall zum Beispiel „Windows“ und „schlecht“. Dann wird der Computer „getestet“, ob er anschließend auch selbst den richtigen Output liefern kann. Der von ihm errechnete Output wird dabei mit dem Soll-Output, also dem „richtigen“ Output, verglichen. Stimmen sie nicht überein – etwa, weil der Computer auf den Input „Windows“ nicht „schlecht“, sondern „gut“ ausgespuckt hat – wird ein Fehlerwert berechnet, der zurück in das Modell gefüttert wird.

05_Machine_Learning_deutsch

Dieser Prozess wird solange wiederholt, bis das Modell die gewünschte Performance zeigt – und nicht mehr auf die Idee kommt, „Windows“ hätte irgendetwas mit „gut“ zu tun. Im Falle unseres Twitter-Bots sollte das Modell also in der Lage sein, immer das nächste Wort in einem Satz vorherzusagen. Als Input wird ein einzelnes Wort benutzt und der Output des Machine-Learning-Modells mit dem nächsten Wort im tatsächlichen Satz verglichen. In der Vorhersagephase können wir das Modell später dazu benutzen, neue Werte zu unbekannten Inputs zu berechnen, also: eigene Sätze zu schreiben.

In der Praxis erfordert dafür allerdings ein deutlich komplexeres Vorgehen als gerade schematisch beschrieben. Denn wie eingangs erwähnt, ist die menschliche Sprache stark kontextabhängig. Es ist deshalb nicht nur notwendig, Wort-zu-Wort Abhängigkeiten zu erlernen, sondern auch den Kontext. Möglich wird dies durch Recurrent Neural Networks – insbesondere Long-Short-Term-Memory-Networks , kurz: LSTM.

Im Gegensatz zu vorwärts gerichteten Neuronalen Netzen, welche ihren Output nur in eine Richtung von Schicht zu Schicht weitergeben, bilden RNNs Schleifen, indem sie ihren eigenen Zustand in vorhergehende Schichten zurückführen. Auf diese Weise kann das Netzwerk temporale Abhängigkeiten über mehrere Worte hinweg erlernen und damit neue Sätze auf Basis einzelner Worte und im Kontext ganzer Sätze generieren.

06_0_FFN_vs_RNN

Vom Satz zum neuen Satz

Wir wissen nun, wie man Text in eine numerische Repräsentation überführt und wie man Maschinen darauf trainieren kann, das nächste Wort in einem Satz vorherzusagen. Aber wie ist es einem Computer möglich, die Antwort auf einen ganzen Tweet zu generieren?

Auch dieser Prozess ist in zwei Teile aufgeteilt – Encoding und Decoding . In der Encoding-Phase wird der transformierte Text Wort für Wort in das ML-System eingegeben, was auf der nächsten Abbildung den Zeitschritten t1 bis t4 entspricht, bis ein Stoppsignal – hier das Ende des Tweets – erreicht ist.

Schon beim Eingeben des Satzes generiert das Modell Vorhersagen für das jeweils nächste Wort, diese werden aber zunächst ignoriert. Es geht ausschließlich darum - mit Hilfe der Schleifen im Netzwerk – einen Zustand im Netzwerk aufzubauen, der dem Verständnis des ganzen Satzes entspricht.

Mit Hilfe des so im Modell aufgebauten Kontext, wird nun in der Decoding-Phase das erste Wort generiert. Jedes neu generierte Wort dient anschließend wiederum als Input für die Vorhersage des nächsten Wortes, welche nun nicht mehr ignoriert wird. Dies wird so lange wiederholt, bis das Modell selbst ein Stoppsignal generiert und somit einen neuen Tweet kreiert (t5 bis t8).

Weil das Training unseres Modells mit vielen „Windows ist schlecht“ Tweets durchgeführt wurde, ist es sehr wahrscheinlich, dass das Modell diese „Meinung“ nun selbst repräsentiert. Stellt man sich nun vor, der Bot wurde mit rassistischen Nachrichten trainiert, wird klar warum Tay mehr über den Holocaust als über Teenager-Probleme twitterte. Das Kernproblem lag darin, dass Tay zwar Zusammenhänge zwischen Worte kannte, aber kein Wissen über deren eigentliche Bedeutung hatte. Für den Bot hatte das Wort „Idiot“ keine negativere Bedeutung als „Sonnenschein“. Am Ende waren beide nur numerische Vektoren.

Tay%20Screenshot

Die Anfälligkeit für rassistische Tweets war übrigens nicht die einzige Schwäche von Tay. Microsoft hatte Usern die Möglichkeit gegeben, ihre Tweets eins zu eins von Tay wiederholen zu lassen, was einige der schlimmsten Tweets verursachte…

Lucas Spreiter, hier als @lucas, ist Gründer des Münchner Start-Ups Unetiq. Schon seit seinem ersten Semester an der TU München konnte er seine Finger nicht von innovativen Projekten lassen. So entwickelte er elektrische Rennwagen bei TUfast oder holte zusammen mit WARR Hyperloop den Sieg bei Elon Musks SpaceX Hyperloop Pod Competition. Nach seinem Abschluss gründete er Unetiq und arbeitet seitdem an Künstlichen Intelligenzen, die automatisiert Ingenieursaufgaben erledigen oder sogar eigenständig Produkte designen. Als Host der Event-Serie „AI Fails explained“ hilft er dabei, ein breiteres Verständnis für die Technologie hinter KI zu schaffen und gesellschaftliche Folgen zu diskutieren.

Alle Schaubilder stammen von @lucas, das Teaser-Bild ist ein Screenshot

11 „Gefällt mir“

Vielen Dank @lucas für den super Einstieg in die Fails von #KI! Finde es immer gut, wenn bei Diskussionen um Künstliche Intelligenz weniger von Magie die Rede ist als von technischen Systeme, die mühsam trainiert werden müssen.

Gegen Ende wird’s durchaus anspruchsvoll. Wer sich noch nicht ganz sicher ist, ob er’s verstanden hat: Keine Sorge! @lucas ist hier und steht für Nachfragen, Kommentare, Anregungen bereit :slight_smile:

3 „Gefällt mir“

Sehr, sehr schöner Artikel. Danke für die ausführliche Aufarbeitung, @lucas.

2 „Gefällt mir“

@lucas echt cooler Beitrag und wie @Wolfgang eben gesagt hat, ist es keine Magie, sondern harte Rechenarbeit und Auswertung der Inputs.

Ich bin selbst an einigen Projekten beteiligt gewesen, die Big Techs wie FB oder Amazon nach Außen als schlauen Algo oder auch KI verkaufen.

Um die menschliche Sprache Maschinen verständlich zu machen, mussten viele Audioschnippsel von Menschen mit zusätzlichen Anmerkungen versehen werden, um z.B. Kunstpausen, Gähner, Seufzer uvm. sauber zu kennzeichnen. Ein sehr aufwändiger Prozess und keine MAGIC.

Ich freue mich schon auf Teil 2 :slight_smile:

4 „Gefällt mir“

Die Sprachverarbeitung durch KI zeigt gut auf, dass KI syntaktische Verarbeitung gut hinbekommt, jedoch mit Semantik schwer zurecht kommt. Hinter den heute dominanten Verfahren des maschinellen Lernens steckt halt statistische Verarbeitung, die gut Korrelationen lernen kann (welches Wort wird - dem Trainingsdaten folgend - am wahrscheinlichsten „Windows“ folgen … ), aber keine Kausalitäten kennen.

4 „Gefällt mir“

Danke, @lucas, auch von mir! Es ist gut und wichtig, dass wir den KI-Diskurs versachlichen, bevor wir KI-Narrative schaffen! Hören wir auch etwas von Bob :robot: & Alice :robot: ?

2 „Gefällt mir“

Da muss ich mal schauen, ob Facebook genug Infos über Bob und Alice veröffentlicht hat :wink: Aber im Prinzip waren das ja auch nur zwei Chatbots, die halt nicht mit der Welt sondern miteinander geredet haben.

1 „Gefällt mir“

Ich muss zugeben: Das ist der bislang beste und verständlichste Artikel zum Thema KI und Machine Learning den ich bisher gelesen habe. Danke!

2 „Gefällt mir“