Maschinelles Lernen – für dich und mich

Machine Learning made by Amazon: Deep-Learning-Modelle mit AWS AI trainieren

Cyrus Vahid

© Shutterstock / Jirsak

Amazon verwendet seit Jahrzehnten bereits prädiktive Modelle. Mit AWS-AI soll das maschinelle Lernen nun jedoch in die Hände eines jeden Entwicklers gelegt werden. In diesem Artikel erklärt Cyrus Vahid, KI-Spezialist bei AWS, einige grundlegende Deep-Learning-Modelle und geht darauf ein, inwiefern Amazon für jeden Use-Case Services besitzt.

Mit Machine Learning ist (kurz gesagt) Software gemeint, die Muster und Regeln durch Erfahrung (also Daten) erlernen bzw. verbessern kann, ohne dass diese Regeln zuvor explizit implementiert werden müssten. Anstatt Regeln zu implementieren, trainieren wir ein Modell („fitting“) bzgl. der vorliegenden Anforderungen. Sehen wir uns zur Verdeutlichung ein lineares Modell als Beispiel an. Wenn unsere Datenpunkte ähnlich der folgenden Verteilung verstreut sind, können wir das Modell anhand der grünen Linie in die Daten einpassen.

Bild 1: Lineare Regression

Bild 1: Lineare Regression

Eine 2-D-Linie kann durch die folgende Gleichung dargestellt werden:

  • f(x)=ax+b

x repräsentiert hier die Eingabedaten. Die Konfiguration des Modells („fitting“) bedeutet das Finden der optimalen Parameter a und b, sodass die Gleichung f zur optimalen Darstellung prognostizierter Datenpunkte wird. Auf diese Art und Weise kann das Modell über direkte Erfahrungswerte hinaus verallgemeinern.

Amazon baut derartige Vorhersagemodelle bereits seit Mitte der 1990er Jahre. Seitdem ist Machine Learning zur Code-Komponente von Amazon und damit auch von AWS geworden. Das Ziel des AWI-AI-Teams ist es, „maschinelles Lernen in die Hände jedes Entwicklers und Datenwissenschaftlers zu legen“.

Um dieses Ziel zu erreichen, decken die AWS-Services eine Vielzahl an Use Cases ab, darunter Computer Vision, maschinelle Sprachverarbeitung (Natural Language Processing), vortrainierte Algorithmen („pre-trained“) für die gängigsten Anwendungsfälle, ML-Tools und –Frameworks sowie GPU und FPGA.

Deep Learning

Komplexe Aufgaben wie Computer Vision erfordern oftmals die Lösung von Differentialgleichungen in hochdimensionalen Räumen. Derartige Gleichungen sind nicht direkt zu lösen, sondern werden mittels Funktionsapproximation angegangen, woraufhin eine Funktion gefunden werden kann, die die gleichen Ergebnisse innerhalb einer akzeptablen Fehlerschwelle (ϵ) liefert. Etwas formaler: Wenn f unsere hochdimensionale Funktion bezeichnet, benötigen wir eine Funktion F, sodass:

  • |F(x)-f(x)|< ϵ

Tiefe Neuronale Netze sind bewährte universelle Funktionsapproximatoren und daher in der Lage, hochdimensionale Gleichungen durch Approximation zu lösen, solange bestimmte Bedingungen erfüllt werden.

Wie in vielen wissenschaftlichen oder technischen Bereichen kann ein entwicklungsbiologischer Blick dabei helfen, komplexe Probleme zu lösen. Ein Blick auf das menschliche Gehirn war daher der nächste natürliche Schritt. Unser Gehirn kodiert Informationen in einem verteilten Neuronennetzwerk, das durch ein Netzwerk an Verbindungen (Synopsen) verbunden ist. Sobald ein Stimulus eine Erinnerung hervorruft, werden alle dazugehörigen Komponenten eines bestimmten Gedächtnisses zusammengerufen und die Information wird rekonstruiert. Die Verbindungen zwischen den Neuronen haben dabei unterschiedliche Stärken, wodurch gesteuert wird, wie relevant die einzelnen Informationen für diese Erinnerung jeweils sind.

