Tag: CuDNN

Deep Learning – So gelingt der Einstieg!

Deep Learning ist in vielen Bereichen der KI-Forschung und der praktischen wirtschaftlichen Anwendungen von maschinellem Lernen  zum State-of-the-Art geworden – vor allem bei Aufgaben mit Bildern und Texten. Es klingt wie ein komplett neues und aufregendes Verfahren, entpuppt sich aber als ein Zusammensetzen von bereits vorhandenen Komponenten des Machine Learning. Je nachdem wie tief man in die Materie einsteigen will, muss man sich vorher mit Formen der Merkmalsextraktion sowie mit kĂŒnstlichen neuronalen Netzen beschĂ€ftigen. Deep Learning bedeutet nĂ€mlich im Grunde folgendes:

  • Ein mehrschichtiges kĂŒnstliches neuronales Netz (multi layer)
  • Jede Schicht (Layer) hat eine bestimmte Funktion & fĂŒhrt verschiedene Operationen aus
  • Man entwirft verschiedene Architekturen dieser Netze – verschiedene Verschaltungen von Layern





Diese Layer haben verschiedene Funktionen. Die meistbenutzten Konzepte werden nachfolgend dargestellt:

  • INPUT [32x32x3] Funktioniert im Grunde Ă€hnlich wie eine Retina. Die Matrix in diesem Layer besteht aus den RGB-Bildpunkten (3) und entspricht der GrĂ¶ĂŸe des Bildes in diesem Beispiel: 32×32 Pixel.

    Quelle: Wikipedia

    Quelle: Wikipedia

  • CONV (Convolutional Layer) Dieser Layer berechnet Features fĂŒr lokale Regionen im Input. Die meistgenutzte Funktion hier ist ein Skalarprodukt der Werte in den verschiedenen Regionen berechnet. Setzt man 12 verschiedene Filter ein, erhĂ€lt man 12 Ergebnismatrizen. Dieser Dieser Layer produziert also eine Matrix mit den Dimensionen: [32x32x12].
  • RELU (Rectified Linear Unit) In diesem Layer werden relativ simple Funktionen angewendet, Ă€hnlich wie max(x, 0). Werte werden hier nicht verĂ€ndert, dafĂŒr aber eventuell auf einen Threshold-Wert gesetzt. Wir erhalten also wieder eine Matrix mit den Dimensionen [32x32x12].
  • POOL (Pooling) wird genutzt, um ein Downsampling auszufĂŒhren. FĂŒr POOL gibt es verschiedene Operationen, eine davon ist Max-Pooling- Dabei wird aus einer n x n Matrix der grĂ¶ĂŸte Wert gewĂ€hlt. Beispielsweise mit dem Output [16x16x12]. Das entspricht einem Faktor von 0.5.
  • FC (fully connected) In diesem Layer sind alle Neuronen einer Schicht miteinander verbunden. Hier passiert auch der meiste Lernaufwand. FĂŒr den Fall, dass ein Netz zwischen 10 Klassen entscheiden muss, wĂ€ren die Dimensionen hier [1x1x10].

Eine Beispiel-Architektur wĂ€re eine serielle Verschaltung folgender Layer:  [INPUT – CONV – RELU – POOL – FC]. Hier werden zuerst verschiedene gefaltete Features aus dem Bild extrahiert. Danach wird ein bestimmtes Muster aus den extrahierten Features herausgeschnitten (entschieden nach Thresholds). Mit diesen Features wird nur ein Downsampling durchgefĂŒhrt. Nach dem Downsampling der gefilterten und gefalteten Features wird nun der Layer angesprochen, der aus den ReprĂ€sentationen die verschiedenen Klassen entscheidet. Im Vergleich zu einem Ein-Layer-Netzwerk (auch shallow genannt) wird hier viel mehr Aufwand betrieben, um Features zu extrahieren.

Mehr ĂŒber die Vergangenheit von Deep Learning und der Schönheit von lernenden Maschinen, erfĂ€hrt man in Ben Vigoras Talk mit dem Titel “When Machines Have Ideas”. Er redet darĂŒber, was lernen wirklich bedeutet und was das Interessante an lernenden Maschinen ist.

Hugo Larochelle redet in “The Deep End of Deep Learning” ĂŒber den langen Weg, den Deep Learning gehen musste, bis es zum Buzzword wurde. Sehr interessant ist dabei auch, dass es diverse AnsĂ€tze zum Thema Deep Learning schon viel eher gab.

Um die 2 vorherigen Videos abzurunden, sollte man sich diesen Talk von Andrej Karpathy ansehen. Er ist Teil des Labs der Stanford University und war maßgeblich an der Weiterentwicklung des initialen Begriffs Deep Learning beteiligt.

Nach diesen AusfĂŒhrungen zum Thema Deep Learning hat man eine Intuition fĂŒr das aktuell am meisten gehypte Thema der KI-Forschung bekommen. Falls ihr euch fragt, wie es nun weiter geht oder gar Lust habt, ein Projekt mit Deep Learning Frameworks umzusetzen, dann werdet ihr hier fĂŒndig: