Technischer blog

Deep learning: Bilder duch neuronale Netze sortieren

Maschinelles Lernen ermöglicht die Identifizierung von Mustern in Daten auf Grundlage von Algorithmen, die durch kontinuierliches Lernen und Verbessern des Prozesses jeden Faktor nach seinem jeweiligen Einflussgrad klassifizieren.

„Künstliche Intelligenz ist die Kombination aus Algorithmen und Automatismen, die versuchen, menschliche Intelligenz nachzuahmen. Maschinelles Lernen ist einer davon, und tiefes Lernen wiederum ist eine der Techniken des maschinellen Lernens.

Einfach ausgedrückt: Das maschinelle Lernen speist Daten in Computer ein und verwendet statistische Techniken, um Ihnen zu helfen, zu „lernen“. So können sie eine Aufgabe schrittweise verbessern, ohne dafür speziell programmiert zu sein, wodurch die Notwendigkeit Millionen von Codezeilen zu schreiben entfällt.

Maschinelles Lernen kann in zwei Arten von Lernen unterteilt werden: beaufsichtigtes und unbeaufsichtigtes Lernen. Während Ersteres getaggte Datensätze verwendet, verwendet Letzteres ungetaggte Datensätze. Deep Learning ist ein Zweig des maschinellen Lernens, der Eingabedaten durch eine künstliche neuronale Netzarchitektur einführt, die von biologischen Netzen inspiriert ist. Dieses künstliche neuronale Netz enthält eine Reihe von verborgenen Schichten, die die Daten verarbeiten und so der Maschine erlauben, ihr Lernen zu „vertiefen“, indem sie Verbindungen herstellt und die Eingaben gewichtet, um immer bessere Ergebnisse zu erzielen

Die Grundstruktur eines Neuronalen Netzes

Neuronale Netze – die Werkzeuge, mit denen Deep Learning seine Magie entfaltet.

Ein neuronales Netzwerk ist nichts anderes als eine Handvoll miteinander verbundener Neuronen. Sie basieren auf einer einfachen Idee: Mit wenigen Parametern kann man sie kombinieren, um ein bestimmtes Ergebnis vorherzusagen. Aber was ist die richtige Kombination? Hier kommt der Begriff Training ins Spiel, der darin besteht, verschiedene halbzufällige Kombinationen von Parametern auszuprobieren, bis der Vorhersagefehler minimiert ist und somit bessere Vorhersagen erzielt werden.

Normalerweise wird das Netzwerktraining an 75-80% der Gesamtdaten, einem sogenannten Zugsatz, durchgeführt, während die restlichen 20-25% als Testsatz verwendet werden. Dieser Prozess verhindert, dass sich die Ausbildung des Netzwerks zu sehr auf einen einzigen Datensatz einstellt, die Validierung auf „neuen“ Daten für das Netzwerk durchführt und so die Generalisierungsfähigkeit des Modells bewertet.

Der Lernprozess eines neuronalen Netzes wird mit Hilfe von Lernkurven bewertet, die in der Regel die Entwicklung des Vorhersagefehlers über die Zeit zeigen. Auf diese Weise ist der Fehler umso geringer, je besser das Modell ist, so dass in der Lernkurve eine Minimierung des Fehlers zu erwarten ist.

Beim Training eines Maschinen- oder Tiefenlernmodells kann der Zustand des Modells in jedem Zwischenstadium bewertet werden. Bei der Evaluierung auf dem Zugsatz bekommen wir eine Vorstellung davon, wie gut unser Modell lernt, während wir bei der Evaluierung auf dem Testsatz eine Vorstellung davon bekommen, wie gut das Modell verallgemeinern kann.

Wir wissen, dass ein Modell gut angepasst ist, wenn die Zug- und Testfehlerkurven einen Punkt der Stabilität erreichen und ein geringer Abstand zwischen ihnen besteht.

Lernkurven in Abhängigkeit der Komplexität

Neuronale Netze sind sehr nützlich, um aus Eingabedaten eine Klassifikation oder Regression aus einem trainierten Modell zu erstellen. Dieselbe Idee kann auf ein Bild angewandt werden, um z.B. zu erkennen, was das Bild darstellt (Klassifizierung) oder um ein Objekt zu erkennen, das Teil des Bildes ist (Segmentierung, Erkennung, Identifizierung usw.). Dies geschieht mit Hilfe von Convolutional Neural Networks (CNN), zu deutsch auch gefaltete neuronale Netzwerke, die die Bilderkennung revolutioniert haben, da sie im Gegensatz zu herkömmlichen neuronalen Netzen und anderen Bildklassifizierungsalgorithmen relativ wenig Verarbeitung benötigen.

Das Netzwerk wird anhand von Bildern trainiert, wobei nur Pixel und Tags als Input verwendet werden. Sie lernen, indem sie Filter verwenden und diese auf die Bilder anwenden. Der Algorithmus nimmt ein kleines Quadrat (oder „Fenster“) und beginnt, es auf das Bild anzuwenden. Jeder Filter ermöglicht es CNN, bestimmte Muster im Bild zu identifizieren. Der CNN sucht nach Teilen des Bildes, bei denen ein Filter mit dem Bildinhalt übereinstimmt.

In diesem Fall nimmt der CNN als Eingabe Formtensoren, die die Höhe und Breite des Bildes in Pixeln und die Anzahl der Farbkanäle umfassen (1, wenn das Bild schwarz-weiß ist, oder 3, wenn es sich um RGB-Farbe handelt. Als Ausgabe würden wir die Klasse oder die Wahrscheinlichkeit erhalten, dass das Bild zu einer bestimmten Klasse gehört (Abb. 3)

Wie kann man ein CNN für die Bildklassifikation aufbauen und trainieren?

Keras ist eine Open-Source-Bibliothek für neuronale Netzwerke, die in Python geschrieben wurde. Neben der Unterstützung für neuronale Standardnetzwerke bietet es auch Unterstützung für Convolutional Neural Networks und Recurrent Neural Networks. Es enthält auch verschiedene Implementierungen der Bausteine des neuronalen Netzes: Faltungs- und Pooling-Schichten, Aktivierungsfunktionen, Optimierer usw.

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

KNIME stellt dem Kunden Python- und Keras-Erweiterungen zur Verfügung, die den Aufbau von Deep Learning-Architekturen und -Modellen auf einfache und intuitive Weise ermöglichen und auch die Dokumentation der verschiedenen verwendeten Knoten ermöglichen.