Expertenwissen kompakt

DAS HANDBUCH

DER BILDVERARBEITUNG >

Neue Auflage 2019/2020

Mehr

Inspektion von Fahrzeugteilen >

Innovativen Lösungen, um Fehler

frühzeitig und zuverlässig zu erkennen

Mehr

BEREIT FÜR INDUSTRIE 4.0 >

Beleuchtungssteuerungen für die Bildverarbeitung | Teil 3

Mehr

Machine Learning and Deep Learning

In diesem Artikel wird der Leser mit Definitionen, Interpretationen und Implikationen des Begriffs 'Deep Learning' bekannt gemacht. Es ist nach wie vor ein brandaktuelles Thema, aber die Begriffe ändern sich ständig. Diese Artikel soll die Grundlage für die weitere Verständigung legen.

Es vermeidet bewußt mathematische Formeln und setzt lieber auf Grafiken

Was ist Machinelles Lernen?

Es gibt mehrere, voneinander abweichende Definitionen, aber die folgende trifft es ganz gut:

  • Algorithmus auf hoher Abstraktionsebene, der basierend auf umfangreichen Trainingsmengen eine Datenmodellierung ausführt.

Die Definition erfordert selbst nähere Erklärung:

  • Abstraktion setzt voraus, dass sich Eingangs- und Ausgangsgrößen signifikant unterscheiden. Ergebnisse können z.B. Bildklassifikation, Verhaltensvorhersage oder sogar Übersetzungen sein. Abstraktion bedeutet, dass es zwischen Eingangs- und Ausgangsgrößen keine einfache Beziehung gibt, sondern die Beziehung unbekannt ist, eine so genannte ‘Black Box’.

  • Modellierung bedeutet, dass ein Szenario erstellt wird, das eine realistische Klassifizierung oder ein realistisches Ergebnis ausgibt.

  • Wenn man von umfangreichen Trainingsmengen spricht, bedeutet das, dass die Eingangsdaten eine große Variabilität aufweisen. Normalerweise impliziert 'Deep Learning' oder 'Maschinelles Lernen', dass in dem Lernprozess die wichtigen Eigenschaften erkannt werden.

Was ist Deep Learning?

Viele Begriffe in diesem Dokument stammen aus der Literatur zu neuronalen Netzen und sind daher eine gute Basis für dieses White Paper. Ein neuronales Netz ist eine Art Software- oder Hardwaremodell des Gehirns, bei dem Entscheidungs- und Logikeinheiten (Neuronen, Perzeptronen) Eingangs- und Ausgangsgrößen sowie einfache Entscheidungen zu einem komplexen System (Gehirn, Netz) verknüpfen, das komplexe Entscheidungen trifft.

Ursprünglich wurden sie als künstliche neuronale Netze (KNN) bezeichnet, um sie von biologischen Systemen zu unterscheiden. Bei ihnen gibt es üblicherweise eine bestimmte Anzahl von Eingangs- und Ausgangsgrößen, eine enge Vernetzung zwischen Neuronen und mehrere Zwischenschichten. Ohne Zwischenschichten oder mit nur wenigen Zwischenschichten kann das System nur relativ simple Probleme bearbeiten. Die Anzahl der verdeckten Schichten (hidden layer) an Neuronen ist hier ein entscheidender Punkt, da Daten in diesen Zwischenneuronen verknüpft werden können und so komplexe Entscheidungen möglich werden. Das Netz bekommt also 'Tiefe', es können nicht-triviale Konzepte gelernt werden. Genau das bedeutet 'Deep'.

