vondragonlair 21.10.2018

dragonlair

Technologie ohne Weichzeichner und Softlayer wie grafische Oberflächen.

Mehr über diesen Blog

Wie kommt man von einfachem Quelltext eines Programms, zu etwas das als künstliche Intelligenzen verstanden wird? Thematische Buchübersicht. Aber zum eigentlichem Experiment. Die Frage die sich hier stellt ist: „Kann mir ein Programm sinnvolle Empfehlungen für Texte geben?“. Für ein beliebiges Verständnis von ’sinnvoll‘. Rechtschreibprüfung ist ein Beispiel das als ’sinnvolle Empfehlung‘ verstanden werden kann. Dabei werden unterschiedliche Verfahren angewendet. Z.B. könnte eine Rechtschreibprüfung so programmiert werden, dass sie als erstes versucht das Wort im Wörterbuch zu finden. Schlägt das fehl, soll ein Abstand resp. eine Entfernung des gesuchten Wortes zu den Wörtern im Duden berechnet werden. Die Levenshtein-Distanz kann als Algorithmus dafür herhalten. Die Grundannahme dabei ist, das je kleiner der Abstand ist, je weniger Buchstaben ausgetauscht werden müssen, desto wahrscheinlicher ist dies der Rechtschreibfehler der gemacht wurde und das ähnlichste Wort zu Korrektur gefunden. Easy, so lange wir auf so komische Konvention wie Grammatik verzichten. Aus Geschwindigkeitsgründen könnte noch eingebaut werden, dass nur Wörter verglichen werden die etwa gleich lang sind, aber das sind ‚Kleinigkeiten‘ und nicht das was allgemein als künstliche Intelligenz verstanden wird.

Einen Diskussion darüber was unter dem Begriff „Künstliche Intelligenz“ verstanden wird, ist nicht einfach. Wenn das Elevator Girl durch ein Computerprogramm ersetzt wird, das Stimmen erkennen kann, ist das nicht mehr besonders aufregend, auch wenn ein Mensch durch ein Computerprogramm vollständig ersetzt wurde. Was fehlt? Natürlich die ‚Kleinigkeiten‘. Das Programm im Fahrstuhl kontrolliert die Fahrstuhlmotoren und steuert die Stockwerke an. Es wird mir nicht sagen können, wie spät es ist, wo ein gutes Restaurant ist oder mich begrüßen. Aber was ist, wenn dieser ‚KI-Fahrstuhl‘ mehr Daten bekommen würde? Daten wie die aktuelle Uhrzeit, eine vollständige Karte der Umgebung und beim Betreten des Fahrstuhls ein Foto von mir macht, etwas Gesichtserkennung über das Bild jagt und mich fragt wie ich angesprochen werden möchte. Dazu erzählt es mir noch die aktuelle Wetterlage. Ist das eine KI? Nope! Das gibt es als Alexa, Sierie, Cortana, mycroft, Jasper oder Julius.

When Will AI Exceed Human Performance?
Die Umfrage auf https://arxiv.org/abs/1705.08807 „When Will AI Exceed Human Performance?“ zerlegt die Frage in viele Teilaufgaben die eine “High-level machine intelligence” (HLMI) bewerkstelligen muss. Programmieren, Auto fahren, eigene Spiele erklären, Wäsche falten.

Buzzwortbingo und Wortdefinitionen

Schmeißen wir doch mal alles in einen Topf und rühren ordentlich durch. Neben den technischen Begriffen wie tf/idf(zähl die Wörter gewichtet), Logistische Regression (finde eine Kurve zwischen Punkten – ein Klassifikator) oder PCA (filtere Features raus) sind da so weltlich Begriffe wie Statistik, (Big)Data(mineing), MachineLearning, Deep Learning, und mit etwas Glück Feature engineering. Das wieder aufzudröseln und eine exakte Definition zu geben ist dank Marketing, Hypes und Influenzer nicht leichter.
Der Grundgedanke von MachineLearning ist es eine Software zu schreiben, die basierend auf den Eingangsdaten die beste Lösung für ein Problem findet. Die Software soll mittels try and error wie ein Kind lernen, was die beste Lösung ist ohne das Änderungen an der Software vorgenommen werden. Was braucht man dafür? Erstmal Daten. Viele Daten. Denn die Software soll irgendwas lernen, was für Menschen vielleicht nicht so offensichtlich ist. Beispiel? Artikel klassifizieren. Was für ‚Klassen‘ soll es denn geben? Was ist denn die Targetvariable? Was kann eine Software lernen zu erkennen? Eigentlich alles, was der Mensch als MetaDaten oder #Tags an den Artikel angehängt hat. Im taz-Universum sind das auch Ressort, Autoren und Artikeltypen die durch die Redaktion oder Onlineabteilung angehängt werden. Oder Klick-zahl, Facebook-likes, Twitter-shares die durch andere Menschen erzeugt wurden. Wofür auch immer ein Orakel der Statistik benötigt wird. In anderen Bereichen: Wirkung von Medikamenten, Vorhersage von Aktienkursen oder dem Wetter, Handschrifterkennung.

