ai-academy

Convolutional Neural Networks - Hinter den Kulissen.

Spezialkurs zu Convolutional Neural Networks und Residual Nets - Deep Learning Architekturen für die Bildverarbeitung (Computer Vision).

Was sind CNNs - Convolutional Neural Networks? Die Erfolge, die künstliche Intelligenz in den vergangenen Jahren im Bereich Computer Vision (Verarbeitung von Bilddaten) gezeigt hat, beruhen allesamt auf einer Modell Architektur, die Convolution Layer zur Komprimierung der Information aus Bildern einsetzt.

Was lerne ich in diesem Kurs?

In diesem Spezialkurs zu künstlicher Intelligenz analysieren wir gemeinsam, wie Convolutional Layer aufgebaut sind und nehmen die Theorie dahinter strukturiert unter die Lupe.

Wir implementieren Convolutional Filter Layer und sehen, welche Auswirkungen Strides und Paddings in einer Convolution haben. Natürlich analysieren wir auch hier den Trainingsprozess und interpretieren, was unser Convolutional Neural Net während des Trainings lernt und wie wir den Trainingsprozess optimieren können.

Dazu fügen wir Batch-Normalization-Layer und Average-Pooling-Layer in unser Modell ein und gehen einen Schritt weiter zu Residual Blocks. Wir programmieren sowohl Batch-Normalization und Average Pooling Layer, wie auch Residual Blocks zuerst mit reinem Python Code und vergleichen dann unsere Implementierung mit jener aus dem fastai deep learning Framework. Anhand unserer Implementierung erleben wir auch die Auswirkung von Skip-Connections auf unser Modell.

Themeninhalte des Kurses im Detail:

  • Aufbau von Convolutional Neural Networks in der Theorie und Praxis
  • Die Convolution: Wir programmieren einen Convolutional Pooling Layer (Conv2d)
  • Berechnung von Paddings und Strides bei Convolutions
  • Die mathematischen Gleichungen hinter Convolutions
  • Wie ist der CNN-Learner aus dem fastai Framework aufgebaut?
  • Welche Theorien und Funktionalitäten sind in der 1cycleTraining Methode vom fastai Framework enthalten?
  • Warum hilft das Konzept der Batch Normalization einem Convolutional Neural Network, das Training zu beschleunigen?
  • __Was ist eine Residual Network Architektur (ResNet) und wofür kann ich diese einsetzen?
  • Wir implementieren unser eigenes Resdiual Net Model sowohl mithilfe von PyTorch wie auch mit reinem Python Code.
  • Skip Connections ist ein Konzept, das Residual Networks optimieren kann. Wir analysieren, was Skip Connections darstellen und wie wir diese in unserem Modell implementieren können.

Für wen ist dieser Kurs interessant?

Dieser Kurs richtet sich an all jene, die einen kompakten Einblick in die Funktionsweise künstlicher Intelligenz mithilfe von deep learning im Bereich Computer Vision erlangen möchten.

Wie in allen unseren Kursen versuchen wir das theoretische Wissen auch gleich anhand von praktischen Beispielen umzusetzen und gehen gemeinsam im Kurs konkrete Umsetzungsbeispiele für Computer Vision durch.

Welche Vorkenntnisse sollte ich für diesen Kurs mitbringen?

Wie bei allen unseren Spezialkursen solltest du auch für diesen Kurs bereits Know-How in der Programmiersprache Python und grundsätzliches Wissen um die Themen künstliche Intelligenz und Programmierung von deep learning Algorithmen mitbringen.

Einen guten Einstieg in die Programmierung für künstliche Intelligenz bietet der dritte Teil unserer Basis-Kursreihe “welcome2ki”: “Deep Learning Projekt selbst umsetzen”

Wie kann ich mich für den Kurs einschreiben?

Dieser Kurs wird über die online Trainingsplattform Udemy angeboten. Du kannst dich auch direkt hier zu diesem Kurs einschreiben!

Wie lange habe ich Zeit, den Kurs zu absolvieren?

Der Kurs ist für dich lebenslang zugänglich. Du kannst den Kurs in deinem individuellen Tempo absolvieren und auch nach erfolgreichem Abschluß jederzeit wieder auf die Unterlagen und Videos zugreifen.

Hintergrundinformation zu den Kursthemen

