In diesem Thema soll es darum gehen grundlegende Funktionsweisen und Strategien zum Bau einer simplen KI (Künstliche Intelligenz) mit Hilfe neuronaler Netzwerke zu überlegen, im Beispiel einen Kategorisierer für Forenpostings.
KI und neuronale Netzwerke sind heute in vielen Bereichen im Einsatz, meist jedoch mittels Rechnerfarmen und entsprechendem Hardwareaufwand. Beispiele sind die Google-Bildersuche oder digitale Assistenten wie Siri oder Cortana. Mit den neuerdings verfügbaren TPUs (Tensor Processing Units) oder dem ganz normalen PC kann man sich aber auch selbst leistungsfähige Anwendungen schaffen.
Unser Kategorisierer soll den Text von Forenpostings erfassen und in verschiedene Kategorien einteilen.
Grundlegendes Verständnis im Bereich Machine Learning und neuronaler Netzwerke (Neural Networks) ist z.B. im Youtube Channel von Siraj Raval zu finden:
https://www.youtube.com/watch?v=vOppzHpvTiQ
Unser Kategorisierer soll folgendermaßen aufgebaut sein:
Ein Eingangsmodul nimmt Sinneseindrücke auf, in unserem Fall von Text, welcher auf eine Folge von mehrdimensionale Vektoren (Beschreibungsvektor) gemappt wird, welche den Sinn des Textes ausdrücken. Der Vorteil dieser Herangehensweise ist, daß unabhängig von der Art des Sinneseindrucks, egal ob Bild, Text oder Ton, der Gleiche oder sehr ähnliche Beschreibungsvektor erzeugt wird.
Ein Bild "Eis am Stil" erzeugt also einen Beschreibungsvektor, welcher sehr nah zu einem Beschreibungsvektor eines Bildes "Eiskugel in Waffel" liegt.
Ebenso soll die Wortfolge "Eis am Stil" zu einem sehr ähnlichen oder identischen Beschreibungsvektor führen.
Daher muss das Wort "Eis" im Kontext erfasst werden, sonst könnte es sich ja auch um Eis in der Arktis oder Eis an einem Schaufelstil handeln, welches einen vollkommen anderem Beschreibungsvektor entspräche.
Wie kommen wir nun zu solch einem Beschreibungsvektor, ausgehend von der Eingabe einer Sequenz von Wörtern? Berücksichtigt werden muß der vorhergehende und nachfolgende nähere Wortinput sowie Satzzeichen (?!.,; etc.): Die Situation.
Eine Folge von Wörtern und Satzzeichen muß also im Bezug zu vorhergehenden und nachfolgenden Wörtern stehen. Auch leichte Fehler in der Schreibweise sollen möglich sein, ohne komplett andere Beschreibungsvektoren zu erhalten.
D.h. kleine Unterschiede in den Worten dürfen auch nur kleine Unterschiede in den resultierenden Beschreibungsvektoren erzeugen.
Auch wichtig ist die Sprache der Wörter, Wortgruppen müssen also als eine der Vektordimensionen die jeweilige Sprache enthalten. Die Sprache sollten wir erhalten, indem wir Reihenfolge und Häufigkeit von Buchstaben eines Textes auswerten.
Output dieses Text-Eingangsmoduls ist dann eine dem Wortinput entsprechende Folge von Beschreibungsvektoren, welche den Sinn des Wortinputs beschreiben.
Wird nach Lust, Laune und Zeit fortgesetzt. Hinweise, Bemerkungen und Fragen sind erwünscht.