Farbe und Style von einem Bild auf ein Anderes übertragen wird von Dienstleistern wie deepart ( wiki ) als Webservice angeboten und geht genauso spielerisch von der Hand wie die zugehörige Prisma App. Die Ursprünge dieser Technik sind in Apps wie „Facetune“ zu finden. In einem nicht kommerziell orientierten Arbeit ( pdf ) wird die Rechenzeiten von drei Minuten angegeben um einen Stil zu kopieren. Dabei sind die Eingangsbilder gerade mal 0,2 Megapixel. Diese Bilder werden in einem Convolutional Neural Network ( CNN ) stückweise auf Features wie Kanten, Objekte und Farbverläufe untersucht. Wie kann man Objekte erkennen? Wie sieht der Himmel aus? Wo fängt er an? Wo hört er auf? Was ist mit Reflexionen? Dafür kann ein (MachineLearning-)Modell zur Objekterkennung verwendet werden. Auf deutsch: Je ähnlicher sich die Bilder strukturell sind, desto exakter ist der erkannte Stil resp. dann das Ergebnisse – wie unerwartet. Die Grafikkarte in dem Setup? Etwa 1000Euro. Ein vortrainierte Autoencoder hat 2012 schon mal auf 1000 Servern mit je 16 CPUS drei Tage trainieren. Diese Art von Kunst auf eine professionele Ebene zu heben ist beeindruckend und zeugt von sehr viel Detailwissen, ist aber weit entfernt von einer allgemeinen künstlichen Intelligenz. Genauso wie die Gesichtserkennung DeepFace von Facebook, die auf x-Millionen Gesichter trainiert wurde, FakeApp resp. DeepFake ( taz berichtete ) oder eine Software zum Lippenlesen.

taz texte

Was hier versucht wird, ist anhand des Textes das zugehörige Ressort zu erkennen. Ressorts sind dabei etwas wie ‚Berlin‘, ‚Politik.Deutschland‘ oder ‚Sport.Fussball‘ und wird durch die Autorin vergeben. Die Targetvariable. Für den Menschen wäre das ein Programm, das die Targetvariable, basierend auf Text und erlerntem Verständnis, für unbekannte oder neue Texte vorhersagen kann. Das Programm könnte mögliche Targetressort nur anhand des eingegebenen Textes sortieren. „Oh mächtiges Orakel von Ishtar sage mir aus welchem Ressort kommt das Zitat ‚plus eins auf Karma'“. Ein eher praktikabler Anwendungsfall könnte ein Newsaggregator sein, der für Ressorts diverse Fremdtexte oder Meldungen vorsortiert.

Algorithmen zerhack stückeln den Text in seine Teile um ihn zu analysieren. Dabei ist der kleinste Teil das einzelne Wort – also zumindest im westlichem Sprachraum – und kann anteilig gezählt werden. Andere Textfeatures könnten Absatz-/Satzlänge und deren Auftrittswahrscheinlichkeit sein. Mit dem Python framework sklearn kann eine Abfolge von komplexen Algorithmen einfach in Reihe geschaltet werden. Diese Pipelinestruktur lässt sich auch für komplexe Schaltungen verwenden. Einschränkend auf die Menge der Daten sind die Ressourcen Arbeitsspeicher und CPU-Power im System. In Folge dessen wurden Ziffern und satzbauunspezifische Sonderzeichen entfernt. Andere Datenreduktionen die statt gefunden haben, betrifft die Anzahl der Targetressorts und die Sprache. Die Artikel sind auf deutsch und Ressorts wurden zusammen geführt oder ganz entfernt. Von den etwa 17k Artikeln aus dem Jahr 2017 bleiben etwa 14k Samples mit 22 unterschiedlichen Targets. Das sind die Eingangsdaten für sklearn und nur ein Teil der taz-Artikel. Die sklearn-Pipeline limitiert die Wortzählung auf die 20k häufigsten Wörter und filtert mit PCA auf die 3k variabelsten Zählungen. Verstehe ich bis ins letzte Detail wie eine PCA funktioniert? Eher nicht. Aber ich mache mir ihre Eigenschaften zu nutze. Diese 3k ‚interessanten‘ Dimensionen/Features werden zusammen mit etwa 12.5tausend zufällig ausgewählten Targetsamples in einen Klassifikator geworfen um ihn zu trainieren. Systematisch wird eine Tabelle mit dreitausend Spalten und zwölftausendfünfhunder Zeilen betrachtet. Also etwa 37,5 Millionen Zellen in der Tabellenkalkulation – überschaubar. „Und das Orakel antwortete [‚was-fehlt‘] oder [‚Wahrheit‘] vielleicht auch [‚Politik.Europa‘] aber fast sicher nicht [‚Sport‘].“ Die Kleinigkeiten, wie immer.

