In diesem Blog wird die Lernerfahrung beschrieben aus dem Online-Kurs „Machine Learning A-Z™: Hands-On Python & R In Data Science”. Ich gehe in diesem Blog der Frage nach, inwieweit sich dieser Kurs für IT Projektleiter und Product Owner eignet, um ein besseres Verständnis für Maschinenlernen / Künstliche Intelligenz zu bekommen – und zwar ohne tiefere Vorkenntnisse. Denn: Maschinenlernen bzw. Künstliche Intelligenz wird in der Softwareentwicklung eine wachsende Bedeutung einnehmen; in absehbarer Zeit dürfte es nur noch wenige Softwareprojekte geben, die gänzlich ohne Maschinenlernen auskommen. In den Worten von Google-Chef Sundar Pichai: „Wir werden uns von einer Mobile-first-Welt in eine KI-first-Welt bewegen“, wo der Computer ein mit Künstlicher Intelligenz (KI) ausgestatteter Sprachassistent sein wird.

In dieser Artikelserie zum udemy Academy-Kurs vermittele ich einige ausgewählte, wesentliche Knowledge Nuggets, die ein gutes Verständnis von der inhaltlichen Ausrichtung des Online-Kurses und gleichzeitig einige wesentliche Lerninhalte vermitteln. Dieser Überblick ist ein Appetizer und soll den Online-Kurs selbstverständlich nicht ersetzen.

Hier geht’s zu den ersten acht Teilen der Serie:

Maschinenlernen / Künstliche Intelligenz – Convolutional Neural Networks für die Bildanalyse

Dieser Kurs zu Convolutional Neural Networks ergänzt den Kursteil über Künstliche Neuronale Netzwerke, und zwar für den spezifischen Anwendungsbereich der Bildanalyse (Image Processing). In diesen Anwendungsbereich fällt etwa die Erkennung von Objekten auf Bildern (Hund oder Katze?) oder aber die (umstrittene) Gesichtserkennung.

[Exkurs] Ein Meilenstein in der Geschichte der Mustererkennung durch Künstlichen Intelligenz ist ein Projekt der Google X Labs. Im Jahr 2012 wurde ein Netzwerk von Computern mit etwa 10 Millionen Bildern gefüttert; nach drei Tagen gelang dem „Google Brain“, auf diesen Bildern nicht nur Menschen, sondern auch Katzen zu identifizieren. [Exkurs Ende]

Es ist grundsätzlich hilfreich zu verstehen, wie die Erkennung von Objekten in der menschlichen Wahrnehmung funktioniert. Eine zentrale Rolle bei der visuellen Wahrnehmung von Gegenständen und deren richtiger Einordnung spielen spezifische Merkmale: Spezifische Merkmale eines Geparden sind etwa „schwarze Punkte auf gelbem Fell“ oder – für (Raub)Katzen im Allgemeinen –das Merkmal „Schnurrhaare“. Ein Zebra weist das Merkmal „schwarz-weiße Streifenmuster“ auf, die Giraffe das Merkmal „langer Hals“, der Luchs hat markante Ohren, der Raubvogel Milan einen gegabelten Schwanz.

Wenn wir uns visuell orientieren, halten wir also vor allem nach Merkmalen Ausschau, um ein Objekt einzuordnen. Sehen wir ein Tier mit „Schlappohren“, das an einer „Leine“ geführt wird … dann nehmen wir an, dass es sich um einen Hund handelt (und nicht um eine Katze). Und selbst in der modernen Malerei erkennen wir das Portrait eines Menschen, wenn es sich nicht um eine fotorealistische Darstellung handelt, wenn sich Merkmale wie „Ohr“, „Nase“ oder „Auge“ erkennen lassen. Die Bilderkennung mithilfe von Künstlichen Neuronalen Netzwerken basiert ebenfalls auf diesem Prinzip der Zuordnung von Merkmalen bzw. einer Summe von Merkmalen zu Bildobjekten/-subjekten.

Ausgangspunkt jeder Bildanalyse ist zunächst einmal eine Bilddatei, die aus einer Vielzahl von Pixeln besteht (bei einer Full-HD-Auflösung von 1920×1080 entspricht das genau einer Anzahl von 2.073.600 Pixeln). Jeder Pixel kann Werte zwischen 0 und 255 annehmen (bei einem Schwarz-Weiß-Bild entspricht der Pixel-Wert 0 einem weißen Pixel, der Pixel-Wert 255 einem schwarzen Pixel). Dies lässt sich wie folgt vereinfacht darstellen:

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 1Abbildung: Bildanalyse mit Convolutional Neural Networks. Die Grundlagen

Ein erster Schritt bei der Bildanalyse in Convolutional Neural Networks besteht darin, sogenannte Feature Detector über eine Bilddatei laufen zu lassen, um sogenannte Feature Maps zu erstellen. Feature heißt übersetzt Merkmal; man lässt eine Pixel-Muster-Schablone von links oben nach rechts oben über eine Bilddatei laufen und prüft, wo diese Bilddatei einem bestimmten Muster entspricht. Stark vereinfacht kann man sich vorstellen, dass man das typische Pixel-Muster eines Luchs-Ohres als Feature Detector nutzt, und nun prüft man, ob man ein solches Muster in der Bilddatei erkennen kann. Das ist sehr stark vereinfacht, kann aber als Eselsbrücke dienen. Denn es gilt, dass die Merkmale, die wir Menschen zur Identifikation eines „Hundes“ oder einer „Katze“ in einem Bild nutzen, nicht zwangsläufig diejenigen Merkmale sind, die ein Künstliches Neuronales Netzwerk nutzt, um einen „Hund“ zu erkennen. Tatsächlich lässt sich für ein Neuronales Netzwerk, das zuverlässig „Hunde“ auf Bildern erkennt, nicht bestimmen, welche Merkmale hierbei überhaupt herangezogen werden. Das Künstliche Neuronale Netzwerk nutzt zwar das gleiche Prinzip zur Objekt-/Subjekterkennung (nämlich; Merkmale), vermutlich aber nicht die gleichen Merkmale. Erkennt ein Neuronales Netzwerk eine Hundeschnauze? Vielleicht.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 2Abbildung: Bildanalyse mit Convolutional Neural Networks. Die Feature Map

