An dieser Stelle erwähnen wir, dass diese Plattform ständig erweitert wird. Besonders in diesem Kapitel finden Sie regelmäßig neue Inhalte und Methoden.

 

Sollten Sie den Weg in die Praxis suchen, können Sie sich von unseren Use-Cases inspirieren lassen.

 

Wir wollen Sie motivieren: Beginnen Sie zu experimentieren! Nutzen Sie bestehende Datenbanken für erste Schritte.

Methoden

Sie kennen nun die Grundlagen und Grundfähigkeiten der Künstlichen Intelligenz. Wir streichen hier noch einmal heraus, dass die von uns hier gewählten Fähigkeiten nicht klar voneinander abzugrenzen sind und es bisher keine allgemeingültige Einteilung der AI-Fähigkeiten, geschweige denn eine unumstrittene Definition von AI gibt. ​Nachdem Sie sich mit den Fähigkeiten beschäftigt haben, bleibt eine Frage offen: ​

Und jetzt? Wie kann ich all das nutzen? ​

Die Frage ist also, wie die einzelnen Fähigkeiten implementiert werden können und suchen dazu Methoden, die das erlauben. In diesem Teil unserer Wissensdrehscheibe finden Sie eine Auswahl an  Methoden zur Implementierung von AI-Fähigkeiten.​

 
SUCHEN

Wie Sie schon wissen ist Suchen eine Fähigkeit, die mit dem Entkommen aus einem Labyrinth vergleichbar ist. In der Praxis könnte dieses Labyrinth ein großes Gebäude mit vielen Gängen sein. Hier könnten wir Suchen für einen mobilen Roboter nutzen, um von einem bekannten Startpunkt ans Ziel zu kommen.​

 

Abstrakter gedacht, könnte ein „Labyrinth“ aber auch alle Möglichkeiten zur Beladung eines Containerschiffs beschreiben. Ein weiteres Beispiel wäre ein Brettspiel wie Schach.

Aber wo ist hier ein Labyrinth?

Exakt diese Frage zeigt die Komplexität der Technologie! Es gilt das „Problem“ so umformulieren zu können, dass es mit den Fähigkeiten und Methoden lösbar wird. Stellen wir uns ein Labyrinth vor: Wir beginnen in einem Raum und vor uns liegt ein Schachbrett in Ausgangslage. Für jede mögliche Bewegung der Figuren finden wir einen Gang in einen neuen Raum. In diesem neuen Raum können wir uns ein Schachbrett vorstellen, wo exakt diese Bewegung durchgeführt wurde. Um das Spiel zu gewinnen, müssen wir mit Suchen jene Kombination an Räumen finden, die den/die Spieler/in zum Sieg führt. ​

In diesem Bereich finden Sie drei mögliche Implementierungen für die Fähigkeit Suchen: Die Breitensuche, die Tiefensuche und den berühmten A*-Algorithmus.

Beginnen wir zunächst mit dem einfachsten Algorithmus: der Breitensuche. Stellen wir uns zunächst wieder unser virtuelles Labyrinth vor. Wir stehen in diesem Labyrinth, sehen uns um und erkennen vier Türen in weitere Räume. Spielen wir nun die Idee der Breitensuche nach – Sie werden sehen, dass diese für den Menschen unnötig kompliziert wirkt. Computer können diese strukturierte Idee jedoch sehr gut umsetzen. 

Labyrinth.png

Was machen wir nun in unserem Labyrinth? Wir blicken nun in jeden der neuen Räume! Betrachten Sie bitte die links dargestellte Grafik – diese neuen Räume sind orange dargestellt. Ist in einem der Räume unser Ziel? Wenn ja – sind wir fertig.

Wenn nein, kommt der wesentliche Schritt der Breitensuche zum Einsatz: wir packen einen Notizblock ein (Sie werden sehen, den werden wir brauchen) und marschieren nun in jeden der vier orangenen Räume. In jedem Raum sehen wir uns um und suchen weitere, noch unbekannte Räume. Wir blicken in diese neuen Räume (in der Grafik grün dargestellt) und notieren am Notizblock, ob einer dieser neuen Räume unser Ziel ist. Diese Prozedur machen wir für alle vier im vorhergehenden Schritt gefundenen Räume.  

Sie sehen, obwohl wir die Suchstrategie erst zweimal eingesetzt haben, wurden schon 20 Räume analysiert. Wir haben für jeden Raum die Position im Labyrinth notiert. Weiter notieren wir ob einer der Räume das Ziel ist. Stellen Sie sich vor, dass wir noch einen Suchschritt machen. Das wären dann 4 + 4² + 4³ = 84 Räume.