Neuronale Netze ahmen diesen Prozess auf abstrakte Weise nach, indem sie Daten in einer Gleitkomma-Vektordarstellung kodieren und die daraus resultierenden Knoten miteinander verbinden. Jeder dieser Verbindungen wird dabei eine Gewichtung zugewiesen, sodass die Relevanz jedes Knotens für die Aktivierung festgelegt ist.

Ein tiefes neuronales Netzwerk hat eine Eingangsschicht („input layer“), eine Ausgangsschicht („output layer“) sowie eine oder mehrere „versteckte“ Schichten, die als vermittelnde Berechnungsknoten dienen. Der Wert jedes Knotens wird durch das Multiplizieren der Inputs an dem Knoten mit der dazugehörigen Gewichtung bzw. durch die Berechnung eines gewichteten Durchschnitts aller Knoten-Inputs berechnet.

Bild 2: Der Multilayer-Perceptron-Wert des versteckten Knotens h11 lässt sich wie folgt berechnen: h11=Φ (I1 × w11 + I2 × w21 + ⋯ + In × wn1), wobei Φ eine nichtlineare Funktion ist, die als Aktivierungsfunktion bezeichnet wird. Wenn die Eingabe in einen Knoten X={x1, x2, ...., xn} und der zugehörige Gewichtsvektor W = {w1, w2, ...., wn } ist; dann gilt: f(xi, wi ) = Φ (b + ∑i (wi, xi))).

Bild 2: Der Multilayer-Perceptron-Wert des versteckten Knotens h11 lässt sich wie folgt berechnen: h11=Φ (I1 × w11 + I2 × w21 + ⋯ + In × wn1), wobei Φ eine nichtlineare Funktion ist, die als Aktivierungsfunktion bezeichnet wird. Wenn die Eingabe in einen Knoten X={x1, x2, …., xn} und der zugehörige Gewichtsvektor W = {w1, w2, …., wn } ist; dann gilt: f(xi, wi ) = Φ (b + ∑i (wi, xi))).

Der Lernprozess beinhaltet

  1. die Berechnung von Ausgabewerten über die Vorwärtsdurchlaufschichten,
  2. das Vergleichen der tatsächlichen Ergebnisse mit den erwarteten Ergebnissen,
  3. die Berechnung wie sehr sich die Ausgabewerte von den erwarteten Werten unterscheiden und
  4. das Anpassen der Gewichtung im Rückwärtsdurchlauf durch die Verteilung von Blame auf Grundlage der in (3) berechneten Entfernung.

Deep Learning wurde durch die rasante Entwicklung von GPU-Prozessoren, die 1012 Gleitkommaoperationen pro Sekunde (TFLOPS) durchführen können, und einer explosionsartigen Zunahme an verfügbaren Daten zu einem wesentlichen Bestandteil des maschinellen Lernens. Diese Innovationen haben zur Entwicklung leistungsfähiger Algorithmen geführt, die komplexe Probleme, wie bspw. Übersetzungen, lösen können.

Auf der Softwareseite wird die Deep Learning zugrundeliegende Mathematik in Bibliotheken und Deep Learning Frameworks abstrahiert. Einige der beliebtesten Frameworks sind:

  • TensorFlow
  • Apache MXNet
  • PyTorch
  • Caffe

Deep Learning Frameworks wurden entwickelt, um Parallel Processing auf der GPU und Trainingsberechnung für die zugrundeliegende Hardware zu optimieren. Mit diesen Frameworks können komplexe Bildklassifikationsprobleme auf wenige hundert Lines of Code reduziert werden, ohne dass hinter den Kulissen mathematische Kenntnisse erforderlich werden, während die Optimierung zu einem großen Teil dem Framework selbst überlassen wird. In Kurzform: Deep Learning Frameworks machen aus Forschungsproblemen Programmieraufgaben.