Im Beispiel oben gibt es drei Eingangsgrößen, eine Ausgangsgröße und zwei verdeckte Schichten. Die Neuronen sind 'stark vernetzt', ein wichtiges Merkmal neuronaler Netze. Dies erlaubt komplexe Beziehungen, Funktionen oder Entscheidungen. Ohne sie wären die Beziehungen zwischen Input- und Output relativ simpel. Intention ist nicht die Schaffung eines exakten Modells des Gehirns, sondern es sollen dessen Lernfähigkeit und die Fähigkeit zur Erkennung komplexer Zusammenhänge repliziert werden. Ein Mensch hat rund 100 Milliarden Neuronen mit einer Taktrate von etwa 1kHz, eine moderne CPU etwa 2 Milliarden Transistoren mit 3GHz.

Bevor ein neuronales Netz zur gewünschten Lösung kommen kann, muss eine Reihe von Voraussetzungen definiert werden. Ein Einfaches „fang mal an zu lernen und irgendwann gibt es ein Ergebnis“ reicht nicht aus. Im Beispiel des obigen Links ist die größte Schwierigkeit die Klassifizierung in einer Spirale, für die die Voraussetzungen extrem wichtig sind.

Was sind die Neuronen?

Was genau ein künstliches Neuron ist wurde bislang nicht spezifiziert. In einer CPU besteht eine Logik-Schaltung aus Transistoren – ein „fest verdrahtetes“ neuronales Netz wäre ebenfalls möglich, aber eigentlich soll es ja „lernfähig“ sein. Das heißt, die Antwort eines einzelnen Neurons auf bestimmte Eingangsgrößen muss sich ändern, wenn es lernt. Das bezeichnet man als „Gewichtung“ – ein Neuron bewertet (gewichtet) verschiedene Eingangsgrößen, um die gewünschte Ausgangsgröße zu erhalten. Das lässt sich per Software wesentlich leichter erreichen als per Hardware, daher sind Neuronen üblicherweise mathematische Funktionen, die Eingangs- und Ausgangsgrößen miteinander verknüpfen.

In der Lernphase ändern die Neuronen ihr Gewichtungsverhalten und nehmen eine Feineinstellung der Ausgangsgrößen in Abhängigkeit von den Eingangsgrößen vor. Es muss also ein Feedback des Gesamtergebnisses geben, das einzelne Neuronen beeinflusst. Man kann also sagen, dass Ein- und Ausgangsgrößen eines neuronalen Netzwerks bekannt sind, nicht aber die Werte der Neuronen, besonders in den verdeckten Schichten. Eine „Black Box“ also.

Ein untrainiertes neuronales Netz „weiß“ also nichts und erzeugt aus Sicht des Anwenders nur zufällige, chaotische Ergebnisse. Erst ein „trainiertes“ neuronales Netz liefert das gewünschte Ergebnis. Einfache Probleme können mit einem einfacheren Programm gelöst werden, das einfacher zu debuggen ist. Neuronale Netze werden üblicherweise für komplexe Probleme eingesetzt, da sie große Trainingsmengen benötigen. Einzelne Neuronen können komplexe Ausgangsgrößen liefern und linear oder nicht-linear auf Eingangsgrößen reagieren. Das ist ein sehr subtiler Punkt – die Neuronen müssen alle möglichen Situationen meistern können, um ein gutes Ergebnis zu liefern. Der Programmierer des neuronalen Netzes muss also entweder eine Ahnung von den internen Zusammenhängen haben oder das Netz so komplex konzipieren, dass es „alle“ Möglichkeiten abdeckt.

 
„Mit vier Parametern kann ich einen Elefanten anpassen und mit fünf kann ich ihn dazu bringen, mit seinem Rüssel zu wackeln“.
John von Neumann

Große Datenmengen

Neuronale Netze werden üblicherweise für Probleme genutzt, die gewisse Schwankungen aufweisen, wie z.B. die Reaktion eines Menschen auf ein reales Bild. Der Mensch identifiziert Objekte auf einem Bild aus seiner erlernten „Erfahrung“ heraus – einer Vielzahl von ähnlichen Daten mit entsprechendem Feedback, ob die Entscheidung korrekt war. Dasselbe passiert bei künstlichen neuronalen Netzen. Google hat Zugriff auf riesige Datenbestände an Bildern, Übersetzungen u.ä. und Zugang zu einer enormen Rechenleistung. Ende 2016 hat Google bekanntgegeben, dass für Google Translate maschinelles Lernen getestet wurde.

