Zum Hauptinhalt springen

Deep Learning im Scheinwerferlicht

Der allgemeine Zeitgeist im Bereich künstlicher Intelligenz dreht sich seit geraumer Zeit um das Thema Deep Learning. Fast wöchentlich werden neue Anwendungsbereiche im Sturm erobert. So auch der nun bekannt gewordene Erfolg des Google-Programms AlphaGo, das in einem Wettkampf gegen einen europäischen Go-Profi alle der insgesamt fünf gespielten Durchgänge gewann. Die Kombination aus Deep-Learning-Methoden und dem Monte-Carlo-Suchalgorithmus war der Grundstein, um fast 20 Jahre nach der ersten gewonnenen Schachpartie gegen einen Profi diesen Meilenstein auch in Go zu erreichen. Aufgrund der sehr komplexen Entscheidungsmuster und der Bewertungen der Züge im Go-Spiel wurde es als letzte Bastion des Menschen gegenüber der künstlichen Intelligenz angesehen, und dieses Ziel galt damit unter vielen Experten noch für die nächsten 10 Jahre als nicht erreichbar. Mehr Informationen zu diesem sich selbst trainierenden Programm finden Sie im Blogeintrag von Google.

Deep Learning - Lernen von tiefen künstlichen neuronalen Netzen auf sehr großen
Datensätzen für die Bewertung von neuen Daten

Die mittlerweile schon alltäglichen Berührungspunkte mit Deep Learning umfassen beispielsweise die Gesichtserkennung von Bildern bei Facebook, die Spracherkennung und Verarbeitung von Siri, Google Now oder Cortana sowie die Videoverarbeitung von selbstfahrenden Autos. Ein sehr interaktives und Menschen verbindendes Einsatzfeld ist zum Beispiel auch die Echtzeitübersetzung von gesprochener Sprache durch den Skype Translator. In dem sehr heterogenen Anwendungsbereich der Mensch-zu-Mensch-Kommunikation werden maschinelle Spracherkennung und maschinelle Übersetzung mit Hilfe von Deep-Learning-Verfahren derart stark verbessert, dass die damit erreichte Reduktion der Fehler und gleichzeitig auch die Erhöhung der Robustheit erst den Einsatz ermöglichen.

Deep Learning - Schlussfolgern, welche Informationen nicht explizit in den Daten
beschrieben sind

Die Lernphasen der Skype-Translator-Modelle verwendeten bis zu 3 Milliarden sehr komplexe und unterschiedliche Datensätze wie übersetzte Webseiten, benannte Videos und bereits übersetzte Einzelgespräche. Modelle bilden die frei gefundenen Beziehungen ab und können sich mit neuen Daten immer weiter entwickeln. Diese Datenmengen und die daraus resultierenden Modelle können nur noch mit verteilter und GPU-basierter Infrastruktur verarbeitet werden. Die sehr zeitaufwendigen Lernphasen für die verbundenen Schichten im tiefen Netzwerk konnten durch die Parallelisierung der Verfahren auf beliebig viele GPUs von mehreren Tagen auf einige Stunden reduziert werden. Dies ermöglicht die erforderliche Interaktivität bei der Testbarkeit der Modelle. 

Eine sehr anschauliche und einfache Einführung zu Deep Learning - Überblick, Anwendung, Verfahren, Modelle und Tools - ist im YouTube Channel von DeepLearning.TV zu finden.

Deep Learning - welcher Werkzeugkasten ist griffbereit?

Als Grundlage des Skype Translators sowie des Sprachassistenten von Windows 10 dient das vor wenigen Tagen ins Open-Source-Lager überführte Computational Network Toolkit (CNTK) von Microsoft, das verteilte GPU-Berechnungen über mehrere Einheiten ermöglicht und damit momentan ein Alleinstellungsmerkmal zu den anderen bekannten Deep-Learning-Bibliotheken wie CaffeTorch (Facebook), TheanoDL4J oder TensorFlow (Google) bietet. Gleichzeitig integriert sich CNTK in das Azure-Ökosystem und wird den GPU-Instanzen eine größere Aufmerksamkeit zukommen lassen, wenn die Skalierung des Modells in der Lernphase relevant ist. Somit tritt CNTK in direkte Konkurrenz mit TensorFlow, wenn es um die Verknüpfung von Standard-Tools und den sich daran anschließenden produktiven Einsatz im Cloud-Ökosystem geht. 

