Die Nutzer von ZEIT ONLINE diskutieren gerne, Tausende Kommentare fügen sie täglich an unsere Artikel an. Die allermeisten dieser Beiträge sind konstruktiv. Etwa 200 Kommentare aber werden pro Tag als bedenklich eingestuft und gekürzt oder entfernt. Texte wie: "Typen wie Ihnen wünsche ich einen spontanen Brechdurchfall, während Sie im Stau stehen – bei möglichst 30 Grad" oder "Extrem, wie tief alle deutschen Medien im Arsch von Mutti stecken". Was entfernt wird, entscheidet ein Team von Moderatorinnen und Moderatoren, das rund um die Uhr arbeitet. Ist das ein Job für einen Bot – ein Computerprogramm, das zwischen guten und schlechten Kommentaren unterscheidet?

Das Experiment: Wir erschaffen eine künstliche Intelligenz, die das Moderatorenteam unterstützt, mit Maschinenlernen, Deep Learning, neuronalen Netzen, Cloud Computing. Das soll ich versuchen, der Bordmathematiker bei ZEIT ONLINE. Mit neuronalen Netzen hatte ich noch nie zu tun. Und Deep Learning habe ich bisher nur mit dem eigenen Gehirn betrieben. Keine Ahnung, wie Computer so etwas machen.

Erster Tag. Ich google. Und bin skeptisch. Denn eines ist sicher: Die Kommentare der Leserinnen und Leser berühren alle möglichen Themen. Ihre Sprache ist alles andere als einfach. Und alles, was ich unter dem Stichwort künstliche Intelligenz oder KI finde, ist erstaunlich gut funktionierende Spezialsoftware – aber nicht sehr intelligent. "Ein ganzheitlicher Ansatz zur Lösung des KI-Problems scheint auch heute noch zu komplex zu sein", schreibt auch KI-Experte Tomas Mikolov. "In den letzten Dekaden hat sich die Informatik daher eher auf recht schmale empirische Problemfelder konzentriert, die für spezielle Anwendungen wichtig sind, anstatt das allumfassende Ziel anzugehen, universell intelligente Maschinen zu bauen." Mikolov ist ein junger Informatiker, der 2012 und 2013 bei Google eine viel beachtete Software schrieb, mit der sich Worte nach ihrer semantischen Bedeutung klassifizieren lassen. Was ich noch nicht weiß: Teile seiner Software werden in einigen Tagen auf meinem Notebook laufen.

Wie intelligent ist die künstliche Intelligenz?

Ich klicke mich weiter. Was kann eine moderne KI, wie funktioniert sie? Beispiel Siri, Apples Helferlein im iPhone: Mit HAL 9000, ihrem legendären Bruder aus Stanley Kubriks 2001: Odyssee im Weltraum, hat sie nur gemein, dass beide gesprochene Sprache dekodieren können. HAL hat einen eigenen Willen, Siri bloß einen guten Draht zu Suchmaschinen und Datenbanken. Zusätzlich wurde sie mit einigen Hundert vorgestanzten Antworten gefüttert, um gegen komische Fragen gewappnet zu sein. Fragen wie: "Siri, bist du intelligent?" – "Ich bin schlau genug, um die Antwort auf diese Frage nicht zu kennen", antwortet Siri darauf. Immer mal wieder.

KI: erstaunlich, aber nicht intelligent

Intelligent ist nicht Siri, sondern ihre Entwickler. Das Programm selbst ist nur ein sehr ausgefeiltes Werkzeug für eine spezielle Aufgabe. Genau wie die Software, die ein Team von Google 2012 schrieb, um Katzenfotos von anderen Fotos zu unterscheiden. Hunde und Feuerwehrautos sind für diese Software ein- und dasselbe: Nicht-Katzen. Jedes Kleinkind hat mehr von der Welt verstanden. Und AlphaGo, Googles Computer-Go-Programm von 2015, kann Weltklassespieler im Brettspiel Go perfekt nachahmen. Mit Spielen wie Mühle oder Schach kann es nichts anfangen.