Google hat dabei festgestellt, dass neuronale Netze mit relativ kleinen Datenmengen ähnliche Übersetzungsresultate liefern wie die bis dahin genutzten Übersetzungen auf der Basis von Wörterbüchern und syntaktischen Regeln. Durch weitere Tests und unüberwachtes Lernen (unsupervised learning) konnten Übersetzungsfehler um 55-85% reduziert werden. Google hat sein internes SDK ‘TensorFlow’ auch als Open-Source-Software der Öffentlichkeit zugänglich gemacht.

Laut der KI-Gruppe von Facebook sind rund 1000 Objekte einer Kategorie nötig, um eine Automarke, eine Pflanzenart oder eine Hunderasse zu erkennen.

Es gibt einige Abkürzungen, z.B. das Erzeugen synthetischer Daten aus echten Trainingsdaten (durch Modifikation dieser Daten durch Skalieren oder Rotation), oder die Festlegung sinnvoller Ausgangspunkte (z.B. der Anzahl der Eigenschaften, auf die Neuronen achten sollen oder der Anzahl der verdeckten Schichten des Netzes).

Jenseits neuronaler Netze

Neuronale Netze sind nicht die einzigen Algorithmen für maschinelles Lernen, aber die verbreitetsten. Dieses Kapitel beschreibt einige andere Methoden. Das Kapitel bezieht sich zum Teil auf diese praktische Anleitung., Empfehlenswert für eine Einführung in maschinelles Lernen und eine Übersicht über erhältliche Freeware ist auch diese YouTube Playlist von Google-Entwicklern.

Überwachtes Lernen

Überwachtes Lernen nutzt beschriftete Bilder, aus denen der Algorithmus dann eine Funktion erzeugen soll, die das gewünschte Ergebnis liefert. Jedoch erlaubt es keine dieser Methoden zu sagen, welche Eingangsgrößen für die Programmierung des Algorithmus zu verwenden sind! Es wird also oft vor dem eigentlichen „Lernen“ ein iterativer Lern-Ansatz verfolgt, um erst einmal ein Gefühl für die „Brauchbarkeit“ der Ergebnisse zu bekommen.

Regression

In der einfachsten Ausprägung ist das eine Gerade durch eine Menge von Datenpunkten (lineare Regression). Sie zeigt die als linear angenommene Beziehung zwischen zwei Variablen, sodass man von einer Variable auf die andere schließen kann. Man erhält für die Regression auch Fehlerwerte, mit denen man ein Konfidenzintervall für die Ergebnisse angeben kann. Hieraus wird klar, dass man von der linearen auf eine multiple lineare oder polynomiale Regression erweitern kann. Anpassungen erfolgen in diesen Methoden üblicherweise mittels Kleinste-Quadrate-Approximation, um den Abstand der Kurve von den Datenpunkten zu minimieren.

Eine andere gängige Methode ist die logistische Regression. Hier werden die Daten an eine sigmoidale (S-förmige) Kurve angepasst und es wird eine Wahrscheinlichkeit (zwischen 0 und 1) ausgegeben. Als Wahrscheinlichkeit ist es ein Zwei-Klassen-Problem (zugehörig zu Klasse x oder nicht). Im Grunde ist es also eine statistische Beziehung der Kompaktheit einer Klasse im Merkmalsraum und ihre Nähe zu anderen Klassen.

Tikhonov-Regularisierung / Ridge-Regression