Ein weiterer Schritt und unser Notizblock wäre voll. Sehen wir uns die technischen Hintergründe dieses Algorithmus an. 

Unser nächster Algorithmus beschäftigt sich mit dem im Video beschriebenen Problem (was im Endeffekt unser Notizblock-Problem wie oben beschrieben ist). Uns gehen die Seiten im Block aus – in einem Computer entspricht das dem Speicher. Also versuchen wir eine alternative Strategie. Ein einfacher Ansatz: Wir gehen immer in eine Richtung, egal in welchem Raum wir sind. Nehmen wir an, dass wir immer den neuen Raum wählen, dessen Eingangstür direkt vor uns liegt, wenn wir einen neuen Raum betreten. Wir dringen also in die „Tiefe“ des Labyrinths vor, und ignorieren alle anderen Türen im Raum. Stehen wir in einem Raum, wo vor uns keine Türe mehr ist, gehen wir ausnahmsweise in den linken Raum. Geht das nicht – dann gehen wir in den rechten Raum. Geht das auch nicht müssen wir einen Raum zurück gehen. Wir verschließen die Türe, denn der verlassene Raum führt uns sicher nicht ans Ziel. Mit diesem Algorithmus, genannt Tiefensuche, können wir ebenfalls das Ziel in unserem Labyrinth suchen. Es ist eine alternative Strategie zur Breitensuche.

Wir haben ein Problem: Theoretisch können wir „unendlich“ lange in unserem Labyrinth in eine Richtung gehen. Das wollen wir verhindern. Eine Erweiterung der Tiefensuche löst dieses Problem und limitiert die Tiefensuche auf eine "intelligente" Art und Weise.

Die genannten Algorithmen können bereits eine Vielzahl von realen Problemen lösen. Ein gemeinsames Problem haben diese Ansätze aber: Sie suchen nicht besonders intelligent. In den meisten Problemen haben wir "Wissen", das wir nutzen können. Ein Beispiel dafür sind zum Beispiel Distanzen. Können wir versuchen "Faulheit" zu beschreiben, um in unserem virtuellen Labyrinth so wenig wie möglich Schritte zu machen? Wissen wir wo unser Ziel ist? Können wir die Distanz dorthin in unsere Algorithmen einbauen? Die Antwort ist ja – beides ist möglich. Beginnen wir zunächst, diese Faulheit zu integrieren. Der resultierende Ansatz wird "geizig" genannt, weil er Faulheit durch die Minimierung von sogenannten Kosten implementiert. Darauf aufbauend lässt sich der A*-Algorithmus (Achtung: ein wenig mehr Algorithmik und Mathematik) formulieren.

 

Die klassische AI-Fähigkeit, die uns an humanoide Roboter aus Filmen erinnert, haben wir als Grundfähigkeit kennengelernt. Christoph Redl hat über die Anwendung von Logikprogrammierung berichtet. Wir wissen nun, dass wir eine Domäne mit Ontologien beschreiben müssen und Logik zum Schlussfolgern darauf aufsetzen können. Das sind sehr abstrakte Konzepte – wie können wir diese einsetzen? In den folgenden Videos sehen wir uns einige Methoden an, um Wissensrepräsentation und Logik praktisch einzusetzen.

WISSENSREPRÄSENTATION
& LOGIK

Es existieren Ansätze, um Wissen so zu formulieren, dass wir mit Maschinen kommunizieren können. Wir können Teile unseres Wissens bezüglich der Welt digital beschreiben und diese Beschreibung für Schlussfolgerungen nutzen. Diese Beschreibungen nennt man "knowledge graphs". Sehen wir uns an, wie wir diese Konstrukte zur Kommunikation mit Maschinen nutzen können. 

Schlussendlich wollen wir an dieser Stelle erwähnen, dass nicht immer AI-Methoden zur Analyse von Dokumenten und Texten genutzt werden müssen. Typische Methoden der Datenverarbeitung, also die komplexere Analyse von einfachen Symbolen und Zeichen im Text, können bereits viele Probleme ohne AI lösen.

 
 
LERNEN

Die vorhergehende AI-Fähigkeit beschreibt den Umgang mit unsicherem Wissen. Wir haben gesehen, dass hier die komplette Bandbreite der Statistik eingesetzt wird und wir haben das Kausalitätsproblem kennengelernt. ​Eine große Anzahl an möglichen AI-Anwendungen basiert auf der Fähigkeit Lernen, wo durch Messungen dargestelltes unsicheres Wissen so verarbeitet wird, dass Wissen generiert wird. Eine Maschine ist dadurch in der Lage aus  vorliegenden „Daten“ zu lernen und Probleme zu lösen. So können zum Beispiel defekte Bauteile erkannt werden. Bedenken Sie bitte: alle folgenden Methoden beschreiben statistische Ansätze. Eine „100%“-Verlässlichkeit ist nicht möglich.​

Im folgenden finden Sie unterschiedliche Methoden, um Lernen zu implementieren. Wir unterteilen wieder in Supervised Learning und Unsupervised Learning.

Wir beginnen dieses Kapitel für die Implementierung von Lernen mit der einfachsten Methode: dem Naive Bayes Classifier. Diesen haben wir im Kapitel Unsicheres Wissen schon kennengelernt.​

Wie im zugehörigen Video von Stefan Lackner bereits angesprochen, sind für die Anwendung eines Naive Bayes Classifiers Annahmen bezüglich der Daten nötig. Diese Annahmen beschreiben die Verteilung der Daten – also eine Annahme, welcher Prozess diese Daten generiert hat. In den folgenden Videos sehen Sie Beispiele dafür. Zuerst beginnen wir mit abzählbaren Datenpunkten (multinomiale Verteilung), bevor wir zu nicht-zählbaren Größen (Gaußverteilung) kommen. ​

Dieser (wir geben zu – nur für Statistiker) intuitive Ansatz scheint simpel und verständlich zu sein. Die Frage ist: warum reicht das nicht?​ Leider sind die Zusammenhänge in realen Daten häufig sehr komplex. Demnach muss die Methode in der Lage sein, sehr komplexe Zusammenhänge zu erkennen und zu nutzen. Alternativ zum Naive Bayes Classifier stellen wir nun zusätzliche Methoden vor.

Die aktuell am intensivsten genutzte Methode ist ein künstliches neuronales Netz. Das häufig romantisierte Modell besteht aus einer Architektur einzelner simpler mathematischer Bausteine genannt „Neuron“. Durch die parallele und serielle Verknüpfung vieler Neuronen (wir reden hier meistens von mehr als 10^6 Neuronen), ergibt sich eine generell einsetzbare Methode für viele Anwendungsfälle, wie Computer Vision oder Sprachverarbeitung. Die Grundarchitektur eines künstlichen neuronalen Netzes ist im folgenden Video beschrieben.​

Sie werden sehen, dass künstliche neuronale Netze eine große Bedeutung im Kapitel Wahrnehmen & Handeln haben​.

Alternativ zu künstlichen neuronalen Netzen existieren sehr viele weitere Modelle - wir haben für Sie einige ausgewählt und beginnen zunächst mit der Support Vector Machine (SVM). Die SVM erstellt eine Funktion zur Klassifizierung oder Regression durch das Umformulieren des Problems in ein Optimierungsproblem. Das Ziel ist es eine „Trennlinie“ in einem abstrakten Datenraum zu finden, die Klassen (z.B. Bilder von Katzen und Hunden) trennen kann. Ist die SVM erfolgreich, kann die Trennlinie in einer Applikation (z.B. um Katzenfotos von Hundefotos zu trennen) genutzt werden. ​

Die bisherigen Lernmodelle (Naive Classifier, neuronale Netzwerke, support vector machines) sind sehr gute und erforschte Ansätze. Schlussendlich wollen wir in diesem Kapitel „Decision Trees“ und darauf aufbauend „random forests“ vorstellen. Die Idee dieser Methoden ist recht einfach: wir erzeugen simple wahr/falsch Fragen für vorliegende Daten. Durch die Kombination vieler dieser wahr/falsch Fragen lassen sich komplexe Entscheidungen treffen. Das sich daraus ergebende Konstrukt nennt man „decision tree“. Hin und wieder haben Mathematiker doch ein wenig Humor – die Kombination dieser trees nennt man „random forest“.  

Bisher haben wir uns in diesem Teil der Wissensdrehscheibe mit Supervised Learning beschäftigt. In den letzten Videos haben Sie gehört, wie eine SVM oder ein künstliches neuronales Netz Daten verarbeiten kann. In den Videos haben Sie „einfache“ Beispiele gesehen. Was aber, wenn wir kein zweidimensionales Problem, sondern ein hochdimensionales Problem haben? Stellen wir uns ein winziges Graustufenbild von 28x28 Pixeln vor. Das wären 784 Zahlen, die wir nur für ein Bild verarbeiten müssten. Das führt zu einem bekannten Problem im Bereich des maschinellen Lernens - der sogenannte „curse of dimensionality“. Simpel ausgedrückt: Hochdimensionale Probleme sind einfach schwieriger zu lösen. ​

Eine Möglichkeit, mit dem "curse of dimensionality" umzugehen, führt uns zurück zum Umgang mit unsicherem Wissen. Wir nutzen Statistik, um relevante Information aus einem Datensatz zu gewinnen und verarbeiten dann nur noch diese. Ein Beispiel wäre eine Bilddatenbank bestehend aus 10.000 Graustufenbilder (z.B. 28 mal 28 Pixel). Diese Bilder zeigen die Zahlen 0-9. Wir wollen den Datensatz verarbeiten, um einen Klassifikator zu erstellen. In dem Datensatz müssen also 10.000 mal 28 mal 28 Zahlen verarbeitet werden. Das sind 7,84 Millionen Zahlen. Wir nutzen nun statistische Methoden aus dem Bereich Unsupervised Learning, um den Datensatz zu reduzieren. Simpel ausgedrückt, wollen wir statt den 28 mal 28 Pixeln wesentlich weniger Zahlen pro Bild verwenden. Dazu stellen wir zwei Methoden vor: die Principal Component Analysis und die Independent Component Analysis.​

Die PCA und ICA sind sehr einfache Modelle. Auch hier gibt es unzählige Alternativen: Zum Beispiel Autoencoder oder GP-LVM.

UNSICHERES WISSEN

Die Statistik spielt in der AI eine wesentliche Rolle. Wie uns Lars Mehnen bereits berichtete, sind nicht alle Dinge so wie sie auf den ersten Blick erscheinen. Wir müssen mit Unsicherheiten arbeiten, was dazu führt, dass Logik häufig nicht einsetzbar ist.​

Die Statistik (und damit unsicheres Wissen) ist die Grundlage für alle Methoden der Fähigkeiten Lernen. Der Umgang mit unsicherem Wissen hat einen sehr wissenschaftlichen Charakter. Auf dieser Plattform wollen wir mehr auf den praktischen Nutzen eingehen. Wir referenzieren an dieser Stelle somit auf einschlägige Literatur.​

Pearl_Causality, Bishop_Machine Learning & pattern recognition.jpg

Christopher Bishop: Machine Learning & pattern recognition

Nichtsdestotrotz wollen wir hier auf simple Lösungen durch einfache statistische Methoden hinweisen. ​Wenn wir Daten sammeln, können wir diese mit Statistik beschreiben. In vielen Fällen reicht das aus, um eine Klassifizierung durchführen zu können. Der einfachste Ansatz ist der sogenannte Naive Bayes Classifier.​

Wir werden später - im Kapitel Lernen - zugehörige Anwendungen sehen. Eines ist offensichtlich: der Naive Bayes Classifier ist sehr einfach zu implementieren. Allerdings hat der simple Aufbau auch mehrere Nachteile. Neben limitierter Einsatzfähigkeit lassen sich keine zeitlichen Abläufe beschreiben. Das Schlussfolgern über die Zeit ist ein häufig auftretendes Problem. Wettervorhersagen, die Verarbeitung von gesprochener Sprache oder das Verfolgen von Objekten in Kamerabildern sind nur wenige Beispiele. Hier versucht man in disktreten Zeitschlitzen oder Sequenzen Zustände zu schätzen. Als Zustand wird zum Beispiel die Position und Orientierung eines Roboters oder das Wetter (Sonnenschein, Temperatur, etc.) verstanden. Häufig können wir den Zustand nicht direkt messen – wir müssen ihn basierend auf (Sensor)Daten schätzen. Die berühmtesten statistischen Methoden um das zu tun sind hidden markov models bzw. rückgekoppelte neuronale Netze.​

Wir wollen dieses Unterkapitel mit einer kritischen Betrachtung beenden. Die Statistik erlaubt uns vieles – allerdings ist der Kausale Zusammenhang nicht immer in den Daten erkennbar. Als Beispiel um dies zu verdeutlichen stellen wir uns zwei gleich große Ackerflächen vor. Wir nehmen zwei unterschiedliche Dünger für diese Ackerflächen und messen am Ende der Saison wie viel Ertrag wir aus den Flächen gewonnen haben. Ackerfläche 1 hat wesentlich mehr Ertrag. Die vorliegenden Daten sagen nun, dass der Dünger von Ackerfläche 1 besser ist. Ist das aber ein kausaler Zusammenhang? Müssten wir nicht die Bodenart und Bewässerung auch berücksichtigen? Ja – das müssen wir! Aber diese kausalen Zusammenhänge sehen wir nicht in den Daten. Im folgenden Video wird dieses Problem beschrieben. Lars erklärt Ihnen warum neuronale Netze eigentlich nicht funktionieren können ;-) ​

Zusammenfassend können wir sagen: Sie herrschen über die Daten – seien Sie kritisch und reflektieren Sie die Ergebnisse.

 
WAHRNEHMEN & HANDELN

Die vorhergehenden Methoden beschreiben die Implementierung von grundlegenden Fähigkeiten der AI. Mit diesen Methoden sind viele Applikationen implementierbar. Häufig wollen wir einer Maschine aber menschliches Verhalten wie Sehen, Hören oder Fühlen beibringen. Wir beschäftigen uns nun aufbauend auf den bekannten Fähigkeiten und Methoden mit diesen menschlichen Fähigkeiten.​

Im nachfolgenden Teil lernen Sie Methoden zur Implementierung von Sehen und Hören kennen. Fühlen ist aktuell ein sehr kleines Forschungsgebiet mit noch wenigen Anwendungsfällen (z.B. in der kollaborativen Robotik).

Wir beginnen die Diskussion mit der Verarbeitung von bildgebenden Sensoren, um Sehen zu ermöglichen. Seit der Publikation von Alexnet im Jahr 2012 haben sich sogenannte Convolutional Neuronal Networks (CNNs) in der Bildverarbeitung als Maß aller Dinge etabliert. Bevor wir beginnen mit CNNs zu arbeiten, sollten wir uns zunächst mit klassischen Methoden beschäftigen, um Bilder zu analysieren.​

Das Problem mit diesen Ansätzen ist die fehlende Generalisierung. Sollte Histogram of Oriented Gradients (HOG) für die eigene Applikation passen, ist eine Kombination von HOG mit einer SVM sicherlich eine gute Wahl. Allerdings reichen diese (häufig auch handcrafted Features genannten) Methoden zur Merkmalsextraktion nicht aus. Die menschlich gemachten „Regeln“ passen meistens nicht auf die hohe Dynamik der Realität. Der Ansatz der CNNs ist es, passende Merkmale basierend auf einem Datensatz selbstständig zu lernen. Aber was macht diese „convolution“ eigentlich wirklich und wie setzt man das für Objektklassifizierung ein?​

An dieser Stelle wollen wir erwähnen, dass ein großer Teil aktueller Forschung auf die Aufdeckung der Gründe von CNN-Verhalten abzielt. Hier wurden beispielsweise grundlegende Probleme sowie „betrügen“ identifiziert. Der Einsatz von CNNs ist also mit Vorsicht zu genießen. ​Die CNN Klassifizierung kann zu „Detektoren“ erweitert werden – also das gleichzeitige Lokalisieren und Klassifizieren von Objekten.​

Alternativ dazu wäre natürlich der Einsatz von Unsupervised Learning in Kombination mit Supervised Learning denkbar. Das führte ursprünglich zu den sogenannten „Eigenfaces“​.

Ansätze basierend auf dieser Idee führen zwar zu „erklärbareren“ Lösungen, können aber nicht mit der Klassifizierungsgenauigkeit von CNNs mithalten. Ihre Aufgabe als Entscheidungsträger/in oder Designer/in solcher Systeme ist es, abzuwägen, ob Erklärbarkeit oder Performance relevanter ist.

Welches Modell nehmen wir nun? CNNs oder doch alternative Methoden? Für die Beantwortung dieser Frage gibt es keine generelle Antwort (hierzu gibt es auch wissenschaftliche Abhandlungen - „no-free-lunch Theorem“). Für die meisten simplen Probleme sind CNNs der einfachste Weg. Wollen Sie einen Informationsgewinn aus Bildern generieren, könnten alternative Methoden der bessere Weg sein.

Nachdem wir uns mit der Verarbeitung von Bildern beschäftigt haben, sehen wir uns nun Methoden zur Verarbeitung von Sprache an. Was muss man hier prinzipiell machen?​

Wir beginnen bei der klassischen Verarbeitung von Text und beschäftigen uns anschließend mit der Analyse von gesprochener Sprache.​

Gesprochene Sprache zu analysieren ist wesentlich komplexer als die Analyse von Text. Das digitalisierte Signal des Mikrophons muss so analysiert werden, dass die temporale Abfolge von Lauten, Wörtern und Sätzen abgeleitet werden kann. Hier spielt natürlich der Syntax eine große Rolle. Wir erinnern uns an Methoden zum Schlussfolgern über die Zeit.​