All diese Software arbeitet mit neuronalen Netzen. Seit den 1940er Jahren verfolgt man die Idee, mit dem Computer im Prinzip das Nervengeflecht im menschlichen Gehirn nachzuahmen. Bis ein Gehirn mit seinen 80 Milliarden Nervenknoten eine Katze erkennt, muss es Milliarden von Katzeneindrücken verarbeiten. Beim Katzenfoto-Experiment ahmte das Google-Team das mit 16.000 Prozessoren nach und trainierte damit ein neuronales Netz mit einer Milliarde Nervenzellen auf etwa zehn Millionen Fotos. Datenmengen und Computerleistung werden immer leichter verfügbar. Die eigentlichen Erfolge sind aber nicht die Serverfarmen – sie entstehen unter der Motorhaube: in den Algorithmen. Können wir dieses Wissen für ZEIT ONLINE anzapfen?

Zweiter Tag. "Wenn du einen Hammer hast, dann sieht alles wie ein Nagel aus", heißt eine alte Warnung an Algorithmiker. Vielleicht arbeiten derzeit nur deshalb alle mit neuronalen Netzen, weil dieser Hammer gerade in Mode ist? Ich will zuerst ein anderes, viel einfacheres Maschinenlernverfahren ausprobieren, den Klassiker. Der funktioniert so: Man ermittelt für jedes Wort die Wahrscheinlichkeit, mit der es jeweils in einem akzeptablen und in einem nicht akzeptablen Kommentar auftritt – völlig unabhängig von seiner Position oder Bedeutung im Kommentar. "Lernen" bedeutet hier also "Zählen": Der Rechner zählt, wie oft das jeweilige Wort in der einen oder anderen Gruppe von Texten auftritt.

Die erste Bot-Version arbeitet

Man nennt diese Methode den Bayeschen Bag-of-Words-Ansatz. Benannt ist er nach dem Statistik-Pionier Thomas Bayes aus dem 18. Jahrhundert – und weil die Worte ungeordnet, wie aus einem Sack, in den Rechner geschüttelt werden. Doch zuerst brauche ich etwas, um den Sack zu füllen: Daten. Ich mache mich in unserer Redaktion auf die Suche nach Thomas, dem Kollegen, der die Kommentar-Datenbank hütet. Dann mache ich mich daran, eine erste Version eines Spamfilters zu schreiben, in der Computersprache Python. Diese Sprache ist besonders komfortabel, wenn man Objekte zählen will. Und genau das ist mein Ziel. Mal sehen, was mein Skript in Thomas' Daten finden wird.

Was steckt in den Kommentaren?

Dritter Tag. Thomas stellt mir 5.000 von der Webseite gelöschte und 5.000 veröffentlichte Kommentare zur Verfügung. Der erste Test kann starten – und tatsächlich, die Unterschiede sind beträchtlich: "Arschloch" kommt in einem gelöschten Kommentar 15-mal so oft vor wie in einem guten, "Hitler" immerhin noch sechsmal so oft, "Gutmenschen" und "Dummheit" je dreimal. Aber: "Weltoffenheit" kommt in gelöschten Kommentaren 15-mal so oft vor wie in akzeptablen Kommentaren – und akzeptable Kommentare enthalten das Wort "Hausfrau" fast elfmal so oft wie gelöschte Kommentare. Offenkundig gibt es deutliche Unterschiede. Ich bin sehr zufrieden.

Mein Programm soll mit diesen Informationen jetzt für eine beliebige Menge von Worten ausrechnen, wie wahrscheinlich es ist, dass diese Worte einem akzeptablen oder einem nicht akzeptablen Kommentar entnommen wurden. Das funktioniert ganz gut – nicht ohne Grund basieren zahlreiche kommerzielle Spamfilter auf diesem System. Der Kommentar-Bot Version 0.1 schafft es am Abend des dritten Tages, 70 Prozent der Kommentare richtig zuzuordnen: Bei sieben von zehn Kommentaren stimmt er mit dem Urteil der Moderatoren überein. Jetzt bin ich sogar sehr zufrieden.

Vierter Tag. Es bleibt die Frage: Warum versagt der Bot bei drei von zehn Kommentaren? "Ich wäre dafür, Leugner des Holocaust schlicht von der staatlichen Fürsorge auszuschließen. Keine staatlichen Hilfen, keine behördliche Unterstützung in Verwaltungsdingen, also auch keinen gültigen Personalausweis." Der Bot findet: löschen. Das Moderatorenteam findet: nicht löschen. "Heißt das, ich sollte einen Angestellten feuern dürfen, weil er am Montag mit einem Pauli-Schal ins Büro kommt und in der Abteilung nur HSV-Fans sitzen?  Immerhin trägt der Angestellte damit seine Ideologie nach außen." Der Bot findet: Nicht löschen, die Moderatoren schon. Es sind die Grenzfälle oder implizite Anspielungen auf Hasskommentare, die dem Bot offenbar entgehen. Schon Menschen fällt da ein Urteil schwer. Um zu wissen, warum der HSV-Kommentar gelöscht wurde, müsste man wissen, auf welchen Kommentar er sich bezog. Dazu kommt, dass Sprache sich wandelt – schon innerhalb von Wochen, wie ich vom Moderatorenteam erfahre. Und dann ist da noch die schlichte Tatsache, dass Kommentare auf sehr unterschiedliche Art diskriminierend sein können: antisemitisch, ausländerfeindlich, frauenfeindlich oder hintergründig versteckt beleidigend. Obendrein besteht das Moderationsteam aus Dutzenden Menschen, die alle leicht unterschiedlich entscheiden. So lernt der Computer von einem nicht hundert Prozent konsequenten Lehrer. Vielleicht bessert sich die Erfolgsquote, wenn wir ein neuronales Netz einsetzen?

Neuronale Netze zu bauen ist seit einigen Jahren fast so einfach wie Lego zu spielen. Frei zugängliche Softwarebibliotheken erledigen die Arbeit im Hintergrund, man muss das Netz nur aus Bausteinen zusammensetzen. Ich nutze als Baukasten Keras, eine Bibliothek für Python, mit der man neuronale Netzwerke einfach formulieren kann. Keras liefert das Chassis, aber nicht die Maschine unter der Kühlerhaube. Dafür gibt es mehrere Möglichkeiten. Ich entscheide mich für Tensorflow – Software, die der KI-Experte Tomas Mikolov und sein Team für Google entwickelt haben. Auch Tensorflow ist frei herunterladbar.

Fünfter Tag. Das eigentliche Problem ist also nicht mehr das Bauen des neuronalen Netzes – sondern die Frage, welches Netzwerk man wählt. Als Schöpfer hat man unendlich viele Möglichkeiten. Was ist sinnvoll für die Textklassifizierung? Wie viele Ebenen staple ich übereinander? Wie verbinde ich die Neuronen? Welche Typen von Layern verwende ich am besten? Ich versenke mich in der Beschreibung von Keras, in "Dropout Layer", "MaxPooling" und "Konvolutionen". Und in Erfahrungsberichte auf Blogs, lese Anleitungen, um Ideen zu sammeln. Neuronale Netze sind eine Wissenschaft für sich. Und eine Industrie. Meine Skepsis wächst wieder.

Das künstliche Gehirn beginnt zu arbeiten

Sechster Tag. Kommentar-Bot Version 0.2 ist fertig. 250 Zeilen Code. Ganz schön mager, wenn man bedenkt, was diese Zeilen leisten: Das Skript übersetzt erst jeden Kommentar in eine Zahlenfolge von 400 Zahlen. Diese Zahlenfolgen bilden den Input für das neuronale Netz. Genauer: die Netze, denn wir nutzen mehrere. Netz Nummer 1 betrachtet immer vier nebeneinander liegende Zahlen – also Worte – im Input, Netz Nummer 2 ist für den größeren Überblick zuständig und betrachtet 12 nebeneinander liegende Worte. Die neuronalen Netze zur Textklassifizierung, die ich im Internet gefunden habe, nutzen immer nur ein Netz, sind aber auf die englische Sprache ausgelegt. Auf die Idee, zwei Netze zu nehmen, die zusammengeführt werden, kam ich in der Mittagspause, in einer Unterhaltung mit Julian, unserem programmierenden Datenvisualisierer. "Im Deutschen bestimmen ja nicht nur nahe nebeneinander liegende Worte den Sinn ("nicht wahr?"), sondern oft auch weit auseinander stehende Worte", sagte Julian. Da hat er recht. Jetzt füttere ich mein Doppelnetzwerk mit 7.500 Kommentaren zum Lernen, akzeptable und nicht akzeptable gut gemischt. Die übrigen 2.500 sind zum Testen. Schon nach etwa 30 Minuten kommt die Antwort: 75 Prozent Treffer. Yeah. Damit hätte ich nicht gerechnet.

Der Bot kommt ins Schwitzen

Tag sieben. Jetzt will ich raus aus der Spielecke: 7.500 Kommentare kommen manchmal in nur wenigen Stunden zusammen. Damit neuronale Netze richtig gut werden, müssen sie mit richtig vielen Daten trainiert werden, heißt es. Also los, auf zu Thomas. Der versorgt mich mit mehr Kommentaren. 40.000, viermal so viele wie bisher. Und die bringen Kommentar-Bot 0.2 ins Schwitzen. Ich merke schnell, dass ich nicht mit 16.000-Prozessorkernen wie Google, sondern nur mit zweien arbeite. Und das, obwohl ich mit 100.000-mal weniger virtuellen Nervenzellen auszukommen versuche. Mein Notebook lässt mich Stunden warten. Mein Herz klopft, als endlich die letzte Zahl auf dem Bildschirm erscheint. "Trefferquote=0,5012". Heißt: Mal stimmt er mit dem Urteil der Moderatoren überein, mal nicht, und die Chance, richtig zu liegen, ist fifty-fifty. Auweia. Offenbar versagt der Bot völlig, wenn die Datenmenge wächst. Warum?

Mehr Kommentare berühren mehr Themen. Beleidigungen können in viel mehr Richtungen formuliert werden. Die Muster in den Kommentaren verschwimmen. Der Computer verliert den Überblick. Das bedeutet jetzt Überstunden für die Maschine – und erst mal für den Menschen. Denn es ist eine alte Erkenntnis unter Programmierern: Bloße Rechenpower hilft wenig. Die algorithmischen Erfolge der letzten Jahrzehnte beruhen alle auf kleinen Tricks und Ideen. Die machen die Riesenwirkung aus. "Mathematik ist nicht die Kunst des Rechnens, sondern die Kunst des Nichtrechnens", notierte einmal David Hilbert, ein Mathematiker, vor 100 Jahren. Stimmt. Und neuronale Netze zu bauen ist Mathematik mit Strom.

Der Weg ist also das Ziel: Ich muss meine Daten vorbereiten, filtern, schlau aufteilen. "Preprocessing" heißt das. Erstes Ziel ist Komplexitätsreduktion: Ich verwerfe zu häufige Worte. Allerdings nicht zu viele, wie die ersten vorsichtigen Experimente zeigen. Das neuronale Netz bekommt außerdem zwei Ebenen und einige Hundert Nervenzellen mehr spendiert. Die Filter verändere ich auch. Dann starte ich neu, auf einem Rechner, der die Nachtschicht übernimmt.

Achter Tag. Login auf dem Server, noch vor dem Kaffee. Der Computer ist fertig. Sein Ergebnis: knapp 500 Megabyte Daten, die das Gelernte zusammenfassen, und ein elektronischer Notizzettel. Darauf steht: "Trefferquote=0,753". Das Programm stimmt also in mehr als 75 Prozent der Fälle mit dem Urteil der Moderatoren überein. Er hat gelernt, was ihm die Menschen vorgemacht haben, so ungefähr jedenfalls. Mehr scheint wohl nicht zu gehen, solange man nichts vom Inhalt der Texte versteht – und das tut mein Bot ebenso wenig wie Siri.

Ich bin zufrieden. Vielleicht wird mein Bot das Moderationsteam demnächst unterstützen, als eine Art Ratgeber. Dafür ist aber noch eine Menge Arbeit nötig, viele algorithmische Tricks und Feineinstellungen. Und eines ist wohl sicher: Ersetzen wird dieser Bot die Menschen nie.