AWS stellt ein Deep Learning AMI zur Verfügung, das alle oben genannten Frameworks und mehr unterstützt. Es handelt sich dabei um ein Community AMI, das sowohl in einer Ubuntu- als auch in einer Amazon-Linux-Variante angeboten wird. Kunden wie ZocDoc nutzen das Deep Learning AMI, um das Vertrauen der Patienten in TensorFlow zu stärken.

Deep Learning Use Cases

Einige der am meisten erforschten Deep Learning-Bereiche sind:

Computer Vision

Bildklassifikation, Szenen- und Gesichtserkennung sowie viele weitere Anwendungsfälle für Videos und Standbilder fallen in diese Kategorie. Die Anwendung von Computer Vision in der medizinischen Bebilderung und Diagnose ist auf dem Vormarsch, während autonome Autos verstärkt von ComputerVision-Algorithmen Gebrauch machen. Es gibt mehrere Methoden für Entwickler, um durch die Anwendung von Computer Vision in den von ihnen entwickelten Produkten zu profitieren, ohne dass dabei von ihnen selbst Modelle implementiert werden müssten.

Für Bilder und Videos läuft die einfachste Methode über das Amazon Rekognition API. Sie bietet ein SDK und einen REST-Endpunkt für verschiedene Bildverarbeitungsaufgaben.

Bild 3: Beispiel für Bildbeschriftung mit Amazon Rekognition Java API

Bild 3: Beispiel für Bildbeschriftung mit Amazon Rekognition Java API

Sollte der API-basierende Dienst nicht ausreichen, stehen weitere Möglichkeiten zur Verfügung.

Die nächstbeste Alternative besteht in der Verwendung von Bildklassifizierungsalgorithmen aus den in Amazon Sagemaker enthaltenen Algorithmen. Mit diesen Algorithmen kann das Model durch die eigenen Datensets und Labels kontextspezifisch angepasst werden. Das Trainieren eines Modells würde unter Verwendung des Amazon SageMaker Python SDKs oder des SageMaker APIs nur wenige Code-Zeilen in Anspruch nehmen.

Bild 4: Bildklassifikation mit Amazon SageMaker

Bild 4: Bildklassifikation mit Amazon SageMaker

Sollte diese Lösung nicht ausreichen, gibt es immer die Möglichkeit, eigene Algorithmen zu entwickeln bzw. Model Zoo zu nutzen. Grundsätzlich bietet Amazon SageMaker eine vollständig verwaltete, vorkonfigurierte End-to-End-ML-Umgebung, mit der man seinen eigenen ML-Code entwickeln, das jeweilige Modell trainieren und das Ergebnis auf einer flexiblen Umgebung (auf Basis des Amazon Elastic Container Service) veröffentlichen kann. Das Trainieren bzw. Hosten eines Modells in Amazon SageMaker benötigt nur eine einzige Zeile Code pro Task via Python SDK und ein paar mehr Zeilen, falls man sich für das SageMaker API entscheiden sollten. Eigene Modelle können dabei stets aus der vorhandenen Code-Basis neu entwickelt und für spezifische Probleme umorientiert werden.

Durch die Verwendung von MXNet und Gluon Model Zoo besteht Zugriff auf eine Vielzahl an vortrainierten Modellen. Dadurch lassen sich Modelle aus Model Zoo importieren, mit den eigenen Daten „fertig trainieren“ und dann zur Inferenzrechnung verwenden. In Model Zoo stehen mehrere verschiedene Modelle zur Verfügung.

Bild 5: mxnet.gluon.model_zoo.vision.squeeznet in der Bearbeitung einer Computer-Vision-Aufgabe

Bild 5: mxnet.gluon.model_zoo.vision.squeeznet in der Bearbeitung einer Computer-Vision-Aufgabe