Im Gegensatz zu den oben genannten Regressionsmethoden ist diese Methode für Fälle gedacht, in denen es keine perfekten Informationen gibt – ein so genanntes schlecht gestelltes Problem. Im Gegensatz zu neuronalen Netzen sind auch nur wenige Trainingsdaten verfügbar. Das heißt, aus den Trainingsdaten ergibt sich keine oder keine zufriedenstellende Gerade oder Kurve, die die Daten ausreichend klassifiziert. Die Anwendung einer der o.g. Methoden auf das Problem würde zu Unteranpassung führen (schlechte Klassifizierung). Es ist also eine Verallgemeinerung erforderlich.

Bei dieser Methode wird der passende Algorithmus „regularisiert“ (modifiziert), sodass das gewünschte Ergebnis eine neue Qualität hat – eine simplere Berechnung oder glattere Ergebniskurve. Diese Regularisierung ist eine Tikhonov-Matrix (deren Inhalt vom gewünschten Ergebnis abhängt). Um die Tikhonov-Matrix zu finden (z.B. durch Lernen oder Programmieren des Algorithmus) sind einige Annahmen zu den Eingangsdaten erforderlich. Solche Annahmen können zum Beispiel sein, dass die Daten eine Normalverteilung (Gaußverteilung) aufweisen und genügend Abweichungen enthalten, um Mittlere Abweichung und Standardabweichung grob bestimmen zu können oder dass alle Variablen dieselbe Standardabweichung haben.

CVB Polimago nutzt diese Art Algorithmus. Damit kann Polimago als Suchwerkzeug für variable Objekte genutzt werden, oder als Klassifikator im Fall von Abweichungen in den Klassen – in beiden Fällen sind die Klassen nicht komplett definiert, es findet also eine gewisse Verallgemeinerung statt. Grenzfälle sind zum Einlernen des Algorithmus hilfreich, um die Klassen voneinander abzugrenzen.

Entscheidungsbaum

Ein Entscheidungsbaum ist einem neuronalen Netz ähnlich, nur sind hier die Entscheidungsknoten generell bekannt. CVB Minos ist ein Beispiel für einen Entscheidungsbaum, hier ist jeder Entscheidungsknoten eine binäre Entscheidung. Dadurch ist es ein sehr schneller Klassifikator. Bei jeder Entscheidung werden 50% der möglichen Ergebnisse ausgeschlossen (wenn der Klassifikator ein ausbalancierter Baum ist). Bei Minos sind damit sehr schnelles OCR und Suchen auf Basis eingelernter Merkmale möglich.

Support Vector Machine

In einfachen Fällen ist das ein Plot von Merkmalen (Variablen), deren Koordinaten „Stützvektoren“ genannt werden. Eine Support Vector Machine (SVM) trennt die Klassen, indem sie eine Linie mit maximalem Abstand zu jeder Klasse ermittelt. Die Art der SVM definiert den Linientyp – linear, polynomial, logarithmisch. CVB Manto ist ein Beispiel für eine SVM.

Die folgenden Grafiken zeigen, dass die Klassen mit verschiedenen Linien komplett voneinander getrennt werden können. Indem Grenzen für die erlaubten Lösungen festgelegt werden (z.B. Glattheit der Entscheidungsoberfläche), können die Charakteristika der Lösung ändern – z.B. Verallgemeinerung vs. Genauigkeit.

Naiver Bayes-Klassifikator

„Bayes“ verweist auf Wahrscheinlichkeit. In diesem Fall gibt es die Annahme, dass eine Klasse eine Anzahl unabhängiger Merkmale hat (Farbe, Form, Größe ...) und ein Wert für eine bestimmte Klasse mit einer gewissen Wahrscheinlichkeit von den Werten einer idealen Menge abhängig ist. Durch Kombination dieser Wahrscheinlichkeiten erhält man die Wahrscheinlichkeit, mit der ein gemessener Wert für Farbe, Form oder Größe zu einer bestimmten Klasse gehört. Ein einfaches Beispiel – ein weißes, rundes Objekt mit 250mm Durchmesser ergibt einen guten Treffer für die Klasse „Fußball“. Das ändern einer der Deskriptoren würde die Wahrscheinlichkeit reduzieren, dass das Objekt als Fußball erkannt wird.

