Mit ChatGPT ist künstliche Intelligenz endgültig in unserer Gesellschaft angekommen. Ich weiß nicht wie Sie es wahrgenommen haben, aber allein die Anzahl der Gespräche, die ich in den letzten Wochen zu diesem Thema geführt habe, ist enorm. Was mich sehr gefreut hat, es waren auch viele Gespräche dabei, die aus meinem Podcast „Künstliche Intelligenz – ChatGPT erklärt für Entscheider“ entstanden sind.
Ich nehme dabei hauptsächlich zwei Strömungen war. Die einen nutzen es einfach und z.T. extensiv und sind fasziniert. Ich denke z.B. an einen Kollegen von mir, der hat immer schon viele Beiträge auf LinkedIn oder in seinem Blog veröffentlicht, der macht jetzt alles nur noch mit ChatGPT. Oder mein Vater. Der ist über 85 und ich habe ihm gezeigt, wie er mit einer KI-Plattform alte Schwarzweiß Fotos aufbereiten und einfärben kann. Jetzt schickt er mir auf Whatsapp immer seine neuesten Ergebnisse.
Die andere Strömung fokussiert sich auf die Gefahren und Risiken. „Ich bin ja nur froh, mich betrifft das nicht mehr, aber die nachfolgende Generation…“ sind häufig die Statements die zu hören bekomme. Gerade in der Presse nehme ich viele falsche Berichterstattungen wahr, die die Risiken in den Fokus nehmen. Artikel wie z.B. der Mitte Januar in der Handelszeitung erschiene Beitrag „Diese Jobs könnten durch künstliche Intelligenz ersetzt werden„, tragen nämlich eher zur Verwirrung bei und erzeugen Angst.
Was ich selten finde ist Wissen und Erklärungen wie KI funktioniert. Ich bin der Meinung, dass es sehr sinnvoll ist, wenn ich ein Werkzeug regelmäßig benutze, das ich verstehen sollte, wie es funktioniert. Ich fahre z.B. viel Auto. Es hilft mir einfach, dass ich verstehe, wie ein Auto und ein Motor funktionieren, damit ich Situationen besser einschätzen kann. Dabei ist es nicht mein Anspruch, dass ich das Auto selber reparieren will. Dafür gibt es Spezialisten.
Ich habe mich deshalb entschlossen aus aktuellem Anlass die Regel zu brechen und den Fokus von B2BTalks.de auf digitalen Vertrieb etwas zu verlassen.
Heute geht es mir darum, Sie im übertragenen Sinne zu „Autofahrern“ für künstliche Intelligenz zu machen. Sie als Entscheider oder Entscheiderin, die verstehen wollen, was KI leisten kann und was nicht, allgemeinverständlich zu informieren.
In diesem Podcast werde ich Ihnen erklären, wie künstliche Intelligenz Anwendungen überhaupt funktionieren. Dazu steige ich mit Ihnen in die Welt der neuronalen Netze ein. Dort werden Sie sehen wie Mustererkennung mit neuronalen Netzen funktioniert und wie wenig das mit Intelligenz zu tun hat. Da ich der Meinung bin, das ich Dinge am besten verstehe, wenn ich sie ausprobiere, habe ich mir Gedanken gemacht, wie man neuronale Netze sehr einfach in Excel nachbauen kann und das werde ich Ihnen zeigen. Um KI zu verstehen, muss man nämlich kein Informatiker sein. Logisches Denken reicht und Excel nutzt auch irgendwie jeder Entscheider und jede Entscheiderin. Wohlgemerkt, damit können Sie jetzt nicht als KI Experte arbeiten und die meiste Arbeit, nämlich Training, müssen Sie manuell leisten, aber die Prinzipien werden deutlich.
Anschließend erkläre ich Ihnen, wie man künstlichen Intelligenz Applikationen, wie z.B. ChatGPT, semantisches Wissen beibringt. Also wie bringe ich denen, z.B. den Inhalts eines Buchs bei und wie sind solche Systeme dann in der Lage eine Antwort auf eine Frage zu generieren.
Danach greife ich nochmals das Thema aus meinem oben genannten Podcast auf und erläutere, wie KI Applikationen Content, wie z.B. Bilder erzeugen.
Wenn Sie das verstanden haben, erkläre ich Ihnen warum Abstraktion die Grenze aller aktuellen Technologieansätze für künstliche Intelligenz ist und was das bedeutet. Danach werden Sie verstehen, warum wir noch Jahre, wenn nicht Jahrzehnte auf 100% autonom fahrende Autos verzichten müssen. Und wenn jemand jetzt Tesla sagt, zeigen ich Ihnen, wo Sie nachlesen können, das selbst Tesla Ingenieure sagen, das sie autonomes Fahren nicht beherrschen.
Enden möchte ich damit, dass ich Ihnen aufzeige, wo ich Potentiale für den Einsatz der aktuellen KI Systeme im Unternehmensumfeld sehe. Dabei lege ich den Fokus aber wieder auf digitalen Kundenservice und Vertrieb.
Mit diesem Wissen sollten Sie in der Lage sein, Entscheidungen über den Einsatz von künstlicher Intelligenz in Ihrem Unternehmen zu treffen. Wer sich nun fragt, woher ich das Verständnis von künstlicher Intelligenz habe? Ich habe Informatik studiert und mich im Hauptstudium intensiv mit künstlicher Intelligenz beschäftigt.
Da ich viele Beispiele verwende, die sich sehr gut über Grafiken darstellen lassen, sollten sie sich zum besseren Verständnis auch das Transkript zu diesem Podcast auf www.b2btalks.de anschauen.
Warum künstliche Intelligenz kein Algorithmus ist
Schauen wir uns erstmal an, wo sich KI Programme von Nicht KI Programmen unterscheiden. Nicht KI Programme, wie z.B. Excel, basieren auf Befehlsfolgen. Diese Befehlsfolgen nennt man auch Algorithmus. Ein Algorithmus wiederum lässt sich am besten mit einer abstrakten und standardisierten Problemlösungs-Beschreibung vergleichen.
Hier ein Beispiel. In einer Bank werden u.a. eingehende Zahlungen verarbeitet. Eine eingehende Zahlung bezieht sich immer auf ein Konto, hat ein Datum und einen Betrag <> 0, sowie eine Währung, die Kontoverbindung, den Name des Überweisenden und einen Betreff bzw. Verwendungszweck. Das soll uns für unser Beispiel zunächst reichen.
Ein Algorithmus würde nun nicht jede mögliche eingehende Zahlung von jeder möglichen Person unterscheiden, sondern würde die Verarbeitung einer Zahlung standardisieren.
Ganz abstrakt beschrieben, würde man zunächst die Voraussetzung für die Verarbeitung der Zahlung prüfen und dann, sofern alle Voraussetzungen erfüllt sind, die Kontoveränderung durchführen. Schauen wir uns das mal in Pseudocode an. Keine Angst, das Beispiel lässt sich einfach lesen und verstehen.
Diese Funktion könnten ich jetzt noch erweitern, so dass sie auch ausgehende Zahlungen prüfen und verarbeiten kann. Dann würde ich Fallunterscheidungen vorsehen. Z.B. würde ich die Prüfung, ob das Empfängerkonto bekannt ist ergänzen, aber an die Bedingung knüpfen, dass ich das nur bei einer ausgehenden Zahlung prüfe. Ein solcher algorithmischer Lösungsansatz ist geeignet, wenn ich ein Problem abstrahieren und standardisieren kann. Dazu muss man Regeln definieren können und eine standardisierbare Datenlage haben. Ein typisches Beispiel dafür ist die Buchhaltung.
Künstliche Intelligenz – Neuronale Netze zur Mustererkennung
Wenn ich aber Handschrifterkennung als Aufgabe lösen muss, komme ich mit einer algorithmischen Vorgehensweise nicht wirklich weiter. Menschen schreiben einfach zu unterschiedlich und benutzen dabei auch noch unterschiedliche Stifte und unterschiedliches Papier, so dass man hier nur sehr aufwendig Regeln definieren kann.
Unser Gehirn ist in den meisten Fällen aber sehr präzise in der Lage Handschrift zu erkennen, weil es Muster erkennen kann. Deswegen hat man sich in der Informatik damit beschäftigt nicht die Aufgabe, sondern die Mustererkennung unseres Gehirns als Algorithmus zu formulieren, um das Verhalten des Gehirns simulieren zu können.
Unser Gehirn basiert auf Neuronen, die Ein- und Ausgänge haben, über die sie wiederum mit anderen Neuronen verbunden sind. Wenn sie ein Eingangssignal erhalten und das Signal ist stark genug, geben sie das Signal über ihre Ausgänge an andere Neuronen weiter.
Das Verhalten lässt sich als Computerprogramm leicht simulieren. Ich habe eine Menge an Eingangsinformation und eine Menge an Ausgangsinformationen und eine Logik, die entscheidet, wie die Eingangsinformation als Ausgangsinformation weitergegeben wird. Für die Logik könnte man einfach die Summe aller Eingangsinformationen nehmen und wenn diese einen gewissen Wert überschreitet, dann geben wir dieses Ergebnis als Ausgangsinformation weiter. Das reicht schon, um das Verhalten eines Neurons zu simulieren.
Mit einem einzigen Neuron komme ich natürlich nicht allzu weit. Um komplexere Aufgaben lösen zu können, muss man logisch mehrere dieser simulierten Neuronen zusammenschalten, indem man die Ausgänge der einen Neuronen als Eingang für anderen Neuronen nutzt. Das ganze braucht einen Namen, also nennen wir es neuronales Netz. Das reicht schon als Werkzeug für eine Handschrifterkennung. Wie man dahin kommt, das erkläre ich jetzt.
Künstliche Intelligenz – Handschrifterkennung leicht gemacht
Der Schritt zur Handschrifterkennung besteht darin, die Handschrift in den Computer bzw. in mein neuronales Netz zu bekommen. Dazu muss ich den handgeschriebenen Text in einen Vektor, z.B. aus 0 und 1 transformieren. Wie tut man das? Das erkläre ich am besten an einem konkreten Beispiel.
Stellen Sie sich dazu das neuronale Netz als einen tabellarischen Konstrukt vor. Ganz links haben wir eine Spalte mit eingehenden Neuronen, die Signale der Außenwelt empfangen, ganz rechts haben wir eine Spalte mit ausgehende Neuronen, die das Ergebnis an die Außenwelt weitergeben und in der Mitte eine Menge an Spalte von Neuronen, die die eigentliche Arbeit leisten, indem sie die Signale bewerten. Alle Neuronen sind über ausgehende Kanten bzw. Verbindungen mit den Neuronen der jeweiligen Folgeschicht verbunden. Also die eingehenden, mit den verarbeitenden und diese wiederum mit den ausgehenden. Für unser Beispiel lassen die mittlere Schicht weg, da es erstmal nur um das Prinzip geht.
Die Beispielaufgabe, die unser neuronales Netz jetzt lösen soll ist, dass es ein „+“ Zeichen von einem „-“ Zeichen unterscheiden können soll. Das „+“ und das „-“ repräsentiere ich optisch auf die einfachste Art und Weise, nämlich als Matrix oder Tabelle aus 0 und 1 oder schwarzen und weißen Zellen.
Dazu benötige ich eine Matrix mit drei Spalten und drei Zeilen. In diese Matrix male ich jetzt das „+“. Das sieht im Ergebnis so aus, dass die linke und reche Zellen der obersten Zeile weiß sind und die Mitte schwarz. In der zweiten Zeile sind alle Zellen schwarz und die dritte Zeile ist identisch zur ersten Zeile. Mein gemaltes „+“ ist fertig.
Schauen wir uns im Vergleich dazu das gemalte „-“ an. Dieses Zeichen ist fast identisch zum „+“. Lediglich in der ersten und dritten Zeile gibt es einen Unterschied. Bei der „+“ war die mittlere Zelle schwarz. Beim „-“ ist die erste und dritte Zeile weiß.
Um die gemalten Zeichen „+“ und „-“ mit meinem neuronalen Netz erkennen zu können, muss ich die optische Darstellung der Zahlen meiner Matrix bzw. Tabelle in einen Vektor aus 0 und 1 transformieren. Das leisten wir ganz einfach, indem wir aus den 3 Spalten der gemalten Zahlen, ein Spalte machen und die jeweils 3 Werte, die ich pro Spalte habe, untereinander schreibe. Im Ergebnis habe ich eine Spalte mit 3×3 = 9 Werten oder Zeilen.
Danach übersetze ich „schwarz“ in 1 und „weiß“ in 0. Fertig ist meine Eingangsinformation für mein neuronales Netz. Das neuronale Netz muss ich jetzt so vorbereiten, dass es 9 Eingangsneuronen vorsieht. An jedes Neuron legen ich nun eine 1 oder eine 0. Je nachdem, was in meinem Vektor an der jeweiligen Stelle für das Zeichen „+“ oder für das Zeichen „-“ steht. Damit ist die Eingabe abgeschlossen.
Die Aufgabe besteht ja daran, das mir das neuronale Netz mitteilen soll, welches Zeichen vorliegt. Dazu muss ich mir Gedanken machen, wie ich die Ausgabe hinbekomme, also wie mein Ziel aussieht. Die einfachste Methode besteht darin, dass ich eine Summe über alle Eingänge bilde. Da ich zwei Zeichen unterscheiden möchte, reichen mir als Ausgabeschicht zwei Ausgangsneuronen.
Was ich jetzt noch machen muss, um Handschrifterkennung leisten zu können, ist, dass ich den eingehenden Verbindungen bzw. Kanten zwischen den Neuronen, unterschiedliche Bedeutung geben muss, bzw. unterschiedliches Gewicht.
Warum macht müssen die Gewichte angepasst werden? Wenn ich Zahlen erkennen möchte, sind für Erkennung nicht alle Eingangsinformationen gleichbedeutend. Beim „+“ und „-“ unterscheiden sich, um bei unserem obigen Beispiel zu bleiben, nur in der erste und dritte Zeile in der mittleren Zelle. Alle anderen Zellen in meiner Darstellung von „+“ und „-“ sind gleich.
Wir haben ja mittlerweile die Zeichen „+“ und „-“ in Vektoren aus „0“ und „1“ transformiert. Im Eingangsvektor sind die entscheidenden Stellen für die Unterscheidung der beiden Zeichen die mittler Zelle der ersten und dritten Zeile. Beim „+“ steht dort jeweils eine „1“ und beim „-“ eine „0“. Ansonsten sind beide Vektor identisch.
Um meinen neuronalen Netz die Zeichenerkennung beizubringen, lege ich pro Kante, also von jedem Eingang zu jedem Ausgang, ein Gewicht fest. Das Gewicht können Sie sich als Multiplikator vorstellen. Wir haben ja gerade gesehen, dass bei unserem Eingangsvektor einige Werte besonders wichtig sind. Das kann ich einem neuronalen Netz dadurch beibringen, dass ich an die Verbindungen zwischen dem Eingangsneuron und dem Ausgangsneuron einen höheren Wert lege, als an andere Kanten. Pro Ausgangsneuron bilde ich danach die Summe aus allen Eingangsvektoren (also 0 oder 1) multipliziert mit den jeweiligen Gewichten. Danach vergleiche ich welche Summe für welches Ausgabeneuron höher ist. Das ist dann das Zeichen das ich erkannt habe.
Jetzt bin ich fast fertig. Was mir noch fehlt, sind die richtigen Gewichte an meinen Verbindungen von Neuron zu Neuron. Um diese zu finden, muss ich es pro Eingangsvektor, oder in unserem Beispiel pro Zeichen, einfach ausprobieren, in dem ich solange die Gewichte verändere, bis mein Wunschergebnis, bzw. die richtigen Summen als Ergebnis rauskommt. Danach probiere ich es mit dem nächsten Zeichen und wiederhole das ganze solange, bis bei beiden Eingangsvektoren, bzw. beiden Zeichen, die richtigen Summen an den Ausgangsvektoren rauskommen.
Ein neuronales Netz macht das natürlich automatisch und passt die Gewichte an, probiert aber im Prinzip genauso Gewichtswerte aus, bis das Ergebnis passt. Man nennt diese Phase Trainingsphase. Sobald diese Phase abgeschlossen ist, kann ich mein neuronales Netz nutzen um handgeschriebene „+“ und „-“ Zeichen zu erkennen. Genau das habe ich in Excel abgebildet. Die Podcasthörer müssen mir an dieser Stelle glauben, alle anderen können sich die Exceldatei einfach mal runterladen. Seinen Sie aber nicht enttäuscht, so viel steckt da nicht hinter.
Download Neuronales Netz mit Excel
Die Exceldatei ist so aufgebaut, dass Sie im linken Bereich vier Beispiele als Input bzw. Eingang sehen. In der Mitte wird pro Beispiel die Frage gestellt, ob der Input ein „+“ oder ein „-“ Zeichen ist. Das Ergebnis ist pro Beispiel grün markiert. Das erste, dritte und vierte Beispiel wird als „+“ und das zweite als „-“ erkennt. Im rechten Bereich sehen Sie die Gewichte mit denen die Eingangvektoren für die jeweilige Zeichenerkennung multipliziert werden. Wenn Sie die Gewichte verändern, verändern sich auch die Ergebnisse. Ersetzen Sie z.B. mal den Wert 0,2001 in der Zelle N3 durch 10. Jetzt erkennt unser neuronales Netz nicht mehr korrekt. Schreiben Sie eine 0,1 in diese Zelle und die Ergebnisse sind auch korrekt. Das bedeutet, dass mehrere unterschiedliche Gewichtseinstellungen zu korrekten Ergebnissen führen. Das ist nicht schlimm, sondern im Gegenteil erforderlich. Würde ich meinem Netz jetzt noch das Divisionzeichen „/“ beibringen wollen, muss ich die Gewichte ja so anpassen können, dass das in allen Fällen funktioniert. Wenn Sie mögen, können Sie das ja als Übungsaufgabe lösen.
In unserem Beispiel ist die Datenlagen für die Zeichen „+“ und „-“ natürlich massiv vereinfacht worden. In der Realität werden Zeichen, wie z.B. Buchstaben und Zahlen, aber anders geschrieben. Wie funktioniert mein neuronales Netz denn dann? Ganz einfach. Sie machen den Eingangsvektor größer. Stellen Sie sich 90 Werte statt der 9 vor, die für unser Beispiel verwendet haben. Und pro Zelle sehen wir nicht nur ein Bit, also 0 oder 1 bzw. schwarz und weiß, sondern ein Byte vor, also Zahlen von 0 bis 7. Dann kann ich sogar Grauschattierungen abbilden und wenn das Byte nicht reicht, nehme ich eben ein Kilo- oder ein Megabyte und so weiter. Dann lässt sich auch Farbe repräsentieren.
Das gerade erläuterte Prinzip bliebt aber im Grundsatz immer gleich. Es verändern sich die Größe der Eingangs- und Ausgangsvektoren in Bezug auf die Muster, die ich erkennen möchte und die Daten, mit denen ich das tun möchte. Ebenfalls kann ich Verarbeitungsschichten ergänzen, so dass mein neuronales Netz 50 oder mehr Schichten bzw. Spalten hat. Das zu tun, dafür gibt es unterschiedliche Gründe, die aber für Sie für ein Grundverständnis nicht relevant sind. Deswegen habe ich die Verarbeitungschicht in unserem Beispiel auch weggelassen.
Wenn Sie sich die Exceldatei jetzt anschauen, dann sehen Sie 4 Beispiele. Die ersten beiden entsprechen genau den Vorlagen für „+“ und „-„. Beim dritten Beispiel habe ich vom „+“ die mittlere Zelle statt auf 1 auf 0 gesetzt. Sie erkennen beim Ergebnis bzw. Output, das das neuronale Netz für diese Eingabe das „+“ mit 0,80446 für wahrscheinlicher hält als das „-„, welches auf 0,6003 kommt und somit kleiner ist. So hätte ich das auch entschieden. Das dritte Beispiel ist eher ein „+“ als ein „-„.
Beim vierten Beispiel habe ich nun zusätzlich aus der ersten Zeile die mittlere Zelle auf 0 gesetzt. Das neuronale Netz ermittelt auch für diesen Fall, dass das „+“ Zeichen wahrscheinlicher als das „-“ Zeichen ist. Allerdings unterscheiden sich die Summe nur noch marginal an der dritten Nachkommastelle. Mir leuchte auch dieses Beispiel ein.
Ich hoffe es ist deutlich geworden, das algorithmisch die Programmierung eines neuronales Netzes, im Vergleich zu einer Buchhaltung, trivial ist. Die eigentliche Leistung liegt in der Trainingsphase und das Ergebnis der Trainingsphase ist auch kein Algorithmus, sondern, das sind die Gewichte. Wenn Sie die Gewichte an ein anderes neuronales Netz weitergeben, kann dieses Netz exakt das gleiche leisten. Ähnlich wie bei einer Exceldatei. Wenn Sie die weitergeben und jemand öffnet die, sieht er genau das gleiche, wie Sie.
Ein ähnliches neuronales Netz wird z.B. eingesetzt, wenn Bilder aus einem Computertomographen nach Hinweisen auf Krebsanzeichen untersucht werden sollen. Die Bilder werden in ein Vektor gewandelt. Das Training geschieht mit Bildern bei denen die Diagnose bereits vorliegt und wenn ich lange genug mit hinreichend Daten bzw. Bildern trainiert habe, erkennt mein neuronales Netz sehr treffsicher bei unbekannten Computertomographiebildern, ob ein Krebsverdacht besteht oder nicht.
Algorithmisch könnte ich ein solches Problem nur mit extrem viel Aufwand lösen. Bei einem neuronalen Netz ist der Aufwand für die Programmierung, wie ich ja vorhin bereits erwähnte, gering. Allerdings muss ich das Training durchführen und die Daten dafür bereitstellen. Aber das Training kann ich i.d.R. automatisieren. Das macht ein Computer auch Nachts oder am Wochenende.
Spricht doch alles für den Einsatz von neuronalen Netzen, oder? Nicht ganz, einen Algorithmus kann ich lesen und logisch verstehen. Auf dem Wege bin ich auch in der Lage Logikfehler zu identifizieren. Ein neuronales Netze bildet sein Wissen in Gewichten ab und entscheidet danach was es tut. Einen Logikfehler kann ich so nicht mehr erkennen. Ich muss deshalb, um sicherzustellen, dass ein neuronales Netz richtig funktioniert, immer die Ergebnisse prüfen und mir genau überlegen, wann die Trainingsphase abgeschlossen ist. Wenn die Eingangsinformationen endlich sind, ist das leistbar, bei unendlich vielen Eingangsinformationen kann ich das aber nicht. Das ist aktuell noch ein Riesenproblem der künstlichen Intelligenz, z.B. beim autonomen Fahren. Dazu aber im nächsten Podcast mehr.
Wenn Sie bis hierhin durchgehalten und alles verstanden haben, dann kann ich Ihnen an dieser Stelle den „KI-Freischwimmerausweis“ überreichen, denn Sie haben die Grundlagen von künstlicher Intelligenz verstanden. Herzlichen Glückwunsch dazu!
Das Werkzeug, was Sie sich bis hierhin erarbeitet haben, wenden wir jetzt nur noch an. Wie Sie mit diesen Fähigkeiten Bilder „malen“ oder Texte „verstehen“ und schreiben können, das erkläre ich Ihnen im folgenden Podcast. Also bleiben Sie dabei und machen Sie direkt Ihren „KI-Fahrtenschwimmschein“ hinterher ;-).