Falls man sich allerdings noch tiefgründiger mit der Thematik befassen will, kann man das Modell auch komplett von Hand selbst trainieren. Das nachfolgende Beispiel zeigt den Aufbau eines einfachen Netzwerks zur Erkennung handgeschriebener Zahlen via MXNet und Gluon.

Bild 6: Gluon-Beispielcode für MNIST

Bild 6: Gluon-Beispielcode für MNIST

Sollte man sich gegen MXNet und TensorFlow entscheiden, besteht eine letzte Alternative noch darin, gänzlich eigenen Code zu entwickeln. Derart entstandene Modelle können fernab von MXNet, TensorFlow und Co. produziert und dennoch auf Amazon SageMaker gehostet werden.

Weitere bemerkenswerte Use Cases für Machine Learning sind:

Maschinelle Sprachverarbeitung

AWS bietet Übersetzungen, Chat Bots, Text-to-Speech und Voice-to-Text-(ASR) als APIs an, während die in Amazon SageMaker eingebauten Algorithmen Themenmodellierung, Worteinbettung und Übersetzungsalgorithmen zur Verfügung stellen.

Empfehlungen

Die in Amazon SageMaker integrierten Algorithmen beinhalten eine hochmoderne, verteilte Faktorisierungsmaschine, die Modelle über mehrere GPU-Instanzen hinweg trainieren kann.

Prognosen

Die in Amazon SageMaker integrierten Algorithmen beinhalten zudem einen hochmodernen Prognosealgorithmus namens DeepAR. Mit diesem Algorithmus lassen sich Zeitreihenvorhersagen in eigenen Datensätzen durchführen.

Für einen Überblick über die weiteren in SageMaker integrierten Algorithmen empfehle ich einen Blick in die Dokumentation.

Python Summit 2018
Oz Tiram

Advanced Flow Control in Python

mit Oz Tiram (derico – web development & consulting))

ML-bezogene AWS-Dienstleistungen

Vision

Per Amazon Rekognition Video lassen sich Menschen orten und Aktivitäten, Objekte, Gesichter, etc. in Videos erkennen. Das zugrundeliegende API basiert auf Computer-Vision-Modellen, die darauf trainiert sind, Tausende an Objekten und Aktivitäten genau zu erkennen und bewegungsbasierte Zusammenhänge sowohl aus Live-Streams als auch aus in Amazon S3 gespeicherten Videoinhalten zu extrahieren. Auf diese Art und Weise lassen sich bestimmte Abschnitte in Videos automatisch mit Labels und Orten taggen (z.B. Strand, Sonne, Kind), Aktivitäten erkennen (z.B. Laufen, Springen, Schwimmen), Gesichter erkennen und analysieren sowie mehrere Personen tracken, selbst wenn sie teilweise verborgen sind.

Bei AWS DeepLens handelt es sich um eine lernfähige, vollständig programmierbare Videokamera. Hier lassen sich anspruchsvolle, Deep-Learning-Computer-Vision-Modelle in Echtzeit ausführen. AWS DeepLens kommt mit Beispielprojekten, Beispielcode und vortrainierten Modellen, sodass Entwickler ohne Machine-Learning-Erfahrung bereits ohne lange Einlesezeit durchstarten können.

Amazon SageMaker erleichtert den Bau und das Training von Modellen durch vorgefertigte Entwicklungshilfen, gängige, für Petabyte-Datensätze optimierte, maschinelle Lernalgorithmen und automatisches Modell-Tuning. Es vereinfacht und beschleunigt das Modelltraining indem es die Infrastruktur für beide Zugmodelle zur Verfügung stellt und verwaltet, während zugleich Vorhersagen aufgrund von Inferenzen getroffen werden.

Maschinelle Sprachverarbeitung

