Gastbeitrag von André Fritsche: Wie programmiert man eine künstliche Intelligenz?

Ich freue mich sehr heute einen Gastbeitrag von André Fritsche veröffentlichen zu dürfen. 
André wird in diesen Beitrag berichten, wie man mit „Naive Bayes“ eine künstliche Intelligenz programmieren kann. Mega Spannender Beitrag aus Sicht eines KI Entwicklers.
Viel Spaß beim Lesen…

André, wer bist du und was machst du?
Mein Name ist Andre Fritsche. Ich arbeite als Software Entwickler und blogge regelmäßig über das Thema IT Sicherheit. Dadurch finde ich viele Berührungspunkte in den Bereichen der IT und es entstehen Ideen oder kleine Projekte, über die ich gerne Berichte.

„Naive Bayes“
Es vergeht nicht ein Tag, an dem nicht jemand mit künstlicher Intelligenz hier und da wirbt.
Das Marketinggeblabber der großen und kleinen Firmen ist riesig und es wird viel versprochen, aber teilweise auch nur erwähnt, dass das neue Produkt X nun einen KI Chip hat oder mit KI unterstützt wird. Aber was sollen diese KI Chips denn bewerkstelligen, außer die Verkaufszahlen hochzutreiben, da ja jetzt KI mit an Bord ist?

Das habe ich mich auch gefragt, vor allem, da die KI in der Welt der IT Sicherheit angekommen ist. Dort kann ich das teilweise nachvollziehen, da künstliche Intelligenz Ordnung in die Unordnung bringen kann. Vorausgesetzt, der Erschaffer ist außerordentlich geschickt.
Angriffe über das automatisierte Auswerten von Logfiles (Ist eine Datei, in der Ereignisse auf Computersystemen oder in Netzwerken protokolliert werden) erkennen, ist sicher ein sehr nützliches Feature. Aber was steht sonst dahinter? Man hört laufend die gleichen Buzzwords, darunter vor allem eines:

-> Neuronales Netzwerk

Beschäftigt man sich tiefer damit, wird klar, dass es noch weitaus mehr gibt als besagte Netzwerke, die letztlich eine Simulation von verbundenen Neuronen darstellen.
Ich möchte das ganze Thema etwas relativieren, denn der Hype ist meiner Meinung nach etwas überzogen. Letztlich handelt es sich bei künstlicher Intelligenz nämlich um nichts anderes als mathematische Modelle.

Ich habe mich kürzlich mit dem sogenannten „Naive Bayes“ beschäftigt und möchte kurz darüber berichten, denn es ist eine Möglichkeit, in kurzer Zeit brauchbare Ergebnisse zu liefern und tatsächlich eine künstliche Intelligenz bei der Arbeit zu sehen.

Was ist Naive Bayes?
Ganz vereinfacht gesagt handelt es sich bei dieser Technik um einen Satz aus der Wahrscheinlichkeitsrechnung. Nämlich den „Satz von Bayes“ Bei diesem gilt, dass für zwei Ereignisse A und B die Wahrscheinlichkeit von A unter der Bedingung dass B eingetreten ist, berechnen.
Die genaue Formel findet man dafür im Netz, falls sie Dich interessiert.

Aber was soll das in der realen Welt? Ich versuche die oben genannte Aussage über den Satz von Bayes etwas zu konkretisieren für einen Fall, an dem ich damit gearbeitet habe.
Mein Ziel war es Texte zu klassifizieren. Das heißt, ich möchte, dass ein Algorithmus in der Lage ist zu erkennen, um welches Thema in einem Text gesprochen wird oder welche Sprache.
Wenn ich diese Aufgabe nun auf den Satz von Bayes Anwende, so formuliere ich das so um:

Die Wahrscheinlichkeit (A), dass es im vorliegenden Text um Bitcoin geht unter der Bedingung, dass folgende Wörter (B) in diesem Text auftreten, soll berechnet werden.

Es ist tatsächlich so einfach und lässt sich auch auf Spracherkennungen anwenden, denn dann ist das Ereignis A die Identifizierung einer Sprache, unter der Bedingung, dass bestimmte Wörter auftauchen (B).
Es ist nicht die beste Möglichkeit Texte zu klassifizieren und vermutlich auch nicht die effizienteste, aber für meine Zwecke hat das gut funktioniert und mir letztlich der Welt der künstlichen Intelligenz etwas erleuchtet.

Ich gebe noch ein Beispiel:
Um eine KI vernünftig zu trainieren bedarf es einer guten Basis und einer Struktur.
Am einfachsten ist beim hier benutzen Programm eine CSV Datei, die so aussehen könnte.

-> label;Text

Dabei handelt es sich bei den Labels, um die möglichen Klassifizierungskategorien und die Texte sind Beispiele, die das System einliest, um zu verstehen, dass es sich bei jenem Text eben um das vorangehende Label handelt. Je mehr und je besser die Texte zu den Labels passen, umso besser werden später die Ergebnisse.

Es reichen schon ein paar Hundert Einträge in der Datei, um Texte einigermaßen gut zu klassifizieren.
Ich habe das mit einem Kollegen ausprobiert und wir haben Texte aus einem Bitcoin Forum als Trainingsbasis versucht zu nehmen. Das war äußerst anstrengend, denn wir sind manuell 600 Sätze durchgegangen und mussten uns auf ein Label einigen. Nach ca. 3 anstrengenden Stunden waren wir durch und nahmen andere Sätze aus dem Forum, die unsere KI nicht durch die Trainings kannte.
Dann ging es darum zu erkennen, ob typische Diskussionsthemen im Forum auftauchten.

-> Bitcoin
-> Ethereum
-> Andere Kryptowährungen
-> Mining

Wir haben relativ schnell gemerkt, dass der Klassifizierer vor allem mit dem Label „Mining“ Probleme hatte. Das konnten wir dann auf unsere mangelhaften Trainingsdaten zurückführen, denn es gab so gut wie keine Sätze, die wir mit dem „Mining“ gelabelt haben.
Sobald also ein Forumsteilnehmer seine Dienste als Übersetzer für Webseiten anbot, sahen wir bei der Klassifizierung: Mining. Das war völlig falsch und wir mussten dagegen lenken.
Unsere Lösung war es einen Blog zu finden, der ausschließlich über das Thema „Mining“ berichtet. Also haben wir die Texte dort hinzugefügt und sind wieder manuell durch jeden Satz gegangen, damit wir weitere Fehler ausschließen konnten.

Das Ergebnis war, dass nun die relevantesten Sätze aus dem Bitcoin Forum, die tatsächlich etwas mit Mining zu tun haben, auch als solche klassifiziert worden sind. Mission erfüllt!

Fazit:
Künstliche Intelligenzen sind nur so gut, wie ihr Training ist! Wir müssen uns das immer vor Augen halten. Die KI kann letztlich nur das, was man ihr beibringt.
So kommt man schnell an die Grenzen des Machbaren und merkt, dass man hier keine Wunderwaffe hat, die man generisch in jede beliebige Technologien einbetten kann.
Es erfordert viel Zeit und gründliche Tests, bevor man mit den Ergebnissen einer KI weiter verfahren kann.
Und am Ende ist es doch wieder die Mathematik, die die Grundlage dafür legt.

André hat auch einen eigenen Blog, ich würde mich freuen wenn du den Blog besuchst. Dort erwarten Dich noch viel mehr spannende Beiträge aus der IT Welt.

Zum Schluss möchte ich André Danken, so einen spannenden Einblick gegeben zu haben, wie das Programmieren einer künstlichen Intelligenz funktioniert.
Vielen Vielen Dank André!
——————————————————————————————————-
Du hast ein ein spannendes Thema was zur New Economy passt? Dann würde ich mich über einen Gastbeitrag von Dir freuen. Schreib mich dazu gerne an!

 

Kommentar hinterlassen

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

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere