Zum Inhalt springen
Machine Learning

Deep Learning: Bildklassifizierung mit neuronalen Netzen

Machine Learning oder maschinelles Lernen

Machine Learning oder maschinelles Lernen ermöglicht die Identifizierung von Mustern in Daten auf der Grundlage von Algorithmen, die jeden Faktor nach seinem Einflussgrad klassifizieren und den Prozess kontinuierlich erlernen und verbessern.

In einem früheren Beitrag wurden bereits Begriffe wie Künstliche Intelligenz, Machine Learning oder Deep Learning eingeführt. Im Alltag begegnen uns diese Konzepte so häufig, dass es oft verwirrend ist, zwischen ihnen zu unterscheiden. Frank Chen bietet uns einen guten Überblick darüber, wie man sie differenzieren kann:

„Artificial intelligence is a set of algorithms and intelligence to try to mimic human intelligence. Machine learning is one of them, and deep learning is one of those machine learning techniques.“

Künstliche Intelligenz ist eine Gruppe von Algorithmen und Intelligenz, die versuchen, die menschliche Intelligenz zu simulieren. Machine Learning ist einer dieser Algorithmen, und Deep Learning ist eine der Techniken des Machine Learning.

Einfach erklärt speist Machine Learning oder maschinelles Lernen den Computer mit Daten und nutzt statistische Techniken, um ihm zu helfen, „zu lernen“, wie er sich bei einer Aufgabe progressiv verbessert, ohne spezifisch dafür programmiert zu sein, wodurch die Notwendigkeit von Millionen von Codezeilen entfällt.

Machine Learning kann in zwei Arten des Lernens unterteilt werden: überwachtes und unüberwachtes Lernen. Während das erstere Sätze von annotierten Daten verwendet, nutzt das zweite Sätze von nicht annotierten Daten.

Deep Learning oder tiefes Lernen ist ein Zweig des Machine Learning, der Eingangsdaten, Inputs, durch eine Architektur künstlicher neuronaler Netze leitet, die von biologischen Netzen inspiriert sind. Dieses künstliche neuronale Netz enthält eine Reihe von verborgenen Schichten (Hidden Layers), die die Daten verarbeiten und es der Maschine so ermöglichen, ihr Lernen zu „vertiefen“, indem sie Verbindungen herstellt und die Inputs gewichtet, um immer bessere Ergebnisse zu erzielen.

Abbildung 1. Grundstruktur eines neuronalen Netzes

Neuronale Netze: Die Werkzeuge, mit denen Deep Learning seine Magie entfaltet

Ein neuronales Netz ist nichts anderes als eine Handvoll miteinander verbundener Neuronen. Sie basieren auf einer einfachen Idee: Gegeben bestimmte Parameter gibt es eine Möglichkeit, diese zu kombinieren, um ein bestimmtes Ergebnis vorherzusagen. Aber welches ist die richtige Kombination? Hier kommt der Begriff des Trainings ins Spiel, das darin besteht, verschiedene halbzufällige Kombinationen der Parameter auszuprobieren, bis der Vorhersagefehler minimiert wird und so bessere Vorhersagen erzielt werden.

Normalerweise erfolgt das Training des Netzes auf 75-80 % der Gesamtdaten, dem sogenannten Train-Set, während die restlichen 20-25 % als Test-Set verwendet werden.

Dieser Prozess verhindert, dass sich das Training des Netzes auf einen einzigen Datensatz überanpasst (Overfitting), indem die Validierung an für das Netz „neuen“ Daten durchgeführt wird, um so die Generalisierungsfähigkeit des Modells zu bewerten.

Der Lernprozess eines neuronalen Netzes wird mittels Lernkurven (Learning curves) bewertet, die normalerweise die Entwicklung des Vorhersage-fehlers über die Zeit zeigen. Je besser das Modell ist, desto geringer ist der Fehler, weshalb in der Lernkurve eine Minimierung des Fehlers zu erwarten ist.

Beim Training eines Machine- oder Deep-Learning-Modells kann der Zustand des Modells in jeder Zwischenphase bewertet werden. Bei der Bewertung auf dem Train-Set erhalten wir eine Vorstellung davon, wie gut unser Modell lernt, während wir bei der Bewertung auf dem Test-Set eine Vorstellung davon bekommen, wie gut das Modell in der Lage ist zu generalisieren.

Wir wissen, dass ein Modell gut angepasst ist, wenn die Fehlerkurven von Train und Test einen Punkt der Stabilität erreichen und nur einen geringen Abstand zueinander aufweisen.

Abbildung 2. Lernkurven der Train- und Test-Sets in Abhängigkeit von der Modellkomplexität.

Und mit Bildern? Convolutional Neural Networks

Neuronale Netze sind sehr nützlich, um ausgehend von einem Eingabedatum eine Klassifizierung oder Regression auf Basis eines trainierten Modells durchzuführen. Dieselbe Idee kann auf ein Bild angewendet werden, um beispielsweise zu ermitteln, was das Bild darstellt (Klassifizierung) oder ein Objekt zu erkennen, das Teil davon ist (Segmentierung, Detektion, Identifizierung usw.). Dazu greift man auf Convolutional Neural Networks (CNN) zurück, die eine Revolution im Bereich der Bilderkennung ausgelöst haben, da sie im Gegensatz zu herkömmlichen neuronalen Netzen und anderen Bildklassifizierungsalgorithmen eine relativ geringe Vorverarbeitung erfordern.

Das Netz wird anhand von Bildern trainiert, wobei nur Pixel und Labels als Eingaben verwendet werden. Sie lernen durch den Einsatz von Filtern, die auf die Bilder angewendet werden. Der Algorithmus nimmt ein kleines Quadrat (oder „Fenster“) und beginnt, es über das Bild anzuwenden. Jeder Filter ermöglicht es dem CNN, bestimmte Muster im Bild zu identifizieren. Das CNN sucht nach Bildteilen, in denen ein Filter mit dem Bildinhalt übereinstimmt.

In diesem Fall nehmen CNNs Form-Tensoren als Eingabe auf, die Höhe und Breite des Bildes in Pixeln sowie die Anzahl der Farbkanäle enthalten (1, wenn das Bild schwarz-weiß ist, oder 3, wenn es in RGB-Farbe vorliegt). Als Ausgabe erhält man die Klasse oder die Wahrscheinlichkeit, dass das Bild zu einer bestimmten Klasse gehört (Abb. 3).

Abbildung 3. Struktur eines Convolutional Neural Networks zur Bildklassifizierung.

Wie kann ich ein CNN zur Bildklassifizierung aufbauen und trainieren?

Keras ist eine in Python geschriebene Open-Source-Bibliothek für neuronale Netze. Neben der Unterstützung für Standard-Netze bietet sie Unterstützung für Convolutional Neural Networks und für rekursive neuronale Netze. Zudem enthält sie verschiedene Implementierungen der Bausteine neuronaler Netze: Faltungsschichten (Convolutional Layers), Pooling-Schichten, Aktivierungsfunktionen, Optimierer usw.

Als Partner von KNIME setzen wir bei Baitech auf diese Software für Deep-Learning-Entwicklungen und das Training von neuronalen Netzmodellen zur Bildklassifizierung.

KNIME stellt dem Kunden Erweiterungen für Python und Keras zur Verfügung, die es ermöglichen, Deep-Learning-Architekturen und -Modelle auf einfache und intuitive Weise aufzubauen und zudem die verschiedenen verwendeten Knoten zu dokumentieren.

Menschliches Denken

Rationales Denken

Menschliches Handeln

Rationales Handeln

Schreibe einen Kommentar

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