Keylearnings:
- Was ist Machine Learning (maschinelles Lernen)?
- Was ist der Unterschied zwischen Supervised und Unsupervised learning.
- Was ist Lineare Regression?
- Was ist Deep Learning?
- Was ist die Intuition hinter einem neuronalem Netz.
Du bist doof wie ein Toaster sagten sie zu mir. Das war gemein und ich war schrecklich traurig.
Aber bald könnten sie recht haben, denn Maschinen können lernen und ein Toaster ist schließlich eine Maschine.
Die Wissenschaft, die Maschinen schlau macht heißt Machine Learning (maschinelles lernen) und ist das Thema, um welches es in diesem Artikel geht.
Aber genug Science Fiction!
Was ist Machine Learning?
Du kennst das klassische Programmieren sehr gut und dir ist das EVA (Eingabe, Verarbeitung, Ausgabe) Prinzip bekannt.
Üblicherweise hat ein Programm eine Eingabe, die durch das von uns geschriebene Programm verarbeitet wird und eine Ausgabe erzeugt.
Letztendlich ist ein Programm nichts anderes als ein Satz von Regeln, welche beschreiben wann was unter welchen Bedingungen zu tun ist.
Ziel des Machine Learning ist es diese Regeln den Computer selbständig finden zu lassen, ohne dass wir etwas programmieren müssen.
Und genau das ist, was sogenannte Machine Learning Algorithmen können. Sie werden nicht programmiert sondern trainiert.
Klingt strange? Absolut! Daher sollten wir uns ein gut bekanntes Beispiel ansehen. Nämlich ein Empfehlungssystem, wie du es aus einem E-Commerce Shop kennst.
Vielleicht hast du einen Hund und schon mal einen Futternapf oder eine Hundeleine online bestellt.
Ein Onlineshop beobachtet das Verhalten seiner Kunden sehr genau und weiß deshalb, dass der Käufer eines Futternapfs normalerweise gerne auch das leckere Hundefutter bestellt und ist daher so freundlich und bietet dieses Leckerli als Empfehlung ebenfalls gleich mit zum Kauf an.
Um das mit Hilfe klassischer Programmierung zu realisieren, würden wir mittels einer if
Bedingung eine Regel definieren. In Code ausgedrückt sähe das wie folgt aus:
if (gekauft = 'Fressnapf') { empfehle_Hundefutter(); }
Aufgabe eines Machine Learning Algorithmus ist es diesen Zusammenhang aufgrund von Trainingsdaten selbstständig zu erlernen.
Die Trainingsdaten müssen zunächst erzeugt werden und sind der Grund dafür, dass große E-Commerce und Social Media Plattformen häufiger als Datenkraken bezeichnet werden.
Auf großen Plattformen werden diese Daten erhoben indem das gesamte Nutzerverhalten aufgezeichnet wird.
Mit den gesammelten Daten wird dann ein sogenanntes Machine Learning Modell gefüttert.
Bei einem solchen Modell handelt es sich um Algorithmen, die auf mathematisch statistischen Methoden basieren. Daher besteht Machine Learning unter der Haube aus Mathe, Mathe, Mathe!
Anstatt ein von uns händisch geschriebenes Programm spricht nun das trainierte Machine Learning Modell die Kauf-Empfehlung aus.
Das gute und gruselige hierbei ist, dass der Machine Learning Algorithmus Zusammenhänge erkennt, die dem Menschen verborgen geblieben wären. So ist der Zusammenhang, dass ein Futternapf-Käufer auch an Hundefutter interessiert ist offensichtlich, aber dass sich der Käufer eines bestimmten Futternapf-Modells auch für Katzen interessiert eher nicht.
Supervised und Unsupervised Learning
Wir unterscheiden zwischen zwei Arten von Lernmethoden. Zum einen dem supervised und zum anderen dem unsupervised Learning.
Supervised Learning
Das supervised Learning können wir uns vorstellen wie ein Lernen durch Beispiele.
Hierbei teilen wir die Daten in Eingabe- und Ausgabedaten auf. Die Eingabedaten nennen wir auch Features.
Beispiel gefällig? Gerne!
Nehmen wir an, wir möchten die Schuhgröße aus der Körpergröße und des Gewichts von Personen vorhersagen.
In diesem Fall sind Größe und Gewicht unsere Eingangsvariablen und die Schuhgröße ist die einzige Ausgangsvariable.
Das ist ein einfaches Beispiel . In der echten Welt hat man es natürlich mit weit mehr Variablen zu tun und hier ist es dann die Aufgabe eines Daten Analysten zu überprüfen, von welchen Parametern die Ausgangsvariable abhängt.
Beim Training des Models wird mit statistischen Methoden nach einem Zusammenhang zwischen den Eingabedaten und den Ausgabedaten gesucht, mit dem wir später die Ausgabe bei, nicht in den Trainingsdaten vorhandenen Eingabedaten, vorhersagen können.
Das supervised Learning lässt sich weiter in die Arten Classification und Regression unterteilen.
Der Unterschied zwischen diesen beiden Sorten ist, dass wir bei der Regression kontinuierliche Werte und bei der Classification diskrete Werte betrachten. Beispiele für kontinuierliche Werte sind Temperatur Geschwindigkeit oder die Krümmung einer Banane. Wohingegen Werte wie Farbe, Obstsorte oder Automarke diskrete Werte sind.
Die Lineare Regression
In der Kategorie des supervised Learning ist das einfachste, und für lineare Zusammenhänge auch brauchbares, Model die Lineare Regression, die man sich anschaulich sehr gut klarmachen kann.
Vereinfachen wir unser Beispiel und nehmen an, dass zwischen Schuh- und der Körpergröße einer Person ein linearer Zusammenhang besteht.
Um ein Machine Learning Modell zu trainieren benötigen wir zunächst Trainingsdaten.
Im ersten Schritt führen wir daher eine Datenerhebung durch und Fragen einige Personen nach ihrer Schuh- und Körpergröße.
Die Schuhgröße ist unsere Eingangs- und die Körpergröße unsere Ausgangsvariable, die wir Vorhersagen möchten.
Der Veranschaulichung wegen tragen wir die Ergebnisse unserer Umfrage in einen Graphen ein, auf dem die Schuhgröße auf der x-Achse und die Körpergröße auf der y-Achse abgetragen wird.
Ziel der Linearen Regression ist es nun eine Gerade zu finden, die möglichst „nah“ entlang den im Graph eingezeichneten Punkten verläuft.
Was haben wir nun davon?
Anhand der Geraden können wir jetzt Körpergrößen für Schuhgrößen ablesen, für die wir keine Daten erhoben haben. Wollen wir beispielsweise eine Vorhersage für die Schuhgröße 36 treffen, so kann die Körpergröße leicht auf der y-Achse abgelesen werden.
Wir sehen, dass die Körpergröße einer Person mit Schuhgröße 36 ungefähr bei 1,55m liegt.
Classification
Neben der Regression gehört auch die Classification zur Sorte des supervised Learning.
Bei der Classification arbeiten wir mit diskreten Daten. Die Ausgabe eines Classification Modells nennen wir Label.
Ein berühmtes Anwendnungs-Beispiel der Classification ist die Erkennung von Spam-Mails.
Hier kann unser Machine Learning Modell genau zwei Ausgangswerte mit den Labeln Spam und Ham annehmen. Die Eingangsdaten sind die zu filternden Emails.
Bekannte Machine Learning Methoden dieser Kategorie ist die Naive Bayes Klassifikation und die Support Vector Machine.
Die Naive Bayes Klassifikation basiert auf bedingten Wahrscheinlichkeiten. Hierbei wird die Wahrscheinlichkeit bestimmt, dass eine Email, welche beispielsweise die Wörter Werbung und Lottogewinn enthält, eine Spam-Mail ist.
Liegt diese Wahrscheinlichkeit oberhalb eines festgelegten Schwellwerts, wird die Email als Spam andernfalls als Ham klassifiziert.
Die Funktionsweise der Support Vector Machine kann man sich zumindest im zwei und drei dimensionalen Raum gut Vorstellen indem wir die Datenpunkte in ein Koordinatensystem einzeichnen.
Ergebnis der Support Vector Machine ist eine Gerade (bei 2 Dimensionen), eine Ebene (bei 3 Dimensionen) oder eine sogenannte Hyperebene (bei mindestens 4 Dimensionen), welches die Kategorien voneinander trennt.
Im Beispiel des Spamfilters würden dann alle Spam Emails unterhalb und alle Ham Mails oberhalb dieser Hyperebene liegen (umgekehrt geht natürlich auch).
Bemerkung: Diese Skizze dient natürlich nur zur Veranschaulichung. Ein Datenpunkt der eine Email repräsentiert ist in einem zwei dimensionalem Raum nicht darstellbar. Die Dimension des Datenraums dieses Problems entspricht der Anzahl der in einer Sprache zur Verfügung stehenden Wörter.
Wenden wir uns der nächsten Kategorie von Machine Learning Algorithmen zu.
Unsupervised Learning
Beim unsupervised Learning nehmen wir keine Aufteilung in Eingabe und Ausgabedaten vor. In dieser Kategorie des Machine Learning geht es darum Muster in den Daten zu erkennen.
Ähnliche Muster werden zu einem sogenannten Cluster zusammengefasst. Ein Cluster ist also eine Gruppierung von Daten mit ähnlichen Merkmalen.
Eines der bekanntesten Clusterverfahren ist das K-Means Clustering.
Hierbei gibt das K an, in wie viele Gruppen unsere Daten zusammengefasst werden sollen.
Wichtig: Das K-Means Clustering ordnet den festgestellten Clustern keine Labels zu. Das ist der wichtige Unterschied zur Classification. Das Ergebnis dieses Modells sind nur K Gruppierungen. Die Bedeutung der einzelnen Cluster muss häufig manuell durch einen Analysten erfolgen.
Das K-Means Clustering kann beispielsweise verwendet werden um eine Kriminalitäts-Statistik und darauf basierend eine Polizeieinsatzplanung zu erstellen.
Die Datenbasis für eine solche Planung besteht aus Geografiedaten und die Häufigkeit des auftreten bestimmter Kriminalarten (Raub, Mord, Beleidigungen).
Als Ergebnis des K-Means Clustering erhalten wir dann eine Karte, aus der wir entnehmen können in welchen Regionen ähnliche Kriminalitätsarten vorkommen.
Eine Stadt, in der genau das gemacht wurde ist Neu Delhi (Artikel).
In der Anwendung wird häufig eine Mischung aus supervised und unsupervised Learning verwendet.
Ein Beispiel hierfür ist die Kategorisierung von Bildarchiven.
Wollen wir beispielsweise wissen wie viele Katzen ein Archiv enthält, müssen wir im ersten Schritt unserem Modell anhand von gelabelten Daten (Katzenbildern) beibringen wie eine Katze aussieht. Dies entspricht einem supervised Learning.
Anschließend verwenden wir eine unsupervised Methode um alle Bilder ohne Label in unserem Archiv zu Clustern. Die Katzenbilder sollten dann in die selbe Gruppierung wie die, im supervised learning Schritt, bereits als Katze gelabelten Bilder fallen.
Genau dieses Experiment hat google in sehr großer Skalierung durchgeführt und viele Millionen Einzelbilder aus youtube exportiert und von Machine Learning Algorithmen klassifizieren lassen und dabei festgestellt, dass es unheimlich viele Katzen im Internet gibt.
Das Verfahren, das im supervised Learning Schritt angewendet wurde heißt Deep Learning, welches mit Hilfe sogenannter neuronaler Netzwerke realisiert wird und durch das menschliche Gehirn inspiriert ist.
Klingt spannend? Absolut! Deshalb schauen wir uns das jetzt auch im Detail an.
Die Intuition des Deep Learnings
Verfahren des Deep Learnings wurden so erfolgreich verwendet, dass es zu einer eigenen Kategorie innerhalb des Machine Learnings geworden ist.
Beim Deep Learning werden Strukturen verwendet, die von der Funktionsweise des menschlichen Gehirns inspiriert sind. Nämlich den sogenannten neuronalen Netzwerken.
Ein weit verbreitetes Anwendungs-Beispiel hiervon ist die Erkennung von Handschriften. Zu gunsten der Übersichtlichkeit beschränken wir uns auf die handgeschriebene Ziffern 0-9.
Die Struktur Neuronaler Netze
Der Name ist hier Programm. Neuronale Netze bestehen aus miteinander verbundenen Neuronen. Neuronen sind die kleinsten Einheiten innerhalb neuronaler Netze.
Jedes neuronale Netz hat eine Eingabe- und eine Ausgabeschicht.
In unserem Beispiel ist die Eingabe das Bild einer handgeschriebenen Ziffer und die Ausgabe die vom neuronalen Netzwerken hoffentlich richtig erkannte digitale Ziffer.
Und warum heißt das ganze DEEP?
Zwischen der Eingabe- und der Ausgabeschicht liegen weitere Schichten (Layer), die hidden Layer genannt werden. Jede Schicht besteht wiederum aus Neuronen.
Die erste Schicht extrahiert nur grobe Eigenschaften, welche an die zweite Schicht weitergegeben wird, die hieraus wiederum Eigenschaften extrahiert. So werden von der ersten bis zur letzten Schicht die Eigenschaften, die wir betrachten immer detaillierter.
Wir tauchen also von Schicht zu Schicht immer „tiefer“ in die Daten ein. Daher der Name Deep Learning.
Das ist vergleichbar damit wie der Mensch Dinge wahrnimmt. Betrachte beispielsweise einen Apfelbaum.
Auf den ersten Blick (1. Schicht) nehmen wir den Baum wahr, auf den zweiten Blick (2. Schicht) erkennst du das der Baum Äpfel trägt und erst aus Kombination von beiden Erkenntnissen schließt du, dass es sich um einen Apfelbaum handelt.
Was ist die Aufgabe des Neuron?
Okay, wir haben schon so viel davon gehört. Aber was macht ein Neuron?
Ein Neuron hat einen Eingang und einen Ausgang. Die Aufgabe eines Neurons ist es die Eingangssignale zu addieren und anschließend zu gewichten. Am Eingang eines Neurons können mehrere Signale anliegen. Allerdings liefert der Ausgang nur ein einziges Signal.
Ziel des Trainings eines neuronalen Netzes ist es die Verbindungen zwischen den Neuronen verschiedener Layer so herzustellen, dass eine Eingabe auf die richtige Ausgabe gemapped wird.
In unserem Beispiel bedeutet dies, dass eine handgeschriebene Neun zu einer Ausgabe von einer digitalen Neun führt.
Die Verbindungen können von unterschiedlicher Intensivität sein, was durch weitere Gewichtungsfaktoren auf den Verbindungen zwischen den Neuronen ausgedrückt wird.
Innerhalb eines Neurons werden die Eingabesignale gewichtet und aufsummiert. Hierbei findet die Gewichtung durch eine sogenannte Aktivierungsfunktion statt.
Die einfachste Art einer Aktivierungsfunktion ist die Sprungfunktion, welche den Wert 1 (Neuron feuert) annimmt sobald die berechnete Summe oberhalb eines Schwellwerts liegt. Ist die Summe unterhalb dieses Schwellwerts, so nimmt die Funktion den Wert Null an.
Das einfachste neuronale Netz, das es gibt besteht aus einem einzelnen Neuron.
Komm! Lass uns ein Neuron bauen, das uns hilft zu entscheiden, ob wir was essen gehen oder nicht.
Unsere Lust auszugehen hängt von drei Faktoren ab, die wir unterschiedlich gewichten.
- Wir haben hunger! (Gewichtung = 1)
- Wir haben gute Gesellschaft (Gewichtung = 0.5)
- Wir wollen Geld ausgeben. (Gewichtung = 0.5)
Das sind die Eingangssignale unseres Neurons. Wenn wir die Aktivierungsfunktion des Neurons so festlegen, dass es ab einem Wert von 0.9 feuert, dann sorgt das dafür, dass wir auf jeden Fall Essen gehen, wenn wir Hunger haben oder wenn wir in guter Gesellschaft sind UND Geld ausgeben wollen.
Ein einzelnes Neuron kann also schon relativ viel. Nun stell dir vor wir verschalten tausende Neuronen miteinander. Genau! Dann können wir es so trainieren, dass es zum Beispiel Handschriften lesen kann.
Sinn des Trainings eines neuronalen Netzes ist es die Verbindungen und deren Gewichtung zwischen den Neuronen zu finden. Die in unserem Beispiel festgelegten Gewichte sind also genau das Ergebnis des Training eines neuronalen Netzes.
Das Training passiert anhand einer sehr großen Menge von Eingabedaten deren korrekten Ausgaben wir kennen.
Beim Training wird dann die Differenz zwischen der Ausgabe des neuronales Netzes und der Soll Ausgabe minimiert. Diese Differenz entspricht dem Fehler, welches das neuronale Netz macht.
Mit Hilfe von mathematischen Optimierungsverfahren werden die Gewichte zwischen den Neuronen des Netzwerks so bestimmt, dass dieser Fehler minimal ist.
Dieses Vorgehen wir Backpropagation genannt.
In vielen Situationen ist das Deep Learning klassischen Machine Learning Verfahren im Ergebnis überlegen. Hat jedoch den Nachteil, dass das Trainieren des Netzwerks sehr viele Daten und daher auch sehr viel Rechenleistung benötigt.
Fazit: Wir haben uns in diesem Artikel mit dem aus meiner Sicht aktuell spannendsten IT Thema dem Machine Learning (maschinelles lernen) beschäftigt. Wir haben die unterschiedlichen Arten kennengelernt und einige Beispiele betrachtet. Insbesondere haben wir die verschiedenen Kategorien des Machine Learning Regression, Klassifikation und Clustering kennengelernt. Des Weiteren konnten wir einen Blick auf das Deep Learning werfen, das aufgrund erfolgreicher Anwendung zu einem eigenem Gebiet innerhalb des maschinelle Lernens geworden ist. Wichtigstes Werkzeug hierfür sind die neuronalen Netze.
Ich freue mich über deine Fragen im Kommentarbereich!
Hat dir der Artikel gefallen? Dann folge uns doch auf Instagram oder auf Facebook!
Robert
7. Juli 2019 at 22:54Sehr guter und interessanter Artikel!
Kim Peter
8. Juli 2019 at 7:08Hallo Robert, vielen Dank für das Feedback! Viele Grüße Kim