K-Nächste Nachbarn

Dabei handelt es sich um ein Abstimmungssystem, bei dem die nächsten Nachbarn in einem Merkmalsraum (die „K“ nächsten Nachbarn) genutzt werden, um zu entscheiden, zu welcher Klasse ein Testmerkmal gehört. Die Festlegung von „K“ ist dabei nicht zuletzt aufgrund der in den meisten Fällen recht hohen Zahl an Dimensionen im Merkmalsraum überraschend kompliziert.

Unüberwachtes Lernen

In diesem Fall gibt es kein Vorwissen und keine beschrifteten Daten. Unüberwachtes Lernen wird häufig in Verbindung mit Deep Learning verwendet. Bei unüberwachtem Lernen wird versucht durch Zuhilfenahme weiterer (z. B. statistischer) Methoden eine Klassifikation der Daten ohne weitere Vorkenntnisse zu finden.

K-Mittelwerte

Im Gegensatz zur K-Nächste Nachbarn-Methode werden hier ‚automatisch‘ K Datencluster erzeugt, deren Daten homogen sind und deren Eigenschaften signifikant von den anderen Clustern abweichen. Das kann ein ganz simples, iteratives Schwerpunkt-Problem sein. Es ist aber komplett abhängig von den gemessenen Merkmalen – es kann sein, dass die resultierenden Cluster nichts mit der menschlichen Wahrnehmung zu tun haben.

Random Forest

Das ist eine Erweiterung des Entscheidungsbaums mit vielen Bäumen. Hier gibt die Anzahl der Bäume, die über ein Ergebnis abstimmen, die statistische Wahrscheinlichkeit an, mit der eine Eingangsgröße in Beziehung zu einer Ausgangsgröße steht. In komplexeren Wäldern können die internen Algorithmen alle oben genannten sein! So wird es eine Abstimmungsmethode basierend auf der Annahme, dass „die meisten Methoden die meiste Zeit richtig sind“. Im Gegensatz zu Entscheidungsbäumen sind Random Forests weniger anfällig für eine Überanpassung an Trainingsdaten.

Zusammenfassung

Überwachtes Lernen heißt, dass die Trainingsmenge bereits eine Wissensbasis enthält und eine Funktion erstellt werden soll, die die Beziehung zwischen Eingangs- und Ausgangsgrößen beschreibt. Auswahl und Kombination der Merkmale beeinflussen den Erfolg dieses Prozesses. Sie sind somit unerlässlich.

Unüberwachtes Lernen heißt, dass es kein vorhandenes Wissen gibt und alles Wissen im Trainingsprozess gewonnen wird. Das impliziert eine Clusterbildung von Datenpunkten im Merkmalsraum, was aber nur möglich ist, wenn Merkmale und potentielle Funktionen korrekt gewählt werden. Unüberwachtes Lernen kann also in zwei Fällen erfolgreich sein:

  1. eine sinnvolle Antwort wird bereits vorgegeben (was Vorwissen impliziert, wodurch es eine Art überwachtes Lernen wird) oder

  2. es gibt so viele Datensätze und Möglichkeiten, dass man mit statistischen Methoden arbeiten kann. Es sind eine Menge Erfahrung und viele Fehlversuche nötig, dahin zu kommen. Bei der Bildverarbeitung kann es bei einem Tool für unüberwachtes Lernen sinnvoll sein, alle Pixel unter einer Graustufe von 10 in einer Klasse zu gruppieren, wenn das Grundrauschen der Kamera in diesem Bereich liegt. Hierbei handelt es sich um eine rein logische Gruppierung.

Das größte Problem ist immer, mögliche Lösungen (Zuordnungen) zu bilden und die Komplexität (Anzahl verdeckter Schichten) festzulegen, damit Merkmale herausgefiltert und gruppiert werden können. Der Algorithmus allein ist noch keine Lösung.