Warum sind die Inhalte des Kurses Convolutional Neural Networks (CNN) hinter den Kulissen für dich relevant? Wir versuchen hier etwas Hintergrundinformationen zu den Inhalten dieses KI-Online Kurses zu geben.

Convolutional Neural Nets

Was sind Convolutional Neural Networks (CNNs) eigentlich? Auch Convolutional Neural Networks stellen ein Untergebiet von deep learning dar. Sie bestehen, wie alle neuronalen Netze aus einer Aneinanderreihung von Knoten und Layer - einem Inputlayer, mehreren versteckten (hidden) Layern und einem Output Layer. Jeder Knoten ist mit den anderen Elementen des neuronalen Netzes verbunden. Convolutional Neural Networks werden hauptsächlich für Klassifizierungsprobleme im Bereich Computer Vision eingesetzt.

Vor der Einführung von ConvNets mussten die Features für die Bilderkennung zumeist manuell mit hohem Aufwand extrahiert werden. Die ConvNet Architektur ist in der Lage, diese Feature aus den Trainingsdaten selbst zu erlernen. Im Wesentlichen erreichen dasselbe durch den Einsatz von linearer Algebra und Matrixmultiplikation, um solche Muster (Feature) in den Trainingsbilddaten erkennen zu können. Daher ist die Berechnung von Convolutional Neural Network Architekturen (ConvNets) auch verhältnismäßig ressourcenintensiv und verlangt sinnvoller Weise nach dem Einsatz einer GPU bzw. TPU für das Training des deep learning Modells.

Wie arbeiten ConvNets?

Die wesentlichen Elemente von Convolutional Neural Networks, die diese Modellarchitektur von anderen neuronalen Netzen unterscheiden sind: Convolutions, Pooling Layer und Fully-Connected (FC) Layer.

Die ersten Layer eines ConvNets stellen immer die Convolution Layer dar. Convolution Layer können von weiteren Convolutions gefolgt sein, bis der lineare Layer den Abschluss bildet. Jeder zusätzlich Convolution Layer erhöht die Komplexität des ConvNets und kann somit auch komplexere Feature Strukturen aus den Bilddaten extrahieren. Wir interpretieren in diesem online Kurs natürlich auch den Lernprozess eines ConvNets über die verschiedenen Trainingsstufen hinweg.

Convolutional Layer

Der Convolution Block ist das Kernelement eines jeden CNNs. In diesen Layern passiert auch die größte Rechenleistung des Modells. Für die Erstellung einer Convolution braucht es verschiedene Elemente wie Eingangsdaten, einen Filter und eine Feature Map. Gehen wir von einem farbigen Bild als Eingangsdaten aus, welches in einer Pixel-Matrix mit drei Dimensionen repräsentiert wird. Weiters haben wir einen Feature Detector (Kernel bzw. Filter), der das receptive field über diese Matrix bewegt und auf diese Weise die Features extrahiert.

