Nach dem Trubel um die Go-Ki von Google möchte ich hier auch mal paar Auslassungen dazu von mir geben.
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.
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.
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!
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.
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
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, muss 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 Codeberg-Repositories findet man hier.