Deep Learning

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
In diesem Artikel oder Abschnitt fehlen folgende wichtige Informationen: Wenn man sich den englischsprachigen Artikel anschaut ist in diesem Artikel noch gut was zu machen.
Du kannst Wikipedia helfen, indem du sie recherchierst und einfügst.

Deep Learning, auf Deutsch etwa tiefgehendes Lernen, bezeichnet eine Klasse von Optimierungsmethoden künstlicher neuronaler Netze, die zahlreiche Zwischenlagen (engl. hidden layers) zwischen Eingabeschicht und Ausgabeschicht haben und dadurch eine umfangreiche innere Struktur aufweisen. In Erweiterungen der Lernalgorithmen für Netzstrukturen mit sehr wenigen oder keinen Zwischenlagen, wie beim einlagigen Perzeptron, ermöglichen die Methoden des Deep Learnings auch bei zahlreichen Zwischenlagen einen stabilen Lernerfolg[1][2].

Einleitung[Bearbeiten | Quelltext bearbeiten]

Die linke Schicht in diesem Netzwerk ist die Eingangsschicht (input layer) mit in diesem Fall drei Eingangsneuronen. Die ganz rechte Schicht oder die Ausgabeschicht enthält die Ausgangsneuronen, in diesem Bild zwei. Die mittlere Schicht wird als verborgen bezeichnet (hidden layer), da ihre Neuronen weder Eingänge noch Ausgänge sind. Das dargestellte Netzwerk hat nur eine einzelne verborgene Schicht, aber viele Netzwerke haben deutlich mehr versteckte Ebenen. Die notwendige Anzahl von Ebenen, ab denen man von „Deep Learning“ spricht, ist nicht genau festgelegt.

Die in der Anfangszeit der künstlichen Intelligenz gelösten Probleme waren für den Menschen intellektuell schwierig, aber für Computer einfach zu verarbeiten. Diese Probleme ließen sich durch formale mathematische Regeln beschreiben. Die wahre Herausforderung an die künstliche Intelligenz bestand aber in der Lösung von Aufgaben, die für die Menschen leicht durchzuführen sind, aber deren Lösung nur schwer als mathematische Regeln zu formulieren sind. Dies sind Aufgaben, die wir Menschen intuitiv lösen, wie z.B. Spracherkennung oder Gesichtserkennung.[1]

Eine computerbasierte Lösung für diese Art von Aufgaben beinhaltet die Fähigkeit von Computern, aus der Erfahrung zu lernen und die Welt in Bezug auf eine Hierarchie von Konzepten zu verstehen. Hierbei ist jedes Konzept durch seine Beziehung zu einfacheren Konzepten definiert. Durch das Sammeln von Wissen aus der Erfahrung vermeidet dieser Ansatz die Notwendigkeit für die menschlichen Bediener, all das Wissen, das der Computer für seine Arbeit benötigt, formal spezifizieren zu müssen. Die Hierarchie der Konzepte erlaubt es dem Computer komplizierte Konzepte zu erlernen, indem er sie aus einfacheren zusammensetzt. Wenn wir ein Diagramm zeichnen, das zeigt, wie diese Konzepte übereinander aufgebaut werden, dann ist das Diagramm tief, mit vielen Schichten. Aus diesem Grund nennen wir diesen Ansatz in der künstlichen Intelligenz „Deep Learning“.[1][3]

Es ist schwierig für einen Computer die Bedeutung von rohen sensorischen Eingangsdaten zu verstehen, wie beispielsweise in der Handschrifterkennung, wo ein Text zunächst nur als eine Sammlung von Bildpunkten existiert. Die Überführung einer Menge von Bildpunkten in eine Kette von Ziffern und Buchstaben ist sehr kompliziert. Komplexe Muster müssen aus Rohdaten extrahiert werden. Das Lernen oder Auswerten dieser Zuordnung scheint unüberwindbar schwierig, wenn sie manuell programmiert werden würde.[1]

Eine der häufigsten Techniken in der Künstlichen Intelligenz ist Maschinelles Lernen. Maschinelles Lernen ist ein selbstadaptiver Algorithmus. Deep Learning, eine Teilmenge des Maschinellen Lernens, nutzt eine Reihe hierarchischer Schichten bzw. eine Hierarchie von Konzepten um den Prozess des Maschinellen Lernens durchzuführen. Die hierbei benutzten künstlichen neuronalen Netze sind wie das menschliche Gehirn gebaut, wobei die Neuronen wie ein Netz miteinander verbunden sind. Die erste Schicht des neuronalen Netzes, der sichtbare „input Layer“, verarbeitet eine Rohdateneingabe, wie z.B. die einzelnen Pixel eines Bildes. Die Dateneingabe enthält Variablen, die wir beobachten können, daher „sichtbare Schicht“.[1]

Diese erste Schicht leitet ihre Ausgaben an die nächste Schicht weiter. Diese zweite Schicht verarbeitet die Informationen der vorherigen Schicht und gibt das Ergebnis ebenfalls weiter. Die nächste Schicht nimmt die Informationen der zweiten Schicht entgegen und verarbeitet sie weiter. Diese Schichten werden als versteckte Ebenen (hidden layers) bezeichnet. Die in ihnen enthaltenen Merkmale werden zunehmend abstrakt. Ihre Werte sind nicht in den Ursprungsdaten angegeben. Stattdessen muss das Modell bestimmen, welche Konzepte für die Erklärung der Beziehungen in den beobachteten Daten nützlich sind. Dies geht über alle Ebenen des künstlichen neuronalen Netzes so weiter. Das Ergebnis wird im sichtbaren "output layer", der letzten Schicht, ausgegeben. Hierdurch wird die gewünschte komplizierte Datenverarbeitung in eine Reihe von verschachtelten einfachen Zuordnungen unterteilt, die jeweils durch eine andere Schicht des Modells beschrieben werden.[1][2][3][4]

Nach Jürgen Schmidhuber ist "Deep Learning" nur ein neuer Begriff für künstliche neuronale Netze.[5]

Entwicklung und Verwendung[Bearbeiten | Quelltext bearbeiten]

Die jüngsten Erfolge der KI, wie der Go-Turniergewinn des Programmes AlphaGo gegen die weltbesten menschlichen Spieler, gründen sich neben der gestiegenen Verarbeitungsgeschwindigkeit der Hardware auf den Einsatz von Deep Learning zum Training des in AlphaGo verwendeten Neuronalen Netzes.[6]

Programmbibliotheken[Bearbeiten | Quelltext bearbeiten]

Neben der meist in Schulungsbeispielen zum Verständnis der internen Struktur vorgestellten Möglichkeit, ein neuronales Netz komplett eigenhändig zu programmieren, existieren eine Reihe von Software-Bibliotheken, häufig Open Source, lauffähig auf meist mehreren Betriebssystemplattformen, die in Programmiersprachen wie z.B. C, C++, Java oder Python geschrieben sind. Einige dieser Programmbibliotheken unterstützen GPUs zur Rechenbeschleunigung oder stellen Tutorials zur Benutzung dieser Bibliotheken bereit.

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. a b c d e f Ian Goodfellow and Yoshua Bengio and Aaron Courville: Deep Learning. MIT Press, abgerufen am 19. Februar 2017 (englisch).
  2. a b David Kriesel: A Brief Introduction to Neural Networks. Abgerufen am 19. Februar 2017 (deutsch).
  3. a b Michael Nielsen: Neural Networks and Deep Learning. Determination Press, abgerufen am 21. Februar 2017 (englisch).
  4. Li Deng und Dong Yu: Deep Learning: Methods and Applications. In: Microsoft Research (Hrsg.): Foundations and Trends in Signal Processing Volume 7 Issues 3-4. 1. Mai 2014, ISSN 1932-8346 (englisch, microsoft.com [abgerufen am 22. Februar 2017]).
  5. Vortrag Jürgen Schmidhuber (ab 0:11:30) auf YouTube
  6. Demis Hassabis: AlphaGo: using machine learning to master the ancient game of Go. In: Google. 27. Januar 2016 (englisch, blog.google [abgerufen am 19. Februar 2017]).
  7. Caffe | Deep Learning Framework. Abgerufen am 17. Februar 2017 (englisch).
  8. Torch | Scientific computing for LuaJIT. Abgerufen am 17. Februar 2017 (englisch).
  9. heise Developer: Maschinelles Lernen: Facebook veröffentlicht Open-Source-Framework für Torch. Abgerufen am 17. Februar 2017 (deutsch).
  10. The Microsoft Cognitive Toolkit – Microsoft Research. In: Microsoft Research. (englisch, microsoft.com [abgerufen am 17. Februar 2017]).
  11. PaddlePaddle ---- PArallel Distributed Deep LEarning. Abgerufen am 17. Februar 2017 (englisch).
  12. heise Developer: Baidu gibt Deep-Learning-System als Open Source frei. 2. September 2016, abgerufen am 17. Februar 2017 (deutsch).
  13. Theano. Abgerufen am 28. Februar 2017 (englisch).
  14. Keras Documentation. In: Keras: Deep Learning library for Theano and TensorFlow. Abgerufen am 6. März 2017 (englisch).
  15. Deep Learning for Java. Abgerufen am 28. Februar 2017 (englisch).