Bildquelle: (https://www.ibm.com/cloud/learn/convolutional-neural-networks)

In obiger Abbildung eines ConvNet Modells sehen wird die einzelnen Elemente wie Eingangspixelmatrix, Filter und das Output-Array.

Die Anzahl an Filter beeinflusst die Tiefe des Outputs unseres Convolutional Neural Networks. Beispielsweise ergeben drei eindeutige Filter eine Output-Map mit drei Features und somit eine Ausgabetiefe von ebenfalls drei.

Der Wert für Stride ist die Distanz bzw. die Anzahl an Pixel, welche der Kernel in einem Schritt weitergeht, während er über die Pixelmatrix wandert. Überlicherweise wird der Wert für Stride in einem ConvNet auf eins bis zwei gesetzt. Werte darüber sind selten. Je höher der Wert für Stride, umso geringer der Output.

Wenn die Filter nicht in das Eingabebild passen, wird typischerweise zero-padding verwendet. Damit werden alle Elemente, die außerhalb der Eingangspixelmatrix gesetzt sind, auf null gesetzt, wodurch eine gleich große oder größere Ausgangsmatrix in der Convolution erzeugt wird.

Alternative Werte für Padding in einem Convolutional Neural Net sind: Valid Padding (=kein Padding), Same Padding (Ausgabe-Layer hat die gleiche Größe wie der Input-Layer) und Full Padding (erhöht die Größe des Outputs durch Hinzufügen von Nullen entlang der Grenzen der Input-Matrix).

Nach jedem Convolution Layer folgt eine nicht-lineare Funktion - meist ReLU (Rectified Linear Unit).

Danach kann wieder ein Convolution-Layer folgen und so eine hierarchische Struktur in unserem Modell aufbauen.

Danach folgt der Pooling Layer

Pooling Layer

Pooling Layer - manchmal auf als downsampling bezeichnet - führt eine Reduktion der Dimensionen in dem ConvNet durch. Der Pooling Layer führt - ähnlich wie die Convolution - einen Filter über den gesamten Input. Im Unterschied zum Convolution Layer hat der Filter eines Pooling Layer keine Gewichtmatrix, sonder führt eine Aggregation der Pixel durch. Es werden zwei Typen von Pooling Layer unterschieden:

  • Max Pooling: Der Max-Pooling Layer wählt jenen Pixel aus dem rectified field mit dem höchsten Wert und schickt diesen Wert zum Ausgabe-Array weiter.

  • Average Pooling: Der Average Pooling Layer berechnet den Mittelwert aus den Pixeln im rectified field und sendet diesen Wert an das Ausgabe Array weiter.

Obowhl eine Vielzahl an Information durch den Einsatz des Pooling Layers verloren geht, trägt der Pooling Layer dennoch deutlich zum Erfolg eines ConvNet im Bereich der künstlichen Intelligenz bei. Durch die Reduktion von Komplexität im Modell wird die Effizienz gesteigert und die Gefahr von Overfitting reduziert.

In diesem online Kurs zu künstlicher Intelligenz gehen wir auf die Besonderheiten und die Funktionsweise des Pooling Layer innerhalb eines ConvNet Modells ein.

Fully Connected Layer

Die Bezeichnung Fully Connected Layer sagt schon das Wesentliche über dessen Funktionsweise aus. Wie wir bereits vorher angemerkt haben, sind die Werte der Einganspixel-Matrix nicht direkt mit jenen der Ausgangsmatrix in teilweise verbundenden Layern verknüpft.

Dem Fully Connected Layer kommt im ConvNet die Aufgabe der Klassifizierung für Features, die in den vorhergehenden Layern extrahiert wurden, zu. Während in Convolutional und Pooling Layer typischerweise ReLU (Rectified LinearUnit) als nicht-linear Aktivierungsfunktion verwendet wird, setzen man im Fully Connected Layer eine Softmax-Funktion zur Aktivierung ein, die einen Wahrscheinlichkeitswert zwischen 0 und 1 generiert.

Residual Network - ResNet

Nachdem das erste CNN die ImageNet Competition im Jahr 2012 gewonnen hat (damals AlexNet), verwendete auch jeder Gewinner in den Folgejahren eine ähnliche deep learning Architektur, mit immer mehr Layern. Diese Strategie funktionierte jedoch nur bis zu einer gewissen Grenze an Layern aufgrund eines inherenten Problems: vanishing bzw. exploding gradients. Auch auf das Problem der vanishing bzw. exploding gradients gehen wir in diesem online kurs zu künstlicher Intelligenz genauer ein.

Der Residual Block geht auf die Forschungsabteilung von Microsoft zurück und wurde im Jahr 2015 veröffentlicht. Die deep learning Architektur des Residual Blocks führte ein weiteres Konzept mit der Bezeichnung Skip Connections ein. Diese Skip Connection überspringt einige Layer und verbindet die Eingangswerte direkt mit dem Output des Blocks.

Der Vorteil von diesem Typ von Skip Connection ergibt sich aus einer Effizienzsteigerung in großen (tiefen) convolutional neural networks. Einen ähnlichen Ansatz verfolgt eine verwandte Modell-Architektur im Bereich künstlicher Intelligenz und deep learning: Highway Networks. Diese Highway Networks verwenden ebenfalls Skip Connection und verwenden, genauso wie LSTM (Long Short Term Memory) parametrisierte Gates, die den Durchlass von Information an bestimmten Stellen innerhalb des Modells regeln. Obwohl das Highway Network deutlich komplexer aufgebaut ist, als ein ResNet zeigte es in der Praxis keine besseren Ergebnisse.