Amazon Translate nutzt neuronale Techniken für maschinelle Übersetzungen, um hochpräzise Übersetzungen von Texten einer Sprache in eine andere zu ermöglichen. Derzeit werden Übersetzungen zwischen Englisch und sechs weiteren Sprachen (Arabisch, Französisch, Deutsch, Portugiesisch, vereinfachtes Chinesisch und Spanisch) unterstützt, während weitere noch in diesem Jahr folgen sollen.

Amazon Transcribe wandelt Sprache in Text um und ermöglicht es Entwicklern auf diese Art, Audio in präzisen, vollständig interpunktierten Text umzuwandeln. Derzeit werden Englisch und Spanisch unterstützt – weitere Sprachen sollen folgen. In den kommenden Monaten wird es möglich, mehrere Sprecher in einer Audiodatei zu erkennen. Zusätzlich bekommen Entwickler die Möglichkeit, eigene Vokabeln für eine genauere Transkription hochzuladen.

Bei Amazon Lex handelt es sich um einen Dienst zum Einbetten von Konversationsschnittstellen in Sprach-/Text-Anwendungen. Geboten werden erweiterte Funktionen automatischer Spracherkennung (ASR) zur Umwandlung von Sprache in Text sowie für das natürliche Sprachverständnis (NLU). Auf diese Art und Weise soll die Absicht des Textes erkannt werden, sodass Anwendungen mit ansprechenden Benutzererfahrungen und lebensechten Konversationsinteraktionen leicht erstellt werden können. Mit Amazon Lex können natürlichsprachliche Konversations-Bots („Chatbots“) leicht konstruiert werden.

Amazon Polly verwandelt Text in lebensechte Sprache, sodass man daraus Anwendungen mit Sprachfunktion erstellen kann. Das bedeutet auch, dass völlig neue Kategorien an sprachfähigen Produkten entstehen können. Dazu werden fortschrittliche Technologien verwendet, um menschliche Stimmen nachzuahmen.

Mit einer Vielzahl an Stimmen in verschiedenen Sprachen können Entwickler die ideale Stimme für ihre Anwendungen und für einzelne Länder auswählen.

Amazon Comprehend kann natürlichsprachliche Texte aus Dokumenten, sozialen Netzwerken, Artikeln oder aus anderen Textdaten verstehen. Der Dienst verwendet Deep-Learning-Techniken, um Textentitäten (z.B. Personen, Orte, Daten, Organisationen), die verwendete Sprache, die Stimmung sowie Schlüsselwörter mit Begriffen und Adjektiven wie „schön“, „warm“ oder „sonnig“ zu identifizieren. Amazon Comprehend wurde auf einer breiten Datenbasis trainiert (einschließlich Produktbeschreibungen und Kundenbewertungen von Amazon.com), sodass Sprachmodelle mit den wichtigsten Erkenntnissen aus Texten erstellt werden können. Darüber hinaus verfügt Amazon Comprehend über eine Funktion zur Themenmodellierung, womit allgemeinere Themen aus einem großen Themenkorpus extrahiert werden können.

Weitere Informationen

Geschrieben von
Cyrus Vahid
Cyrus Vahid
Cyrus ist KI-Spezialist und arbeitet als Principal Solution Architect im AWS Deep Learning Team. Zu seinen aktuellen Aufgaben gehören die Verarbeitung von natürlicher Sprache sowie [Deep] Reinforcement Learning. Cyrus nutzt zur Entwicklung von ANNs hauptsächlich Apache MXNet. Er arbeitet seit über 20 Jahren im Softwarebereich – in einer bunten Kombination zwischen Start-ups und innovativen Unternehmen. Seit 7 Jahren beschäftigt er sich nun mit Big Data und Machine-Learning-Lösungen.
Kommentare

Hinterlasse einen Kommentar

1 Kommentar auf "Machine Learning made by Amazon: Deep-Learning-Modelle mit AWS AI trainieren"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Übersetzer
Gast

Guter und informativer Beitrag. Vielen Dank!