Go, KI, Google...

vorhergehende Artikel in: Rants
14.03.2016

Nach dem Trubel um die Go-Ki von Google möchte ich hier auch mal paar Auslassungen dazu von mir geben.

Anstoß

Google führt (zum Zeitpunkt der Erstellung dieses Artikels) mit 3:1 gegen den besten Go-Spieler der Welt. Na und?

Nachdem ich in FeFes Blog auch schon wieder die Formulierungen lesen musste, mit denen die Mainstream-Medien und demnächst überschütten werden und es teilweise bereits tun: Das, was da im Computer werkelt ist keine KI!

Und die Angst, die manch einem kommen könnte und die von FeFe so schön formuliert wird als "Wir wissen nicht, warum er das und das tut!". Dieses diffuse Angstgefühl kommt daher, dass man das Publikum mit falschen Fakten füttert - ich gehe darauf noch ein.

Es ist keine KI

Das was dort auf unglaublich vielen Prozessoren viele Wochen lang trainiert worden ist, ist keine KI. Wenn man die Hintergründe liest, versteht man das: Es ist ein Programm - von Menschen geschaffen - das einfach sehr schnell hintereinander zufällige Spielverläufe daraufhin untersucht, ob man daraus mit hoher Wahrscheinlichkeit einen Sieg machen könnte.

Das hat nichts mit Intelligenz zu tun - das ist stupides Probieren. Weiterhin werden Netze mit überwachten Lernverfahren trainiert. Schon die Bezeichnung müsste eigentlich verboten werden: Eigentlich ist es ein abrichten - Ich verstehe Lernen so, dass zwei Partner sich über Symbole und Kategorien vcerständigen können und der eine (der Lehrer) dem anderen (dem Schüler) Zusammenhänge zwischen diesen Symbolen und Kategorien aufzeigt, die jener noch nicht selbst ergründen konnte.

Beim überwachten Lernen tun wir aber noch nicht mal das, was man einem Hund beispielsweise bei dessen Abrichtung beibringt: Ein Hund - richtig trainiert - tut auf einen äußeren Reiz genau das, was erwartet wird. In einem durch überwachtes "Lernen" trainierten Netzwerk werden einfach nur die "Neuronen" der Ausgangsschicht unterschiedlich stark aktiv. Das ist alles, was das neuronale Netzwerk tut. Es entscheidet nicht. Es gibt mittels der unterschiedlichen Aktivitäten in der Ausgangsschicht eine Wahrscheinlichkeitsverteilung an, die dann vom Anwender interpretiert wird - meistens so, dass das Maximum der Wahrscheinlichkeiten der Eins entspricht und alle anderen auf 0 gesetzt werden. Aber dies ist eine Entscheidung, die derjenige trifft, der das Netz trainiert hat - nicht das Netz selbst: Dieses hätte vielleicht Ausgaben präsentiert, dass ein Knoten A 0.6 und B 0.4 liefert. Als Entscheidung wird aber "Knoten A" gefeiert, obwohl sich das Netz ja nun wirklich nicht sicher war.

Das trifft übrigens auch auf Clusterverfahren oder unüberwachtes Lernen (was essentiell nichts anderes als Clustering ist) zu: in einem solchen Netz sind auch immer alle Knoten aktiv - der Anwender interpretiert aber eben Dinge hinein, die im Netzwerk überhaupt nicht enthalten sind.

Aber wir verstehen nicht was es tut

Die Formulierung "Wir können nicht hineinsehen und wissen nicht, warum es das tut, was es tut" verursacht vielen, die sich mit diesen Systemen noch nicht befasst haben einen - je nach Veranlagung - wohligen Schauer. Aber der Grund dafür, dass wir das System nicht fragen können, warum eine Entscheidung so und nicht anders gefallen ist, ist schlicht und ergreifend der, dass wir das Problem nicht verstehen.

Würden wir das Problem verstehen, könnten wir einen Algorithmus dafür formulieren - und dann könnten wir ein System, das diesen implementiert sehr wohl und zu jedem Zeitpunkt fragen, warum es diese und jene Entscheidung getroffen hat.

Ein sehr schönes Beispiel für diese Tatsache ist die Geschichte, mit der mich mein Professor für Neuroinformatik in einer der ersten Vorlesunen erfreut hat: Amerikanische Generäle wollten vor vielen Jahren ein System, das auf Aufklärungsbildern Panzer identifizieren kann. Sie gaben entsprechende Aufnahmen ohne und mit Panzern an die Wissenschaftler und die legten los. Bald schon stellten sich atemberaubende Erfolge ein und ein Termin wurde vereinbart, das System den Generälen zu präsentieren. Der Termin kam und die Generäle hatten frische Bilder dabei, die das System klassifizieren sollte. Es schlug grandios fehl. Die Quote kam nicht über 50% hinaus - da hätte man einfach eine Münze werfen können. Großes Rätselraten setzte ein - bis einer erkannte, was passiert war: Das Systm erreichte immer noch die Quote, die es beim Lernen innehatte - man hatte die Ergebnisse falsch ausgewertet: Die Bilder, mit denen das System trainiert wurde, stammten von einem einzigen Manöver innerhalb weniger Stunden mit einer stabilen Wetterlage. Die Bilder ohne Panzer im Lern-Datensatz wurden an einem anderen Tag ebenfalls innerhalb weniger Stunden aufgenommen - das System hatte gelernt, zwischen gutem und schlechtem Wetter zu unterscheiden!