// Nerd Talk

Nachdem der Klassifikator Ergebnisse liefert, muss er überprüft werden. In Sklearn gibt es dafür direkt eine Funktion die einen classification_report erzeugt. Dieser basiert auf der Konfusion Matrix und gibt grob an, wo der Klassifikator sich geirrt hat. Dabei versucht precision die Frage zu beantworten „von allen Passagieren die markiert wurden, wie viele Passagiere haben überlebt?“. Und recall eben genau die andere Seite: „Von allen Passagieren die überlebt haben, wie viele wurden markiert?“. Der f1-score ist dabei dann eine Gewichtung von precision und recall. Zum Beispiel waren 87% der als Kultur.Musik klassifizierten Artikel wirklich Artikel aus dem Ressort, 13% war ursprünglich irgendwas anderes. Als Kultur.Musik erkannt wurden 77% der Artikel. Die Restlichen 23% wurden anderen Ressorts zugeordnet. Eine hohe Differenz zwischen recall und precision könnte auf Schlüsselfeatures oder fehlende Sättigung / „Datenhunger“ hindeuten.

uhh Spielzeug…

Das Vergrößern der Sampleanzahl um die Jahre 2015, 2016 und 2018 hat an dieser Stelle keine exakteren Ergebnisse gebracht. Die Features Satzlängen und Absatzanzahl brachte keinen nennenswerten Verbesserung. Das Verwenden des SDGClassifiere führte zu einer Trainingszeit von etwa 400 Sekunden bei etwa 10% geringeren Durchschnittswerten. Das setzen der Hyperparameter auf 40k / 5k statt 20k / 3k dauerte im Training fast 6000 Sekunden und erhöhte die Testzeit um mehr als 600%. Das Modell verbesserte sich dadurch um 1%. Das Verwenden von Bi- und Trigrammen statt einzelnen Wörtern lieferte ähnliche Ergebnisse wie der SDGClassifiere wobei die Trainingszeit etwa 900 Sekunden umspannt. Es gibt diverse ähnliche Parameter die mittels Rastersuche bestimmbar sind. Genauso gibt es diverse unterschiedliche Klassifikator, die für unterschiedliche Zwecke eingesetzt werden können.

Das Evaluieren, ob ein Feature oder Hyperparameter sinnvoll ist, kann zu einem Geduldsspiel werden. Die Fehlerbetrachtung bringt dann zu Tage, dass die gesamte Pipeline sich oft irrt, wenn es den Unterschied zwischen Gesellschaft.Alltag, Gesellschaft.Kolumnen und Gesellschaft.Medien in den Artikeln zu bestimmen gilt, was dann auch irgendwie nachvollziehbar ist. Genau das gleiche Problem tritt auch bei den Ressorts „Nord“ und „Nord.Hamburg“ auf. Auffällig ist auch die Differenz von 0.13 im f1-Score zwischen Sport und Sport.Fussball beim Erkennen. Mit einer Gesamtgenauigkeit von 96,27% auf die Trainingssamples aber 69,95% auf die Testsamples ist das Modell scheinbar auch mit 37k Trainings- resp. 16k Testsamples – vier Jahre taz-Artikel mit 9,7k vernachlässigten Artikeln – nicht gesättigt. Werden alle Gesellschaftsressorts und alle Nordressorts in dem Ressort Gesellschaft resp Nord zusammen gefasst, hat das Machinelearning Programm eine Genauigkeit von 74%. Für eine Textklassifikation ist das Ergebnis okeyish, da jeder 4 Text falsch zugeordnet.

Eine wahrscheinliche Fehlerquelle könnte der lange Betrachtungszeitraum sein. Über einen Zeitraum von etwa vier Jahre ändern sich nicht nur die Themen im einzelnen Ressort, sondern auch der Schreibstil des Ressort ( z.B. durch Imagewechsel ). Reuters- oder DPA-Tickermeldungen von Agenturen die einem Ressort zugewiesen wurden, müssen genauer betrachtet werden. Sie sind zwar thematisch ähnlich, aber der Stil weicht wahrscheinlich vo dem des Ressort ab. Letztendlich: etwas, dass 37k Texte einliest ist weit entfernt von OneShot-Learning.

Anzeige

Wenn dir der Artikel gefallen hat, dann teile ihn über Facebook oder Twitter. Falls du was zu sagen hast, freuen wir uns über Kommentare

https://blogs.taz.de/dragonlair/texterkenntnis/

aktuell auf taz.de

kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.