Das CNTK wird momentan von Microsofts internem Benchmark als schnellstes Deep-Learning-Tool für die bereitgestellten Methoden dargestellt. Eine ausführliche Einführung lässt sich im NIPS Tutorial vom Dezember 2015 nachlesen. Die bereits integrierte NVIDIA-CUDA-Deep-Neural-Network-Bibliothek (cuDNN) in Version 4 und das optimierte 1-Bit-Stochastic-Gradient-Descent-Verfahren (Frank Seide et al.), das jedoch eine Microsoft-Lizenz hat, sind hier die Hauptfaktoren. Die meisten Open-Source-Tools verwenden momentan noch die ältere und langsamere cuDNN-Version 3 (d. h. Torch) oder sogar Version 2 (TensorFlow). Torch und TensorFlow haben zum jetzigen Zeitpunkt die cuDNN-Version 4 in der Entwicklung und sollten in diesem Punkt zeitnah zum CNTK aufschließen. Facebook AI Research (FAIR) hat durch die Veröffentlichung einiger interner Pakete Ende Januar 2016 die Lücke im Bereich Geschwindigkeit weiter geschlossen und bietet jetzt weitere Parallelisierungsoptionen für Modelle und Daten sowie das 1-Bit-Stochastic-Gradient-Verfahren an (zum Nachlesen in diesem Blogeintrag). Gleichzeitig wird durch iTorch, als Schnittstelle von Torch und iPython, der einfache Einstieg in das Tool erleichtert. Die spannendste Frage wird allerdings sein, wie schnell und vor allem wann Google die Verteilung über mehrere GPU-Einheiten in TensorFlow überführt. Diversen Blogkommentaren ist zu entnehmen, dass dies für Mitte 2016 geplant ist, wodurch dem stärksten Ökosystem in Sachen Dokumentation, Tutorial und Open-Source-Support ein weiterer Auftrieb gegeben wird. 

Auch ein spannender Aspekt des CNTK-Benchmarks ist die gewählte Mini-Batch-Größe der zu lernenden Daten. Die Anzahl der verwendeten Datenpunkte für das SGD-Verfahren wurde auf 8.192 gesetzt. Diese Größe ist für die meist wenigen Merkmale in der Sprachverarbeitung realistisch, jedoch wäre ein Test für kleinere Datengrößen wie 512 oder 128 hier sehr informativ. Im SGD-Verfahren wird der Gradient über die Mini-Batch-Größe gemittelt. Somit beeinflusst die Größe, wie verrauscht der Gradient ist und welcher Pfad bei der Minimierung im Netzwerk verfolgt wird. Dies wirkt sich wiederum auf die Geschwindigkeit, die Genauigkeiten und Problemstellungen (d. h. Overfitting) der Lernphasen aus. 

Deep Learning - Open-Source-Evaluierung

Eine sehr übersichtliche Evaluierung nach Modellen, Schnittstellen, Bereitstellung, Architektur sowie Ökosystem der gängigen Open-Source-Tools im Deep-Learning-Umfeld helfen bei der Wahl des Tools. Die Vorstellung einiger Tools auf dem YouTube Channel von DeepLearning.TV unterstützt hier nochmal enorm das Verständnis.

Spannend für den Bereich Data Science bleibt auch die Adaption und die einfache Verbindung zu Apache Spark. Wie der Beitrag von Databricks zeigt, ermöglicht die Kombination aus TensorFlow und Spark, dass moderate Modellgrößen sehr einfach und schnell gelernt und evaluiert werden können.

Sollte einer der folgenden Anwendungsbereiche von Interesse sein, lohnt es sich, weiter in den Themenbereich Deep Learning einzutauchen und unsere folgende, praxisorientierte Deep-Learning-Reihe in den nächsten Blogbeiträgen zu lesen:

Text

  • Sentiment Analysis - CRM oder Social Media
  • Fraud Detection - Finanzen oder Versicherungen
  • Threat Detection - Social Media oder Verwaltung

Sound

  • Voice Recognition - Automotive oder Internet of Things
  • Voice Search - Telekommunikation und Telefonhersteller
  • Sentiment Analysis - CRM 

Bilder

  • Image Search - Social Media
  • Machine Vision - Automotive oder Luftfahrt
  • Photo Clustering - Telefonhersteller

Video

  • Motion Detection - Gaming oder UI/UX
  • Real Time Threat Detection - Sicherheit

Zeitreihen

  • Enterprise Resource Planning - Produktion oder Zulieferkette
  • Predictive Analysis - Internet of Thinks oder Smart Home
  • Recommendation Engine - Elektronischer Handel oder Medien