Die Feature Map bildet hierbei nun folgende Information ab. Der Feature Detector durchläuft in vordefinierten Schritten (in sogenannten Strides) die gesamte Bilddatei; im dargestellten Beispiel hat der Feature Detector eine Dimension von 3X3 Pixel; In der Feature Map wird abgetragen, wie viele Übereinstimmungen bestehen.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 3Abbildung: Bildanalyse mit Convolutional Neural Networks. Die Feature Map

Hierbei (in unserem Beispiel) wird die Information aus 9 Pixeln (3X3) aus der originalen Bilddatei in nur einem Pixel der Feature Map abgetragen. Wir haben eine Informationsverdichtung. Die Feature Detectoren haben in der Praxis teilweise viel größere Dimensionen, so dass eine Bilddatei mit 1920×1080 Pixeln (2.073.600 Pixeln) deutlich im Informationsgehalt reduziert wird; das ist auch zwingend erforderlich, denn diese Unmenge an Daten lässt sich sonst nicht effizient verarbeiten.

Tatsächlich werden Dutzende, wenn nicht Hunderte von Feature Maps auf Basis verschiedener Feature Detectoren erstellt. Diese Feature Maps bilden zusammen das Convolutional Layer, also die Convolutional Schicht in einem Künstlichen Neuronalen Netzwerk.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 4Abbildung: Bildanalyse mit Convolutional Neural Networks. Ein Convolutional Layer

Das Prinzip der Informationsverdichtung wird in einem weiteren Schritt nochmals angewandt, nämlich beim sogenannten Max Pooling. Auch hier wird jeweils ein Pixel-Raster (hier: 2×2) angewandt, diesmal auf eine Feature Map; von dieser Feature Map wird jeweils nur der höchste Wert (darum: Max Pooling) in der Pooled Feature Map abgetragen.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 5Abbildung: Bildanalyse mit Convolutional Neural Networks. Die Pooled Feature Map

Und schließlich wird diese zweidimensionale Pooled Feature Map in einen eindimensionalen Vektor umgewandelt; denn jeder dieser Werte (1, 1, 0, 4, 2, 1 , …) ist der Input für ein künstliches Neuron im Input Layer eines Künstlichen Neuronalen Netzwerkes, das auf Basis dieser Bildinformationen lernt, wann eine Bilddatei einen Hund zeigt und wann eine Katze.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 6Abbildung: Bildanalyse mit Convolutional Neural Networks. Das Flattening der Pooled Feature Map

In der nachfolgenden Abbildung entsprechen die gelben Neuronen dem Input Layer. Die künstlichen Neuronen in den Tiefenschichten (hier: grüne Neuronen) „lernen“ nun, bestimmte Merkmale zu identifizieren, die eine Indikation darauf geben, ob es sich um einen Hund oder eine Katze handelt. Die Output-Neuronen (ganz rechts) lernen zu verstehen, welche Kombinationen von Merkmalen einem Hund, welche Kombination von Merkmalen auf eine Katze hindeutet.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 7Abbildung: Bildanalyse mit Convolutional Neural Networks. Neuronen erkennen Features für die Klassifizierung

Diese Output-Neuronen (Activation Function = Sigmoid Function) liefern schließlich Wahrscheinlichkeiten.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Einführung Schritt 8Abbildung: Bildanalyse mit Convolutional Neural Networks. Neuronen erkennen Features für die Klassifizierung

Der Aufbau eines solchen Convolutional Neural Networks erfolgt in Python in gewohnter Weise mithilfe diverser Bibliotheken (hier: Convolution2D, MaxPooling2D, Flatten, Dense); die Namen der Bibliotheken lassen erkennen, welche Funktion sie zum Aufbau des Netzwerks beisteuern.

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Umsetzung in Python – Schritt 1Abbildung: Bildanalyse mit Convolutional Neural Networks. Umsetzung in Python

Wenn man nun den Prozess des „Lernens“ startet, gewinnt man anhand des in dem Kurs umgesetzten Beispiels (mit 8.000 Bilddateien für das Training des Künstlichen Neuronalen Netzwerks) eine Vorstellung davon, wie berechnungsintensiv dieser Lernprozess ist. Jede Epoch (also: ein vollständiger Trainings-Durchlauf mit den 8.000 Bilddateien) dauert etwa 72 Sekunden:

Maschinenlernen. Deep Learning. Convolutional Neural Networks. Umsetzung in Python – Schritt 1Abbildung: Bildanalyse mit Convolutional Neural Networks. Der Trainingszyklus in Python

Wie man erkennen kann, lässt sich nach 25 Trainungsdurchläufen (Epoch) eine Genauigkeit (Accuracy = „acc“) von etwa 85% für die Trainingsdateien bzw. 75% für die Testdateien erreichen. Das ist bei nur 8.000 Bilddateien tatsächlich ziemlich gut (in der Praxis werden deutlich mehr Bilddateien für das Training im Image Processing eingesetzt).

Sebastian Zang
Author

Der Autor ist Manager in der Softwareindustrie mit internationaler Expertise: Prokurist bei einem der großen Beratungshäuser - Verantwortung für den Aufbau eines IT Entwicklungszentrums am Offshore-Standort Bangalore - Director M&A bei einem Softwarehaus in Berlin.