Convolutional Neural Networks – am Beispiel der Revolution der Computervision

Convolutional Neural Networks helfen dabei, eine der anspruchsvollsten Aufgaben zu lösen: das maschinelle Sehen. Wie genau, wird hier erklärt...

Lernen Sie, wie Convolutional Neural Networks Maschinen dabei hilft, gesehene Informationen zu verstehen. Im Grunde genommen ahmen Maschinen dabei Prozesse des menschlichen Gehirns nach. Wir führen Sie durch die Entwicklungsstadien dieser Algorithmen und zeigen außerdem auf, wie Maschinen lernen, zu sehen.

Computervision, beziehungsweise maschinelles Sehen, war lange Zeit einer der anspruchsvollsten Entwicklungsbereiche von Künstlicher Intelligenz. In den letzten Jahren wurden hier jedoch große Fortschritte erzielt. Das Training von Maschinen, das ihnen die Fähigkeit zur Interpretation von Bildern vermitteln soll und darüber, was sie über Kamerasensoren „sehen“, ist kritisch für viele Anwendungsbereiche. Beispielsweise müssen autonome Systeme wie Autos oder andere Transportmittel ihre Umgebung wahrnehmen und interpretieren können, um sicher und sinnvoll eingesetzt werden zu können. Dank der Entwicklung von Convolutional Neural Networks konnte in den letzten Jahren ein Durchbruch erzielt werden.

Was ist ein Convolutional Neural Network

Ein Convolutional Neural Network (CNN) ist eine spezielle Form eines neuronalen Netzes. Diese Netze werden durch künstliche Neuronen dargestellt und zum Beispiel im Bereich der künstlichen Intelligenz genutzt.
Bei künstlichen neuronalen Netzen handelt es sich um Techniken des maschinellen Lernens, welche durch die biologischen Prozesse im menschlichen Gehirn inspiriert sind. Die Neuronen sind dabei untereinander verbunden und mit verschiedenen Gewichten verknüpft. Ziel im Lernprozess eines neuronalen Netzes ist es, diese Gewichte so anzupassen, dass mit dem Modell möglichst genaue Vorhersagen getroffen werden können.
Das Convolutional Neural Network bezieht seinen Namen vom mathematischen Prinzip der Faltung (Convolution). Dieses mathematische Vorgehen ist dabei besonders für die Erkennung von Bild- und Audiodaten geeignet. Die durch die Faltung entstehende Reduzierung der Daten erhöht die Geschwindigkeit der Berechnungen. Dadurch kann der Lernprozess verkürzt werden. Die Leistungsfähigkeit nimmt hierdurch jedoch nicht ab.
Convolutionale neuronale Netze sind mehrschichtige, vorwärts gekoppelte Netzwerke. Mit entsprechend hintereinander geschalteten Layern sind sie in der Lage, eine Intuition zu entwickeln, die beispielsweise von der Detailerkennung (Linien) hin zur Erkennung vom Abstrakten führt (Kanten, Formen, Objekte). Mit jeder höheren Ebene erhöht sich das Abstraktionslevel.

Der Aufbau

Bei dem Aufbau eines CNN werden verschiedenste Lagergruppen hintereinander eingesetzt.

Convolutional Layer

Dieser Layer implementiert verschiedene Filter und integriert diese im neuronalen Netz. Dabei wird eine Faltungsmatrix (Kernel) über die Pixelwerte gelegt. Die Gewichte der Kernel sind jeweils unterschiedlich dimensioniert. Durch die Verrechnung mit den Eingabewerten können unterschiedliche Merkmale (Kanten und Features) extrahiert werden.

Pooling Layer

Dieser Layer dient dazu, die Daten besser verallgemeinern zu können.
Durch das Pooling Layer (Max Pooling) werden die stärksten Merkmale weitergeleitet.
Von den Dimensionen der Eingabedaten, bei Bildern beispielsweise die Anzahl der Pixel, ist abhängig, wie viele Pooling Layer angewandt werden könne

Flatten Layer

Der mehrdimensionale Layer aus den Convolutions wird in einen eindimensionalen Vektor überführt.

Drop Out Layer

Es kann vorkommen, dass sich neuronale Netzwerke zu stark auf einen oder mehrere Eingabeparameter beschränken. Aus diesem Grund kann Drop Out verwendet werden, sodass bestimmte Verbindungen der Eingangsdaten nicht mehr weitergegeben werden. So wird erreicht, dass sich das Netz nicht zu stark auf einen bestimmten Wert verlässt und unabhängig von einer bestimmten Verbindung einen geeigneten Zusammenhang findet.

Dense Layer

Der Dense Layer wird auch als Fully Connected Layer bezeichnet. Es handelt sich hier um eine Standartschicht, bei der alle Neuronen mit sämtlichen Inputs und Outputs verbunden sind. In dem letzten Dense Layer findet die endgültige Klassifizierung statt.

Algorithmen, Rechnergeschwindigkeit & Daten

Die drei in der Überschrift genannten Begriffe sind die drei Zutaten, die den Maschinen das Sehen beibringen. Bedeutsam für die enormen Fortschritte im Bereich des maschinellen Sehens war die Mission von Fei-fei Li – einer Informatik-Professorin an der Stanford Universität. Sie wollte Computern etwas beizubringen, das Kindern ab etwa 3 Jahren möglich ist. Maschinen sollten den Sinn dessen verstehen, was sie auf Bildern „sehen“ und diesen auch benennen können. Computervision stellte zu diesem Zeitpunkt ein fast unlösbares Problem im Bereich der Forschung zu Künstlicher Intelligenz dar. Li stellte dabei zunächst fest, dass drei Zutaten notwendig sind, um Computern das Sehen beibringen zu können:

  1. Die entsprechenden Algorithmen (Neural Networks)
  2. Eine ausreichende Rechnergeschwindigkeit
  3. Eine große Menge an Daten (vor allem Labled Data)

Wie sich herausstellte, waren überraschenderweise die Daten die größte Herausforderung. Neuronale Netze gibt es bereits seit den 50er Jahren.

Methoden wie Backpropagation existieren seit den 80er Jahren und Convolutional Neural Networks seit den Neunzigern. Auch die entsprechende Rechenleistung war Mitte der 2000er kein wirkliches Problem mehr – wenngleich hier eine besondere Entwicklung eine Rolle spielte.

Obwohl es aber bereits den Hype rund um Big Data gab, lagen Daten lange Zeit nicht in der Form vor, dass Maschinen wirklich aus ihnen lernen können.

Beschreibung: TED Talk von Fei-fei Li, in dem sie von den Herausforderungen bei der Entwicklung von Computervision erzählt.

Gelabelte Daten

Gelabelte Daten helfen Maschinen dabei, Sehen zu lernen. Damit Algorithmen, wie Convolutional Neural Networks, verstehen können, was auf Bildern zu sehen ist, benötigen sie Daten. Diese sind für den Lernvorgang notwendig, in dem sie lernen können, Strukturen und Unterschiede zu verstehen. Beispielsweise benötigen Algorithmen eine große Menge von Bildern. Um beispielsweise Hunde von Katzen auf Bildern voneinander unterscheiden zu können benötigen sie eine Vielzahl an Bildern, von denen sie wissen, dass darauf Katzen zu sehen sind.

Daneben brauchen sie Bilder, von denen sie wissen, dass darauf beispielsweise Hunde zu sehen sind. Diese sog. „gelabelten Datensets“ können sie nun miteinander vergleichen, um auf diese Weise die strukturellen Unterschiede zwischen Katzen und Hunden zu identifizieren. Das Ziel ist es, ein Netz zu trainieren, dass es selbständig Bildern erkennen kann und dabei den Unterschied zwischen Hund und Katze erkennt.

Amazons Mechanical Turk

Amazons Mechanical Turk stellt eine Methode dar, Daten zu labeln. Die Frage lautete also, wie man an gelabelte Daten kommt, mit denen Covolutional Neural Networks trainiert werden konnten. Eine Methode zum Labeln von Data Sets ist Amazons Service mit dem Namen „Mechanical Turk“.

Dieser Name geht auf eine Maschine, dem sogenannten „Schachtürken“ zurück – eine Maschine, von der behauptet wurde, sie könne jeden Menschen im Schach besiegen. Der Trick war allerdings, dass ein Zwerg im Inneren der Maschine saß und die Bewegungen mechanisch ausführte.

Beschreibung: Kupferstich eines „Schachtürken“ von Joseph Racknitz (1789) (Quelle: Wikipedia)

Diese Idee ist letztlich auch die Grundlage für Amazons „Mechanical Turk“. Aufgaben, wie das Lablen von Data Sets, wird tatsächlich nicht von Maschinen, sondern letztlich von sehr vielen Menschen ausgeführt. Oft handelt es sich beispielsweise um Menschen in Indien, die im großen Stil Daten mit Labels ausstatten – wie beispielsweise Bilddaten mit dem Label „Hund“ oder „Katze“. Auch Fei-fei Lis Arbeit basierte auf der Mithilfe von tausenden von Menschen, die Millionen von Bildern mit Labels versahen.

Shallow Networks

Auf Basis dieser gelabelten Daten konnte dann der nächste Schritt erfolgen. Das Ziel bestand darin, die besten Algorithmen für diese Aufgabe zu finden. Die ersten erfolgreichen Kandidaten waren sog. Shallow Networks – eine spezielle Form von Deep Networks.

Um das Jahr 2000 herum kam es zu einer weiteren Veränderung, die weitreichende Folgen im Rahmen der Entwicklung von Computervision hatte. Im Rahmen einer Competition von Nvidia wurde festgestellt, dass Deep Learning durch den Einsatz von CPUs und GPUs (Grafikchips) um einen Faktor von 100 bis 1000 verbessert werden konnte.

Diese besondere Entwicklung war maßgeblich an der Steigerung der Rechenleistung beteiligt. AlexNet war das erste erfolgreiche Modell, das genau dies versuchte. Der Erfolg war nichts Geringeres als ein Quantensprung: Zum ersten Mal war es möglich, Deep Models zu verwenden. Wenige Jahre später etablierte sich VGG zum besten Modell.

Trotz dieser ersten Erfolge lautete jedoch die Devise: „We need to go deeper“ – ein Zitat aus dem Film „Inception“ von Christopher Nolan, auf den tatsächlich auch der Name von Googles „InceptionNet“ von 2014 basierte.

2015 folgte auch Microsoft mit ResNet dieser Devise und seit diesem Zeitpunkt waren Maschinen in der Tat besser als Menschen bei der Lösung des, beispielsweise der Unterscheidung von Hunden und Katzen auf Bildern, des maschinellen Sehens.

Hinter dem Erfolg stehen: Convolutonal Neural Networks.

Bilder verstehen

Convolutional Neural Networks ermöglichen Maschinen, Bilder zu verstehen. Einfach ausgedrückt sind Convolution Neural Networks Algorithmen, die Maschinen dazu befähigen, das zu verstehen, was sie sehen. Ein Künstliches Neuronales Netzwerk (KNN) ahmt dabei vereinfacht gesagt das nach, was im menschlichen Gehirn zwischen den einzelnen Neuronen passiert. KNNs basieren auf einer Form von Neuronen, also Knotenpunkten, die miteinander verknüpft sind. Analog zu neuronalen Verbindungen sind KNNs in einer bestimmten Anzahl von „Schichten“, also „Layers“ strukturiert.

Beschreibung: Vereinfachte Darstellung eines Künstlichen Neuronalen Netzwerks mit 2 Layers. (Quelle: Wikipedia)

Der Unterschied zwischen KNNs und Convolution Neural Networks besteht darin, dass in Convolutional Neural Networks bestimmte Informationen in destillierter, „gefalteter“ Form verarbeitet werden. In dieser destillierten Form bekommt ein Bild, wie es für Menschen erscheint, eine neue Form, die für Maschinen verständlich ist. Mit anderen Worten ausgedrückt: es bekommt mehr Tiefe, bzw. mehr Schichten. Am Ende dieses Prozesses steht ein Ergebnis: ein Classifier, der es Maschinen ermöglicht, die Darstellungen auf Bildern zu erkennen.

Einsatz bei Schadenserkennung nach Naturkatastrophen

An einem einfachen Beispiel lässt sich die Praxisrelevanz von Convolutional Neural Networks demonstrieren. Nach Naturkatastrophen, wie etwa Hagelschäden, stehen Versicherer vor einer großen Herausforderung. Ihre Kunden benötigen so schnell wie möglich Hilfe, der Prozess aber, der notwendig ist, um Schäden festzustellen, ist langwierig.

Mithilfe von Computervision lässt sich dieses Problem elegant lösen. Anstelle von Sachverständigen, die in die betroffenen Regionen fahren müssten, um die Schäden zu begutachten, werden Bilder der Schäden ausgewertet.

Mithilfe von Convolutional Neural Networks ist es möglich Häuser mit beschädigten oder intakten Dächern zu unterscheiden. So kann innerhalb kurzer Zeit festgestellt werden, ob und wie stark eine bestimmte Region vom Hagelschaden betroffen ist. Eine Fülle von Fällen kann damit wesentlich schneller bearbeitet und nötige Hilfen schneller bereitgestellt werden. Dies ist nur eines von vielen möglichen Anwendungsbereichen, in denen Convolutional Neural Networks dabei helfen können, schnell und effektiv Lösungen bereitzustellen. Was zur Revolution der Bilderkennung führte, ist heute ein Standard bei Data-Science-Projekten.

Tags

top