Das meinte ich oben mit "wir können uns nicht über Symbole und Kategorien unterhalten": Das System hatte Charakteristika in den Eingangsdaten "erkannt", die mit seinem Reinforcement (Katgorie 1 oder 2) übereinstimmten - aber eben nicht die, die durch die Wissenschaftler intendiert waren!

Das funktioniert übrigens nicht nur bei künstlichen neuronalen Netzen: Anfang des letzten Jahrhunderts machte der kluge Hans von sich Reden - ein Pferd dessen Besitzer damit warb, dass es rechnen könne. Diesr Besitzer glaubte das selbst und stellte es verschiedenen wissenschaftlichen Kommissionen vor. Erstaunlicherweise wusste das Pferd tatsächlich die richtigen Antworten. Man glaubte, dass der Besitzer ihm versteckte Zeichen gab - aber auch nachdem im Raum nur noch Hans und eine Menge der Skeptiker anwensend war, rechnete das Pferd richtig. Erst, nachdem man Tests machte, in denen die Aufgabe Hans so präsentiert wurde, dass die Anwesenden diese nicht sehen konnten und daher erst nachdem Hans geantwortet hatte, die richtige Lösung ausrechnen konnten, wurden die Ergebnsise schlagartig so wie erwartet: Hans lag eigentlich immer daneben. Das hatte aber nichts mit Gedankenlesen zu tun - Hans achtete einfach sehr genau auf die Körpersprache der Anwensenden - diese waren angespannt, solange Hans beim Klopfen mit dem Huf noch nicht bei de rrichtigen Zahl angekommen war - an diesem Punkt änderte sich die Körpersprache minimal und darauf reagierte er mit Einstellen des Hufklopfens - er hatte nicht Rechnen gelernt, sondern Körpersprache zu interpretieren!

Um nochmal auf den vorherigen Absatz zurückzukommen - wir dürfen uns keine Sorgen machen, dass wir nicht verstehen, warum ein Netzwerk bestimmte Entscheidungen trifft - die Entscheidungen trifft der Anwender; Daher müssen wir auch den Fragen, warum er Entscheidungen dieser und jener Art aus dem Ergebnis der Berechnung des Netzwerkes ableitet!

Was machen die Dinger eigentlich?

Wie in einem der Follow-Ups auf FeFes Artikel bereits richtig anklingt, kommt es darauf an, das Netzwerk richtig auszulegen, dass es zunächst einmal die Lerndaten korrekt widergibt, aber auch mit zuvor ungelernten Daten vernünftig umzugehen weiß. Dazu ein kleiner Exkurs, was diese überwachten Lernverfahren eigentlich tun: Das Perzeptron bestand aus einer Schicht Eingabeneuronen und einer Schicht Ausgabeneuronen. Man konnte zeigen, dass dieses Konstrukt nur in der Lage war, linear separierbare Probleme zu lösen. Dies wurde entschärft, indem sogenannte Hidden Layer als Schichten zwischen diesen beiden eingefügt wurden. Perzeptrons haben sozusagen durch das Lernen den Eingangsraum durch eine n-dimensionale Ebene geteilt. Wer auf der einen Seite lag, wurde in die eine Kategorie eingeteilt, wer auf der anderen Seite lag, in die andere. Man kann sich anschaulich vorstellen dass die Eingangsdaten, die einer Kategorie zuzuordnen sind, aber eventuell nicht mittels einer Linie von denen die der anderen Kategorie zuzuordnen sind, zu trennen sind. Hidden Layer sorgen dafür, dass die Grenze zwischen Kategorien aus mehreren n-dimensionalen Polynomen bestehen können. Aber auch das stellt nicht sicher, dass die Trennung korrekt vorgenommen wird - fehlt ein signifikanter Anteil in der Lernstichprobe, verlaufen die Trennlinien eben nicht an der korrekten Stelle

Müssen wir Angst haben

Müssen wir nicht - solche Netzwerke werden bereits heute in vielen Stellen eingesetzt - aber ihre Entscheidungen werden immer geprüft. Das einfachste Beispiel dafür ist die Steuerung eines Roboters: er verfügt über Ultraschallsensoren, die als Input in ein neuronales Netz dienen. Der Ausgang dieses Netzes lenkt den Roboter. Aber er verfügt unabhängig davon über eine Kontrolle des Antriebes durch Infrarot-Sensoren, die ihn stoppen, wenn er sich einem Hindernis zu sehr annähert. Da kann das neuronale Netz so laut "nach rechts!" schreien, wie es will, wenn dort ein Hindernis steht, wird der Roboter durch eine unabhängige Instanz gestoppt.

Auch das Beispiel aus der Medizin ist nach diesem Muster gestrickt: Die neuronalen Ansätze treffen eine Vorauswahl - nachdemm dies getan ist, wird diese aber bewertet und gegebenenfalls überstimmt.

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.