Kapitel 1. Ein Überblick über maschinelles Lernen
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Fakten aus dem Dunst der Nuancen zu verdichten
Neal Stephenson, Snow Crash
Die Lernmaschinen
Das Interesse an maschinellem Lernen ist im letzten Jahrzehnt explodiert. Du siehst maschinelles Lernen fast täglich in Informatikprogrammen, auf Branchenkonferenzen und im Wall Street Journal. Bei all dem Gerede über maschinelles Lernen verwechseln viele, was es kann, mit dem, was sie gerne könnten. Im Grunde geht es beim maschinellen Lernen darum, mit Hilfe von Algorithmen Informationen aus Rohdaten zu extrahieren und sie in einer Art Modell darzustellen. Anhand dieses Modells können wir Rückschlüsse auf andere Daten ziehen, die wir noch nicht modelliert haben.
Neuronale Netze sind eine Art von Modell für maschinelles Lernen; es gibt sie schon seit mindestens 50 Jahren. Die grundlegende Einheit eines neuronalen Netzes ist ein Knoten, der sich an den biologischen Neuronen im Gehirn von Säugetieren orientiert. Auch die Verbindungen zwischen den Neuronen sind dem biologischen Gehirn nachempfunden, ebenso wie die Art und Weise, wie sich diese Verbindungen im Laufe der Zeit entwickeln (durch "Training"). Wie diese Modelle funktionieren, werden wir in den nächsten beiden Kapiteln genauer untersuchen.
Auf wurden Mitte der 1980er und Anfang der 1990er Jahre viele wichtige architektonische Fortschritte bei neuronalen Netzen gemacht. Der hohe Zeit- und Datenaufwand, der für gute Ergebnisse erforderlich ist, verlangsamte jedoch die Einführung und das Interesse ließ nach. In den frühen 2000er Jahren stieg die Rechenleistung exponentiell an und die Branche erlebte eine "kambrische Explosion" von Rechentechniken, die vorher nicht möglich waren. Deep Learning entwickelte sich in diesem Jahrzehnt zu einem ernstzunehmenden Konkurrenten in diesem Bereich und gewann viele wichtige Wettbewerbe für maschinelles Lernen. Das Interesse hat auch 2017 nicht nachgelassen; heute wird Deep Learning in jeder Ecke des maschinellen Lernens erwähnt.
Wir werden unsere Definition von Deep Learning im folgenden Abschnitt genauer erläutern. Dieses Buch ist so aufgebaut, dass du, der Praktiker, es aus dem Regal nehmen und Folgendes tun kannst:
- Wiederholung der relevanten Grundlagen der linearen Algebra und des maschinellen Lernens
- Überblick über die Grundlagen neuronaler Netze
- Studiere die vier wichtigsten Architekturen von tiefen Netzen
- Nutze die Beispiele im Buch, um Variationen von praktischen tiefen Netzen auszuprobieren
Wir hoffen, dass du das Material praktisch und leicht verständlich findest. Beginnen wir das Buch mit einer kurzen Einführung in das Thema maschinelles Lernen und einige der wichtigsten Konzepte, die du zum besseren Verständnis des restlichen Buches benötigst.
Wie können Maschinen lernen?
Um zu definieren, wie Maschinen lernen können, müssen wir festlegen, was wir mit "Lernen" meinen. Im alltäglichen Sprachgebrauch meinen wir mit "Lernen" so etwas wie "Wissen durch Lernen, Erfahrung oder Unterricht erwerben". Wenn wir unseren Fokus ein wenig schärfen, können wir uns maschinelles Lernen so vorstellen, dass Algorithmen verwendet werden, um strukturelle Beschreibungen aus Datenbeispielen zu gewinnen. Ein Computer lernt etwas über die Strukturen, die die Informationen in den Rohdaten darstellen. Strukturelle Beschreibungen sind ein anderer Begriff für die Modelle, die wir erstellen, um die aus den Rohdaten extrahierten Informationen zu speichern. Strukturelle Beschreibungen (oder Modelle) können viele Formen annehmen, darunter die folgenden:
- Entscheidungsbäume
- Lineare Regression
- Gewichte des neuronalen Netzes
Jeder Modelltyp hat eine andere Art, Regeln auf bekannte Daten anzuwenden, um unbekannte Daten vorherzusagen. Entscheidungsbäume erstellen eine Reihe von Regeln in Form einer Baumstruktur und lineare Modelle erstellen eine Reihe von Parametern zur Darstellung der Eingabedaten.
Neuronale Netze haben einen sogenannten Parametervektor, der die Gewichte der Verbindungen zwischen den Knoten im Netz darstellt. Wir werden die Details dieser Art von Modell später in diesem Kapitel beschreiben.
Arthur Samuel, ein Pionier der künstlichen Intelligenz (KI) bei IBM und Stanford, definierte maschinelles Lernen wie folgt:
[Das Fachgebiet, das Computern die Fähigkeit verleiht, zu lernen, ohne explizit programmiert zu werden.
Samuel entwickelte eine Software, die Dame spielen konnte und ihre Strategie anpasste, indem sie lernte, die Wahrscheinlichkeit von Sieg und Niederlage mit bestimmten Anordnungen auf dem Brett zu verbinden. Dieses grundlegende Schema, nach Mustern zu suchen, die zu Sieg oder Niederlage führen, und dann erfolgreiche Muster zu erkennen und zu verstärken, liegt dem maschinellen Lernen und der KI bis heute zugrunde.
Das Konzept von Maschinen, die lernen können, selbstständig Ziele zu erreichen, fasziniert uns schon seit Jahrzehnten. Am besten wurde dies vielleicht von den modernen Großvätern der KI, Stuart Russell und Peter Norvig, in ihrem Buch Artificial Intelligence ausgedrückt : A Modern Approach:
Wie ist es möglich, dass ein langsames, winziges Gehirn, ob biologisch oder elektronisch, eine Welt wahrnimmt, versteht, vorhersagt und manipuliert, die viel größer und komplizierter ist als es selbst?
Dieses Zitat spielt auf die Idee an, dass die Konzepte des Lernens von Prozessen und Algorithmen inspiriert wurden, die in der Natur entdeckt wurden. Um Deep Learning in einen visuellen Kontext zu setzen, veranschaulicht Abbildung 1-1 unsere Vorstellung von der Beziehung zwischen KI, maschinellem Lernen und Deep Learning.
Der Bereich der KI ist breit gefächert und existiert schon seit langem. Deep Learning ist ein Teilbereich des maschinellen Lernens, das wiederum ein Teilbereich der KI ist. Werfen wir nun einen kurzen Blick auf eine weitere Wurzel des Deep Learning: die Inspiration neuronaler Netze durch die Biologie.
Biologische Inspiration
Biologische neuronale Netzwerke (Gehirne) bestehen aus etwa 86 Milliarden Neuronen, die mit vielen anderen Neuronen verbunden sind.
Gesamte Verbindungen im menschlichen Gehirn
Nach vorsichtigen Schätzungen von Forschern gibt es im menschlichen Gehirn mehr als 500 Billionen Verbindungen zwischen den Neuronen. Selbst die größten künstlichen neuronalen Netze kommen heute nicht einmal annähernd an diese Zahl heran.
Aus Sicht der Informationsverarbeitung ist ein biologisches Neuron eine erregbare Einheit, die Informationen über elektrische und chemische Signale verarbeiten und übertragen kann. Ein Neuron im biologischen Gehirn gilt als Hauptbestandteil des Gehirns, des Rückenmarks des zentralen Nervensystems und der Ganglien des peripheren Nervensystems. Wie wir später in diesem Kapitel sehen werden, sind künstliche neuronale Netze in ihrer vergleichbaren Struktur viel einfacher.
Biologisch und künstlich im Vergleich
Biologische neuronale Netze sind wesentlich komplexer (um mehrere Größenordnungen) als die künstlichen neuronalen Netze!
Es gibt zwei Haupteigenschaften von künstlichen neuronalen Netzen, die der allgemeinen Vorstellung von der Funktionsweise des Gehirns folgen. Die erste ist, dass die grundlegendste Einheit des neuronalen Netzes das künstliche Neuron (oder kurz Knoten genannt) ist. Künstliche Neuronen sind den biologischen Neuronen des Gehirns nachempfunden und werden wie biologische Neuronen durch Eingaben stimuliert. Diese künstlichen Neuronen geben einige - aber nicht alle - Informationen, die sie erhalten, an andere künstliche Neuronen weiter, oft mit Umwandlungen. Im weiteren Verlauf dieses Kapitels werden wir uns genauer ansehen, was diese Umwandlungen im Zusammenhang mit neuronalen Netzen sind.
Zweitens: Genauso wie die Neuronen im Gehirn darauf trainiert werden können, nur Signale weiterzuleiten, die für das Erreichen der übergeordneten Ziele des Gehirns nützlich sind, können wir die Neuronen eines neuronalen Netzes darauf trainieren, nur nützliche Signale weiterzuleiten. Im weiteren Verlauf dieses Kapitels werden wir auf diesen Ideen aufbauen und sehen, wie künstliche neuronale Netze ihre biologischen Gegenstücke durch Bits und Funktionen nachbilden können.
Was ist Deep Learning?
Deep Lernen ist für viele eine Herausforderung, weil es sich in den letzten zehn Jahren nur langsam weiterentwickelt hat. Eine nützliche Definition besagt, dass Deep Learning sich mit einem "neuronalen Netzwerk mit mehr als zwei Schichten" beschäftigt. Problematisch an dieser Definition ist, dass sie Deep Learning so erscheinen lässt, als gäbe es es schon seit den 1980er Jahren. Wir sind der Meinung, dass sich neuronale Netze erst architektonisch von den früheren Netzwerktypen absetzen mussten (in Verbindung mit viel mehr Rechenleistung), bevor sie die spektakulären Ergebnisse der letzten Jahre zeigen konnten. Im Folgenden werden einige Facetten dieser Entwicklung neuronaler Netze vorgestellt:
- Mehr Neuronen als bisherige Netzwerke
- Komplexere Wege zur Verbindung von Schichten/Neuronen in NNs
- Explosion der für die Ausbildung verfügbaren Rechenleistung
- Automatische Merkmalsextraktion
Für die Zwecke dieses Buches definieren wir Deep Learning als neuronale Netzwerke mit einer großen Anzahl von Parametern und Schichten in einer der vier grundlegenden Netzwerkarchitekturen:
- Unüberwachte vortrainierte Netzwerke
- Faltungsneuronale Netze
- Rekurrente neuronale Netze
- Rekursive neuronale Netze
Es gibt auch einige Variationen der oben genannten Architekturen, z. B. eine Mischung aus Faltungsnetzwerken und rekurrenten neuronalen Netzen. In diesem Buch werden wir uns auf die vier genannten Architekturen konzentrieren.
Automatische Merkmalsextraktion ist ein weiterer großer Vorteil, den Deep Learning gegenüber herkömmlichen Algorithmen des maschinellen Lernens hat. Mit Merkmalsextraktion meinen wir den Prozess des Netzwerks, der entscheidet, welche Merkmale eines Datensatzes als Indikatoren verwendet werden können, um die Daten zuverlässig zu kennzeichnen. In der Vergangenheit haben Praktiker/innen des maschinellen Lernens Monate, Jahre und manchmal sogar Jahrzehnte damit verbracht, manuell umfassende Merkmalsätze für die Klassifizierung von Daten zu erstellen. Zum Zeitpunkt des Big Bang des Deep Learning im Jahr 2006 hatten die hochmodernen Algorithmen des maschinellen Lernens Jahrzehnte menschlicher Arbeit in Anspruch genommen, um relevante Merkmale für die Klassifizierung der Eingaben zu sammeln. Deep Learning hat diese konventionellen Algorithmen in Bezug auf die Genauigkeit bei fast allen Datentypen mit minimalem Tuning und menschlichem Aufwand übertroffen. Diese tiefen Netzwerke können Data-Science-Teams helfen, ihr Blut, ihren Schweiß und ihre Tränen für sinnvollere Aufgaben zu verwenden.
Auf dem Weg zum Kaninchenbau
Deep Learning ( ) ist in den letzten Jahren stärker in das Bewusstsein der Computerwissenschaft vorgedrungen als die meisten anderen Techniken. Das liegt zum Teil daran, dass es nicht nur eine erstklassige Genauigkeit bei der Modellierung von maschinellem Lernen gezeigt hat, sondern auch generative Mechanismen, die selbst Nicht-Informatiker/innen faszinieren. Ein Beispiel dafür sind die Demonstrationen zur Kunstgenerierung, bei denen ein Deep Network auf die Werke eines bestimmten berühmten Malers trainiert wurde und in der Lage war, andere Fotos im einzigartigen Stil des Malers wiederzugeben, wie in Abbildung 1-2 dargestellt.
Das führt zu vielen philosophischen Diskussionen, z. B. über die Frage "Können Maschinen kreativ sein?" und "Was ist Kreativität?" Wir überlassen es dir, über diese Fragen zu einem späteren Zeitpunkt nachzudenken. Das maschinelle Lernen hat sich im Laufe der Jahre weiterentwickelt, wie der Wechsel der Jahreszeiten: schleichend, aber stetig, bis du eines Tages aufwachst und eine Maschine ein Champion bei Jeopardy geworden ist oder einen Go-Großmeister geschlagen hat.
Können Maschinen intelligent sein und es mit der Intelligenz von Menschen aufnehmen? Was ist KI und wie mächtig könnte sie werden? Diese Fragen müssen noch beantwortet werden und werden in diesem Buch auch nicht vollständig beantwortet. Wir versuchen lediglich, einige Splitter der maschinellen Intelligenz zu veranschaulichen, mit denen wir unsere Umwelt heute durch die Praxis des Deep Learning bereichern können.
Für eine ausführliche Diskussion über KI
Wenn du mehr über KI lesen möchtest, schau dir Anhang A an.
Der Rahmen der Fragen
Die Grundlagen der Anwendung von maschinellem Lernen lassen sich am besten verstehen, wenn du dir zu Beginn die richtigen Fragen stellst. Hier ist, was wir definieren müssen:
- Was sind die Eingabedaten, aus denen wir Informationen extrahieren wollen (Modell)?
- Welche Art von Modell ist für diese Daten am besten geeignet?
- Was für eine Antwort möchten wir auf der Grundlage dieses Modells aus neuen Daten herauslesen?
Wenn wir diese drei Fragen beantworten können, können wir einen Workflow für maschinelles Lernen einrichten, der unser Modell erstellt und die gewünschten Antworten liefert. Um diesen Arbeitsablauf besser zu unterstützen, wollen wir uns einige der wichtigsten Konzepte ansehen, die wir für das maschinelle Lernen kennen müssen. Später werden wir darauf zurückkommen, wie diese beim maschinellen Lernen zusammenkommen, und diese Informationen nutzen, um unser Verständnis von neuronalen Netzen und Deep Learning zu verbessern.
Die Mathematik hinter dem maschinellen Lernen: Lineare Algebra
Lineare Algebra ist die Grundlage für maschinelles Lernen und Deep Learning. Die lineare Algebra liefert uns die mathematischen Grundlagen, um die Gleichungen zu lösen, die wir zur Erstellung von Modellen verwenden.
Hinweis
Eine gute Einführung in die lineare Algebra ist James E. Gentle's Matrix Algebra: Theory, Computations, and Applications in Statistics.
Werfen wir einen Blick auf einige Kernkonzepte aus diesem Bereich, bevor wir mit dem grundlegenden Konzept des Skalars beginnen.
Scalars
Wenn in der Mathematik von von Skalaren die Rede ist, geht es um die Elemente eines Vektors. Ein Skalar ist eine reelle Zahl und ein Element eines Feldes, das zur Definition eines Vektorraums verwendet wird.
In der Informatik ist der Begriff Skalar gleichbedeutend mit dem Begriff Variable und bezeichnet eine Speicherstelle, die mit einem symbolischen Namen versehen ist. Dieser Speicherplatz enthält eine unbekannte Informationsmenge, die als Wert bezeichnet wird.
Vektoren
Für definieren wir einen Vektor wie folgt:
Für eine positive ganze Zahl n ist ein Vektor ein n-Tupel, eine geordnete (Multi-)Menge oder ein Array von n Zahlen, die als Elemente oder Skalare bezeichnet werden.
Wir wollen eine Datenstruktur erstellen, die wir Vektor nennen, und zwar durch Vektorisierung. Die Anzahl der Elemente in einem Vektor wird als "Ordnung" (oder "Länge") des Vektors bezeichnet. Vektoren können auch Punkte im n-dimensionalen Raum darstellen. Im räumlichen Sinne ist der euklidische Abstand zwischen dem Ursprung und dem durch den Vektor dargestellten Punkt die "Länge" des Vektors.
In mathematischen Texten sehen wir oft, dass Vektoren wie folgt geschrieben werden:
Oder:
Es gibt viele verschiedene Möglichkeiten, die Vektorisierung zu handhaben, und du kannst viele Vorverarbeitungsschritte anwenden, die uns unterschiedliche Effektivitätsgrade für die Ausgabemodelle liefern. Wir behandeln das Thema der Umwandlung von Rohdaten in Vektoren weiter unten in diesem Kapitel und dann ausführlicher in Kapitel 5.
Matrizen
Betrachte eine Matrix als eine Gruppe von Vektoren, die alle die gleiche Dimension (Anzahl der Spalten) haben. Auf diese Weise ist eine Matrix ein zweidimensionales Feld, für das wir Zeilen und Spalten haben.
Wenn unsere Matrix eine n × m Matrix ist, hat sie n Zeilen und m Spalten. Abbildung 1-3 zeigt eine 3 × 3-Matrix zur Veranschaulichung der Dimensionen einer Matrix. Matrizen sind eine zentrale Struktur in der linearen Algebra und im maschinellen Lernen, wie wir im Laufe dieses Kapitels noch zeigen werden.
Tensoren
Ein Tensor ist ein mehrdimensionales Feld auf der grundlegendsten Ebene. Er ist eine allgemeinere mathematische Struktur als ein Vektor. Wir können einen Vektor einfach als eine Unterklasse von Tensoren betrachten.
Bei Tensoren erstrecken sich die Zeilen entlang der y-Achse und die Spalten entlang der x-Achse. Jede Achse ist eine Dimension, und Tensoren haben zusätzliche Dimensionen. Tensoren haben auch einen Rang. Zum Vergleich: Ein Skalar hat den Rang 0 und ein Vektor den Rang 1. Wir sehen auch, dass eine Matrix den Rang 2 hat. Jede Einheit mit Rang 3 und höher wird als Tensor bezeichnet.
Hyperplanes
Ein weiteres Objekt der linearen Algebra , das du kennen solltest, ist die Hyperebene. In der Geometrie ist die Hyperebene ein Unterraum mit einer Dimension weniger als der umgebende Raum. In einem dreidimensionalen Raum hätten die Hyperebenen zwei Dimensionen. Im zweidimensionalen Raum betrachten wir eine eindimensionale Linie als Hyperebene.
Eine Hyperebene ist ein mathematisches Konstrukt, das einen n-dimensionalen Raum in verschiedene "Teile" unterteilt und daher in Anwendungen wie der Klassifizierung nützlich ist. Die Optimierung der Parameter der Hyperebene ist ein zentrales Konzept der linearen Modellierung, wie du im weiteren Verlauf dieses Kapitels sehen wirst.
Relevante mathematische Operationen
Unter geben wir einen kurzen Überblick über die gängigen Operationen der linearen Algebra, die du kennen solltest.
Punktprodukt
Eine zentrale Operation der linearen Algebra, die wir beim maschinellen Lernen häufig sehen, ist das Punktprodukt. Das Punktprodukt wird manchmal auch "Skalarprodukt" oder "inneres Produkt" genannt. Das Punktprodukt nimmt zwei Vektoren gleicher Länge und liefert eine einzige Zahl. Dazu werden die Einträge in den beiden Vektoren verglichen, multipliziert und dann die so erhaltenen Produkte addiert. Ohne (sofort) zu mathematisch zu werden, ist es wichtig zu erwähnen, dass in dieser einen Zahl eine Menge Informationen stecken.
Um zu beginnen, ist das Punktprodukt ein Maß dafür, wie groß die einzelnen Elemente in jedem Vektor sind. Zwei Vektoren mit ziemlich großen Werten können ziemlich große Ergebnisse liefern, und zwei Vektoren mit ziemlich kleinen Werten können ziemlich kleine Ergebnisse liefern. Wenn die relativen Werte dieser Vektoren mathematisch mit einer so genannten Normalisierung berücksichtigt werden, ist das Punktprodukt ein Maß dafür, wie ähnlich diese Vektoren sind. Dieser mathematische Begriff des Punktprodukts zweier normalisierter Vektoren wird Kosinusähnlichkeit genannt.
Elementweises Produkt
Eine weitere gängige Operation der linearen Algebra, die wir in der Praxis sehen, ist das elementweise Produkt (oder das "Hadamard-Produkt"). Diese Operation nimmt zwei Vektoren gleicher Länge und erzeugt einen Vektor gleicher Länge, bei dem jedes entsprechende Element der beiden Ausgangsvektoren miteinander multipliziert wird.
Daten in Vektoren umwandeln
Auf müssen wir bei der Arbeit im Bereich des maschinellen Lernens und der Datenwissenschaft alle Arten von Daten analysieren. Eine wichtige Voraussetzung dafür ist die Fähigkeit, jeden Datentyp als Vektor darzustellen. Beim maschinellen Lernen verwenden wir viele Arten von Daten (z. B. Text, Zeitreihen, Audio, Bilder und Video).
Warum können wir unseren Lernalgorithmus also nicht einfach mit Rohdaten füttern und ihn alles erledigen lassen? Das Problem ist, dass das maschinelle Lernen auf linearer Algebra und dem Lösen von Gleichungen basiert. Diese Gleichungen erwarten Fließkommazahlen als Eingabe, also brauchen wir eine Möglichkeit, die Rohdaten in Fließkommazahlen zu übersetzen. Wir werden diese Konzepte im nächsten Abschnitt über das Lösen dieser Gleichungssätze miteinander verbinden. Ein Beispiel für Rohdaten wäre der kanonische Iris-Datensatz:
5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 7.0,3.2,4.7,1.4,Iris-versicolor 6.4,3.2,4.5,1.5,Iris-versicolor 6.9,3.1,4.9,1.5,Iris-versicolor 5.5,2.3,4.0,1.3,Iris-versicolor 6.5,2.8,4.6,1.5,Iris-versicolor 6.3,3.3,6.0,2.5,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 7.1,3.0,5.9,2.1,Iris-virginica
Ein anderes Beispiel wäre ein Rohtextdokument:
Go, Dogs. Go! Go on skates or go by bike.
In beiden Fällen handelt es sich um unterschiedliche Arten von Rohdaten, die jedoch beide ein gewisses Maß an Vektorisierung benötigen, um die Form zu erhalten, die wir für das maschinelle Lernen brauchen. Irgendwann wollen wir, dass unsere Eingabedaten in Form einer Matrix vorliegen, aber wir können die Daten in eine Zwischendarstellung konvertieren (z. B. in das Dateiformat "svmlight", das im folgenden Codebeispiel gezeigt wird). Wir möchten, dass die Eingabedaten unseres Algorithmus für maschinelles Lernen eher wie das serialisierte Sparse-Vector-Format svmlight aussehen, wie im folgenden Beispiel gezeigt:
1.0 1:0.7500000000000001 2:0.41666666666666663 3:0.702127659574468 4:0. 5652173913043479 2.0 1:0.6666666666666666 2:0.5 3:0.9148936170212765 4:0.6956521739130436 2.0 1:0.45833333333333326 2:0.3333333333333336 3:0.8085106382978723 4:0 .7391304347826088 0.0 1:0.1666666666666665 2:1.0 3:0.021276595744680823 2.0 1:1.0 2:0.5833333333333334 3:0.9787234042553192 4:0.8260869565217392 1.0 1:0.3333333333333333 3:0.574468085106383 4:0.47826086956521746 1.0 1:0.7083333333333336 2:0.7500000000000002 3:0.6808510638297872 4:0 .5652173913043479 1.0 1:0.916666666666667 2:0.6666666666666667 3:0.7659574468085107 4:0 .5652173913043479 0.0 1:0.08333333333333343 2:0.5833333333333334 3:0.021276595744680823 2.0 1:0.6666666666666666 2:0.8333333333333333 3:1.0 4:1.0 1.0 1:0.9583333333333335 2:0.7500000000000002 3:0.723404255319149 4:0 .5217391304347826 0.0 2:0.7500000000000002
Dieses Format kann schnell in eine Matrix und einen Spaltenvektor für die Bezeichnungen (die erste Zahl in jeder Zeile im vorangegangenen Beispiel) eingelesen werden. Die restlichen indizierten Zahlen in der Zeile werden zur Laufzeit als "Features" in den richtigen Slot in der Matrix eingefügt, um für verschiedene lineare Algebra-Operationen während des maschinellen Lernprozesses vorbereitet zu sein. Wir werden den Prozess der Vektorisierung in Kapitel 8 ausführlicher besprechen.
Das ist eine sehr häufig gestellte Frage: "Warum wollen Algorithmen für maschinelles Lernen, dass die Daten (typischerweise) als (spärliche) Matrix dargestellt werden?" Um das zu verstehen, machen wir einen kurzen Abstecher zu den Grundlagen des Lösens von Gleichungssystemen.
Gleichungssysteme lösen
In , der Welt der linearen Algebra, sind wir daran interessiert, lineare Gleichungssysteme der Form zu lösen:
- Ax = b
Dabei ist A eine Matrix aus unseren Eingangszeilenvektoren und b ist der Spaltenvektor der Bezeichnungen für jeden Vektor in der A-Matrix. Wenn wir die ersten drei Zeilen der serialisierten Sparse-Ausgabe aus dem vorherigen Beispiel nehmen und die Werte in ihre lineare Algebra-Form bringen, sieht das so aus:
Säule 1 |
Säule 2 |
Säule 3 |
Säule 4 |
0.7500000000000001 |
0.41666666666666663 |
0.702127659574468 |
0.5652173913043479 |
0.6666666666666666 |
0.5 |
0.9148936170212765 |
0.6956521739130436 |
0.45833333333333326 |
0.3333333333333336 |
0.8085106382978723 |
0.7391304347826088 |
Diese Zahlenmatrix ist unsere A-Variable in unserer Gleichung, und jeder unabhängige Wert in jeder Zeile wird als ein Merkmal unserer Eingabedaten betrachtet.
Wir wollen für jede Spalte in einer gegebenen Zeile Koeffizienten für eine Prädiktorfunktion finden, die uns die Ausgabe b oder das Label für jede Zeile liefern. Die Beschriftungen aus den serialisierten Sparse-Vektoren, die wir uns zuvor angesehen haben, würden wie folgt aussehen:
Etiketten |
1.0 |
2.0 |
2.0 |
Die oben erwähnten Koeffizienten werden zu dem in Abbildung 1-4 dargestellten x-Spaltenvektor (auch Parametervektor genannt).
Dieses System wird als "konsistent" bezeichnet, wenn es einen solchen Parametervektor x gibt, dass die Lösung dieser Gleichung direkt wie folgt geschrieben werden kann:
Es ist wichtig, den Ausdruck x = A-1b von der Methode abzugrenzen, mit der die Lösung tatsächlich berechnet wird. Dieser Ausdruck stellt nur die Lösung selbst dar. Die Variable A-1 ist die invertierte Matrix A und wird durch einen Prozess namens Matrixinversion berechnet. Da nicht alle Matrizen invertiert werden können, brauchen wir eine Methode zur Lösung dieser Gleichung, die keine Matrixinvertierung erfordert. Eine Methode ist die Matrixzerlegung. Ein Beispiel für die Matrixzerlegung beim Lösen von linearen Gleichungssystemen ist die LU-Zerlegung (Lower Upper), um die Matrix A zu lösen. Abgesehen von der Matrixzerlegung wollen wir uns die allgemeinen Methoden zum Lösen von linearen Gleichungssystemen ansehen.
Methoden zum Lösen von Systemen linearer Gleichungen
Es gibt zwei allgemeine Methoden, um ein System linearer Gleichungen zu lösen. Die erste ist die "direkte Methode", bei der wir algorithmisch wissen, dass es eine feste Anzahl von Berechnungen gibt. Bei der anderen Methode handelt es sich um eine Klasse von Methoden, die als iterative Methoden bekannt sind und bei denen wir durch eine Reihe von Annäherungen und eine Reihe von Abbruchbedingungen den Parametervektor x ableiten können. Die direkte Klasse von Methoden ist besonders effektiv, wenn wir alle Trainingsdaten(A und b) auf einem einzigen Computer speichern können. Bekannte Beispiele für die direkte Methode zum Lösen linearer Gleichungen sind die Gaußsche Eliminierung und die Normalengleichungen.
Iterative Methoden
Die iterative Methodenklasse ist besonders effektiv, wenn unsere Daten nicht in den Hauptspeicher eines einzelnen Computers passen und das Durchlaufen einzelner Datensätze von der Festplatte es uns ermöglicht, eine viel größere Menge an Daten zu modellieren. Das kanonische Beispiel für iterative Methoden, die heute beim maschinellen Lernen am häufigsten eingesetzt werden, ist der stochastische Gradientenabstieg (SGD), den wir später in diesem Kapitel besprechen. Andere Verfahren in diesem Bereich sind die Conjugate Gradient Methods und Alternating Least Squares (die wir in Kapitel 3 näher erläutern). Iterative Methoden haben sich auch bei Scale-Out-Methoden bewährt, bei denen wir nicht nur lokale Datensätze in einer Schleife durchlaufen, sondern der gesamte Datensatz über einen Cluster von Rechnern verteilt wird und der Parametervektor regelmäßig über alle Agenten gemittelt und dann bei jedem lokalen Modellierungsagenten aktualisiert wird (ausführlicher in Kapitel 9 beschrieben).
Iterative Methoden und lineare Algebra
Auf der mathematischen Ebene wollen wir mit diesen Algorithmen auf unserem Eingabedatensatz arbeiten können. Dazu müssen wir unsere rohen Eingabedaten in die Eingabematrix A umwandeln. Dieser kurze Überblick über die lineare Algebra erklärt uns, warum wir uns die Mühe machen, die Daten zu vektorisieren. Im Laufe des Buches zeigen wir Code-Beispiele für die Umwandlung der rohen Eingabedaten in die Eingabematrix A, um dir das "Wie" zu vermitteln. Die Art und Weise, wie wir unsere Daten vektorisieren, beeinflusst auch die Ergebnisse des Lernprozesses. Wie wir später im Buch sehen werden, kann die Art und Weise, wie wir die Daten in der Vorverarbeitungsphase vor der Vektorisierung behandeln, zu genaueren Modellen führen.
Die Mathematik hinter dem maschinellen Lernen: Statistik
Auf findest du gerade so viel Statistik, dass du in diesem Kapitel weiterkommst. Wir müssen einige grundlegende Konzepte der Statistik hervorheben, wie zum Beispiel die folgenden:
- Wahrscheinlichkeiten
- Ausschüttungen
- Wahrscheinlichkeiten
Es gibt noch einige andere grundlegende Zusammenhänge, die wir in der deskriptiven Statistik und der Inferenzstatistik hervorheben möchten. Zur deskriptiven Statistik gehören die folgenden Punkte:
- Histogramme
- Boxplots
- Streudiagramme
- Mittlere
- Standardabweichung
- Korrelationskoeffizient
Im Gegensatz dazu befasst sich die Inferenzstatistik mit Techniken zur Verallgemeinerung von einer Stichprobe auf eine Grundgesamtheit. Hier sind einige Beispiele für Inferenzstatistiken:
- p-Werte
- Glaubwürdigkeitsintervalle
Die Beziehung zwischen Wahrscheinlichkeitsrechnung und Inferenzstatistik:
- Wahrscheinlichkeitsüberlegungen von der Grundgesamtheit zur Stichprobe (deduktives Denken)
- Inferenzstatistiken schließen von der Stichprobe auf die Grundgesamtheit
Bevor wir verstehen können, was eine bestimmte Stichprobe über die Ausgangspopulation aussagt, müssen wir die Unsicherheit verstehen, die mit der Entnahme einer Stichprobe aus einer bestimmten Population verbunden ist.
Was die allgemeine Statistik angeht, so werden wir uns nicht mit einem Thema aufhalten, das bereits in anderen Büchern ausführlich behandelt wird. Dieser Abschnitt ist keineswegs als echte Statistikübersicht gedacht, sondern soll dich vielmehr auf relevante Themen hinweisen, die du in anderen Büchern vertiefen kannst. Nachdem wir diesen Disclaimer aus dem Weg geräumt haben, wollen wir mit der Definition der Wahrscheinlichkeit in der Statistik beginnen.
Wahrscheinlichkeit
Wir definieren die Wahrscheinlichkeit eines Ereignisses E als eine Zahl zwischen 0 und 1. In diesem Zusammenhang bedeutet der Wert 0, dass das Ereignis E keine Chance hat, einzutreten, und der Wert 1 bedeutet, dass das Ereignis E mit Sicherheit eintreten wird. Oft wird diese Wahrscheinlichkeit als Fließkommazahl ausgedrückt, aber wir können sie auch als Prozentsatz zwischen 0 und 100 Prozent angeben; es gibt keine gültigen Wahrscheinlichkeiten, die kleiner als 0 Prozent und größer als 100 Prozent sind. Ein Beispiel wäre eine Wahrscheinlichkeit von 0,35, ausgedrückt als 35 Prozent (z. B. 0,35 x 100 == 35 Prozent).
Das klassische Beispiel für die Messung von Wahrscheinlichkeiten ist die Beobachtung, wie oft eine geworfene Münze Kopf oder Zahl ergibt (z. B. 0,5 für jede Seite). Die Wahrscheinlichkeit des Stichprobenraums ist immer 1, weil der Stichprobenraum alle möglichen Ergebnisse für einen bestimmten Versuch repräsentiert. Wie wir an den beiden Ergebnissen ("Kopf" und "Zahl") der geworfenen Münze sehen können, ist 0,5 + 0,5 == 1,0, weil die Gesamtwahrscheinlichkeit des Stichprobenraums immer 1 sein muss. Wir drücken die Wahrscheinlichkeit eines Ereignisses wie folgt aus:
- P( E ) = 0,5
Und das lesen wir so:
Die Wahrscheinlichkeit für ein Ereignis E ist 0,5
Die Wahrscheinlichkeit steht im Mittelpunkt von neuronalen Netzen und Deep Learning, weil sie bei der Merkmalsextraktion und der Klassifizierung, zwei der Hauptfunktionen von tiefen neuronalen Netzen, eine Rolle spielt. Einen umfassenden Überblick über die Statistik findest du in Statistics in a Nutshell von O'Reilly : A Desktop Quick Reference von Boslaugh und Watters.
Bedingte Wahrscheinlichkeiten
Wenn wir die Wahrscheinlichkeit eines bestimmten Ereignisses auf der Grundlage des Vorhandenseins eines anderen Ereignisses wissen wollen, drücken wir dies als bedingte Wahrscheinlichkeit aus. In der Literatur wird dies in der Form ausgedrückt:
- P( E | F )
wo:
E ist das Ereignis, für das wir uns für eine Wahrscheinlichkeit interessieren.
F ist das Ereignis, das bereits stattgefunden hat.
Ein Beispiel wäre, auszudrücken, dass eine Person mit einer gesunden Herzfrequenz eine geringere Wahrscheinlichkeit hat, auf der Intensivstation eines Krankenhauses zu sterben:
P(Tod auf der Intensivstation | Schlechte Herzfrequenz) > P(Tod auf der Intensivstation | Gesunde Herzfrequenz)
Manchmal wird das zweite Ereignis, F, auch als "Bedingung" bezeichnet. Bedingte Wahrscheinlichkeiten sind beim maschinellen Lernen und beim Deep Learning interessant, weil wir uns oft dafür interessieren, wann mehrere Dinge passieren und wie sie zusammenwirken. Wir interessieren uns für bedingte Wahrscheinlichkeiten beim maschinellen Lernen in dem Kontext, in dem wir einen Klassifikator durch Lernen lernen würden
- P ( E | F )
wobei E unser Label und F eine Reihe von Attributen über die Entität ist, für die wir E vorhersagen. Ein Beispiel wäre die Vorhersage der Sterblichkeit (hier E) anhand der Messungen auf der Intensivstation für jeden Patienten (hier F).
Posterior Wahrscheinlichkeit
In der Bayes'schen Statistik bezeichnen wir die posteriore Wahrscheinlichkeit des Zufallsereignisses als die bedingte Wahrscheinlichkeit, die wir nach Berücksichtigung der Beweise zuweisen. Die posteriore Wahrscheinlichkeitsverteilung ist definiert als die Wahrscheinlichkeitsverteilung einer unbekannten Größe unter Berücksichtigung der gesammelten Beweise aus einem Experiment, das als Zufallsvariable behandelt wird. Wir sehen dieses Konzept in Aktion bei Softmax-Aktivierungsfunktionen (die später in diesem Kapitel erklärt werden), bei denen rohe Eingabewerte in posteriore Wahrscheinlichkeiten umgewandelt werden.
Ausschüttungen
Eine Wahrscheinlichkeitsverteilung ist eine Spezifikation der stochastischen Struktur von Zufallsvariablen. In der Statistik sind wir darauf angewiesen, Annahmen über die Verteilung der Daten zu treffen, um Rückschlüsse auf die Daten zu ziehen. Wir wollen eine Formel, die angibt, wie häufig die Werte der Beobachtungen in der Verteilung sind und welche Werte die Punkte in der Verteilung annehmen können. Eine gängige Verteilung ist die Normalverteilung (auch Gaußsche Verteilung oder Glockenkurve genannt). Wir passen einen Datensatz gerne an eine Verteilung an, denn wenn der Datensatz einigermaßen nahe an der Verteilung liegt, können wir auf der Grundlage der theoretischen Verteilung Annahmen treffen, wie wir mit den Daten arbeiten.
Wir klassifizieren Verteilungen als kontinuierlich oder diskret. Eine diskrete Verteilung hat Daten, die nur bestimmte Werte annehmen können. Bei einer kontinuierlichen Verteilung können die Daten jeden Wert innerhalb des Bereichs annehmen. Ein Beispiel für eine kontinuierliche Verteilung wäre die Normalverteilung. Ein Beispiel für eine diskrete Verteilung wäre die Binomialverteilung.
Mit der Normalverteilung können wir davon ausgehen, dass die Stichprobenverteilungen von Statistiken (z. B. der "Stichprobenmittelwert") unter bestimmten Bedingungen normalverteilt sind. Die Normalverteilung (siehe Abbildung 1-5), auch Gauß-Verteilung genannt, wurde nach dem Mathematiker und Physiker Karl Gauß aus dem 18. Die Normalverteilung wird durch ihren Mittelwert und ihre Standardabweichung definiert und hat in der Regel über alle Variationen hinweg die gleiche Form.
Andere wichtige Verteilungen beim maschinellen Lernen sind die folgenden:
- Binomialverteilung
- Inverse Gaußsche Verteilung
- Logarithmische Normalverteilung
Die Verteilung der Trainingsdaten beim maschinellen Lernen ist wichtig, um zu verstehen, wie man die Daten für die Modellierung vektorisiert.
Eine Long-Tail-Verteilung (wie die Zipf-, die Potenzgesetz- und die Pareto-Verteilung) ist ein Szenario, in dem auf eine hochfrequente Population eine niedrigfrequente Population folgt, die asymptotisch allmählich abnimmt. Diese Verteilungen wurden in den 1950er Jahren von Benoit Mandelbrot entdeckt und später von dem Schriftsteller Chris Anderson in seinem Buch The Long Tail: Why the Future of Business is Selling Less of More populär gemacht.
Ein Beispiel wäre eine Rangliste der Artikel, die ein Einzelhändler verkauft, bei der einige wenige Artikel besonders beliebt sind und dann eine große Anzahl einzigartiger Artikel mit relativ geringen Verkaufsmengen zu sehen ist. Diese Rang-Häufigkeits-Verteilung (in erster Linie der Beliebtheit oder "wie viele verkauft wurden") bildet oft Potenzgesetze. Aus dieser Perspektive können wir sie als Long-Tailed-Verteilungen betrachten.
Wir sehen diese langschwänzigen Verteilungen in den folgenden Beispielen:
- Schäden durch Erdbeben
-
Die Schäden werden mit zunehmender Stärke des Bebens schlimmer, sodass sich der schlimmste Fall verschiebt.
- Ernteerträge
-
Wir sehen manchmal Ereignisse, die außerhalb der historischen Aufzeichnungen liegen, während unser Modell eher auf den Mittelwert abgestimmt ist.
- Vorhersage der Sterblichkeit nach dem Aufenthalt auf der Intensivstation
-
Es kann Ereignisse geben, die weit über das hinausgehen, was auf der Intensivstation passiert und die Sterblichkeit beeinflussen.
Diese Beispiele sind im Kontext dieses Buches für Klassifizierungsprobleme relevant, weil die meisten statistischen Modelle auf der Auswertung vieler Daten beruhen. Wenn die interessanteren Ereignisse im hinteren Teil der Verteilung auftreten und dies nicht in den Trainingsdaten enthalten ist, kann unser Modell unvorhersehbare Ergebnisse liefern. Dieser Effekt kann bei nichtlinearen Modellen wie neuronalen Netzen noch verstärkt werden. Wir würden diese Situation als Spezialfall des "in sample/out of sample"-Problems betrachten. Selbst erfahrene Praktiker des maschinellen Lernens können überrascht sein, wie gut ein Modell in einer schiefen Trainingsstichprobe abschneidet, aber in einer größeren Datenpopulation fehlschlägt.
Langschwänzige Verteilungen haben mit der realen Möglichkeit zu tun, dass Ereignisse auftreten, die das Fünffache der Standardabweichung betragen. Wir müssen darauf achten, eine angemessene Darstellung der Ereignisse in unseren Trainingsdaten zu erhalten, um eine Überanpassung der Trainingsdaten zu vermeiden. Wir werden uns später, wenn wir über die Überanpassung sprechen, und dann in Kapitel 4 über das Tuning genauer ansehen, wie wir dies erreichen können.
Stichproben gegenüber der Bevölkerung
Eine Grundgesamtheit von Daten ist definiert als alle Einheiten, die wir in unserem Experiment untersuchen oder modellieren möchten. Ein Beispiel wäre, wenn wir unsere Untersuchungspopulation als "alle Java-Programmierer im Bundesstaat Tennessee" definieren würden.
Eine Datenstichprobe ist eine Teilmenge der Grundgesamtheit, die hoffentlich die genaue Verteilung der Daten widerspiegelt, ohne dass es zu einer Verzerrung der Stichprobenverteilung kommt (z. B. eine Verzerrung der Stichprobenverteilung aufgrund der Art und Weise, wie wir die Grundgesamtheit befragt haben).
Resampling-Methoden
Bootstrapping und Kreuzvalidierung sind zwei gängige Methoden des Resamplings in der Statistik, die für Praktiker des maschinellen Lernens nützlich sind. Beim maschinellen Lernen mit Bootstrapping ziehen wir Zufallsstichproben aus einer anderen Stichprobe, um eine neue Stichprobe zu erzeugen, die ein Gleichgewicht zwischen der Anzahl der Stichproben pro Klasse aufweist. Das ist nützlich, wenn wir ein Modell für einen Datensatz mit sehr unausgewogenen Klassen erstellen wollen.
Die Kreuzvalidierung (auch Rotationsschätzung genannt) ist eine Methode, um abzuschätzen, wie gut ein Modell auf einem Trainingsdatensatz generalisiert. Bei der Kreuzvalidierung wird der Trainingsdatensatz in N Splits aufgeteilt und diese Splits werden dann in Trainings- und Testgruppen unterteilt. Wir trainieren mit der Trainingsgruppe der Splits und testen das Modell dann mit der Testgruppe der Splits. Wir rotieren die Splits so oft zwischen den beiden Gruppen, bis wir alle Varianten ausgeschöpft haben. Es gibt keine feste Zahl für die Anzahl der zu verwendenden Splits, aber Forscher haben festgestellt, dass 10 Splits in der Praxis gut funktionieren. Es ist auch üblich, dass ein separater Teil der zurückgehaltenen Daten während des Trainings als Validierungsdatensatz verwendet wird.
Voreingenommenheit bei der Auswahl
Bei haben wir es mit einer Stichprobenmethode zu tun, die nicht richtig randomisiert ist und die Stichprobe so verzerrt, dass sie nicht repräsentativ für die Population ist, die wir modellieren möchten. Wir müssen uns der Selektionsverzerrung bewusst sein, wenn wir Datensätze neu ziehen, damit wir keine Verzerrungen in unsere Modelle einführen, die die Genauigkeit unseres Modells bei Daten aus der Grundgesamtheit verringern.
Wahrscheinlichkeiten
Wenn wir auf über die Wahrscheinlichkeit sprechen, dass ein Ereignis eintritt, aber nicht ausdrücklich auf seine numerische Wahrscheinlichkeit verweisen, verwenden wir den informellen Begriff " Wahrscheinlichkeit". Wenn wir diesen Begriff verwenden, meinen wir in der Regel ein Ereignis, das mit einiger Wahrscheinlichkeit eintreten wird, aber auch nicht eintreten kann. Es kann auch sein, dass es noch nicht beobachtete Faktoren gibt, die das Ereignis ebenfalls beeinflussen. Informell wird die Wahrscheinlichkeit auch als Synonym für die Wahrscheinlichkeit verwendet.
Wie funktioniert maschinelles Lernen?
In haben wir in einem früheren Abschnitt über das Lösen von linearen Gleichungssystemen die Grundlagen des Lösens von Ax = b vorgestellt. Grundsätzlich basiert maschinelles Lernen auf algorithmischen Techniken, um den Fehler in dieser Gleichung durch Optimierung zu minimieren.
Bei der Optimierung konzentrieren wir uns darauf, die Zahlen im x-Spaltenvektor (Parametervektor) zu ändern, bis wir einen guten Satz von Werten finden, der den tatsächlichen Werten am nächsten kommt. Jedes Gewicht in der Gewichtsmatrix wird angepasst, nachdem die Verlustfunktion den Fehler (basierend auf dem tatsächlichen Ergebnis, wie oben gezeigt, als Spaltenvektor b ) des Netzes berechnet hat. Eine Fehlermatrix, die jedem Gewicht einen Teil des Verlustes zuschreibt, wird mit den Gewichten selbst multipliziert.
Im weiteren Verlauf dieses Kapitels besprechen wir SGD als eine der wichtigsten Methoden zur Optimierung des maschinellen Lernens und werden diese Konzepte im weiteren Verlauf des Buches mit anderen Optimierungsalgorithmen verbinden. Außerdem werden wir die Grundlagen von Hyperparametern wie Regularisierung und Lernrate behandeln.
Regression
Regression bezieht sich auf Funktionen, die versuchen, einen realen Ausgangswert vorherzusagen. Diese Art von Funktion schätzt die abhängige Variable, indem sie die unabhängige Variable kennt. Die gebräuchlichste Art der Regression ist die lineare Regression, die auf den Konzepten basiert, die wir zuvor bei der Modellierung von Systemen linearer Gleichungen beschrieben haben. Bei der linearen Regression wird versucht, eine Funktion zu finden, die die Beziehung zwischen x und y beschreibt und bei bekannten Werten von x Werte von y vorhersagt, die sich als richtig erweisen.
Einrichten des Modells
Die Vorhersage eines linearen Regressionsmodells ist die lineare Kombination aus Koeffizienten (aus dem Parametervektor x) und dann Eingangsvariablen (Merkmale aus dem Eingangsvektor). Wir können dies mit der folgenden Gleichung modellieren:
- y = a + Bx
wobei a der y-Achsenabschnitt, B die Eingangsmerkmale und x der Parametervektor ist.
Diese Gleichung lässt sich wie folgt erweitern:
Ein einfaches Beispiel für ein Problem, das die lineare Regression löst, wäre die Vorhersage, wie viel wir pro Monat für Benzin ausgeben würden, wenn wir die Länge unseres Arbeitsweges berücksichtigen. Hier hängt der Preis an der Tankstelle davon ab, wie weit du fährst. Die Benzinkosten sind die abhängige Variable und die Länge des Arbeitsweges ist die unabhängige Variable. Es ist sinnvoll, diese beiden Größen im Auge zu behalten und dann eine Funktion zu definieren, etwa so:
- Kosten = f (Entfernung)
Auf diese Weise können wir unsere Benzinausgaben auf der Grundlage der zurückgelegten Kilometer vernünftig vorhersagen. In diesem Beispiel würden wir die Entfernung als unabhängige Variable und die Kosten als abhängige Variable in unserem Modell f betrachten.
Hier sind einige weitere Beispiele für die lineare Regressionsmodellierung:
- Vorhersage des Gewichts in Abhängigkeit von der Größe
- Den Verkaufspreis eines Hauses anhand der Quadratmeterzahl vorhersagen
Lineare Regression visualisieren
Auf kannst du dir die lineare Regression so vorstellen, dass du eine Linie findest, die so vielen Punkten wie möglich in einem Streudiagramm entspricht, wie in Abbildung 1-6 dargestellt.
Fitting ist die Definition einer Funktion f(x), die y-Werteerzeugt, die nahe an den gemessenen oder realen y-Werten liegen. Die Linie, die sich aus y = f(x) ergibt, liegt nahe an den gestreuten Koordinaten, den Paaren aus abhängigen und unabhängigen Variablen.
Verknüpfung des linearen Regressionsmodells
Wir können diese Funktion mit der früheren Gleichung Ax = b in Verbindung bringen, wobei A die Merkmale (z. B. "Gewicht" oder "Quadratmeterzahl") für alle Eingabebeispiele ist, die wir modellieren wollen. Jeder Eingabedatensatz ist eine Zeile in der Matrix A. Der Spaltenvektor b ist das Ergebnis für alle Eingabedaten in der Matrix A. Mithilfe einer Fehlerfunktion und einer Optimierungsmethode (z. B. SGD) können wir einen Satz von x-Parametern finden, der den Fehler für alle Vorhersagen im Vergleich zu den wahren Ergebnissen minimiert.
Wenn wir SGD verwenden, haben wir, wie bereits erwähnt, drei Komponenten, die wir für unseren Parametervektor x lösen müssen:
- Eine Hypothese über die Daten
-
Das innere Produkt aus dem Parametervektor x und den Eingangsmerkmalen (wie oben dargestellt)
- Eine Kostenfunktion
-
Quadratischer Fehler (Vorhersage - tatsächlich) der Vorhersage
- Eine Aktualisierungsfunktion
-
Die Ableitung der Verlustfunktion des quadrierten Fehlers (Kostenfunktion)
Während sich die lineare Regression mit geraden Linien befasst, befasst sich die nichtlineare Kurvenanpassung mit allem anderen, vor allem mit Kurven, die sich mit x und höheren Exponenten als 1 befassen. (Deshalb wird maschinelles Lernen manchmal auch als "Kurvenanpassung" bezeichnet.) Eine absolute Anpassung würde jeden Punkt auf einem Streudiagramm treffen. Ironischerweise ist die absolute Anpassung in der Regel ein sehr schlechtes Ergebnis, denn sie bedeutet, dass dein Modell zu perfekt auf die Trainingsmenge trainiert wurde und fast keine Vorhersagekraft über die Daten hinaus hat, die es gesehen hat (z. B. keine gute Generalisierung), wie wir bereits besprochen haben.
Klassifizierung
Klassifizierung ist eine Modellierung, die darauf basiert, dass wir anhand einer Reihe von Eingabemerkmalen Klassen von Ergebnissen abgrenzen. Während die Regression ein Ergebnis über das"wie viel" liefert, liefert die Klassifizierung ein Ergebnis über das"welche Art". Die abhängige Variable y ist kategorisch und nicht numerisch.
Die einfachste Form der Klassifizierung ist ein binärer Klassifikator, der nur eine einzige Ausgabe mit zwei Labels (zwei Klassen: 0 bzw. 1) hat. Die Ausgabe kann auch eine Fließkommazahl zwischen 0,0 und 1,0 sein, um eine Klassifizierung unterhalb der absoluten Sicherheit anzuzeigen. In diesem Fall müssen wir einen Schwellenwert (in der Regel 0,5) festlegen, bei dem wir die beiden Klassen voneinander abgrenzen. Diese Klassen werden in der Literatur oft als positive (z. B. 1,0) und negative (z. B. 0,0) Klassifizierungen bezeichnet. Mehr dazu erfahren Sie unter "Modelle bewerten".
Beispiele für eine binäre Klassifizierung sind:
- Einordnen, ob jemand eine Krankheit hat oder nicht
- Einstufung einer E-Mail als Spam oder nicht Spam
- Einstufung einer Transaktion als betrügerisch oder nominal
Bei Klassifizierungsmodellen mit mehr als zwei Bezeichnungen können wir N Bezeichnungen verwenden, für die wir die einzelnen Ausgangsbezeichnungen bewerten, wobei die Bezeichnung mit der höchsten Bewertung die Ausgangsbezeichnung ist. Wir werden dies noch weiter erörtern, wenn wir über neuronale Netze mit mehreren Ausgängen im Vergleich zu neuronalen Netzen mit einem einzigen Ausgang (binäre Klassifizierung) sprechen. Wir werden uns in diesem Kapitel auch näher mit der Klassifizierung befassen, wenn wir über die logistische Regression sprechen und dann auf die gesamte Architektur neuronaler Netze eingehen.
Empfehlung
Empfehlung ist der Prozess, bei dem den Nutzern eines Systems Artikel auf der Grundlage ähnlicher anderer Nutzer oder anderer Artikel, die sie sich zuvor angesehen haben, vorgeschlagen werden. Eine der bekanntesten Varianten von Empfehlungsalgorithmen ist das sogenannte Collaborative Filtering, das durch Amazon.com bekannt wurde.
Clustering
Clustering ist ein unüberwachtes Lernverfahren, bei dem ein Abstandsmaß verwendet wird und ähnliche Objekte iterativ näher aneinander gerückt werden. Am Ende des Prozesses werden die Objekte, die sich am dichtesten um n Zentren gruppieren, als zu dieser Gruppe gehörig betrachtet. Das K-Means-Clustering ist eine der bekanntesten Varianten des Clustering beim maschinellen Lernen.
Underfitting und Overfitting
Wie bereits erwähnt hat, versuchen Optimierungsalgorithmen zunächst, das Problem der Unteranpassung zu lösen, d. h. eine Linie zu nehmen, die die Daten nicht gut annähert, und sie besser an die Daten anzupassen. Eine gerade Linie, die ein gekrümmtes Streudiagramm durchschneidet, wäre ein gutes Beispiel für Underfitting, wie in Abbildung 1-7 zu sehen ist.
Wenn die Linie zu gut zu den Daten passt, haben wir das gegenteilige Problem, das wir "Overfitting" nennen. Die Lösung des Problems der Unteranpassung hat Priorität, aber beim maschinellen Lernen wird viel Mühe darauf verwendet, die Linie nicht zu sehr an die Daten anzupassen. Wenn wir sagen, dass ein Modell einen Datensatz übererfüllt, bedeutet das, dass es zwar eine niedrige Fehlerquote für die Trainingsdaten hat, aber nicht gut auf die gesamte Datenpopulation verallgemeinert werden kann, an der wir interessiert sind.
Eine andere Möglichkeit, die Überanpassung zu erklären, ist, über wahrscheinliche Datenverteilungen nachzudenken. Der Trainingsdatensatz, durch den wir versuchen, eine Linie zu ziehen, ist nur eine Stichprobe eines größeren unbekannten Datensatzes, und die Linie, die wir ziehen, muss genauso gut auf den größeren Datensatz passen, wenn sie eine Vorhersagekraft haben soll. Wir müssen also davon ausgehen, dass unsere Stichprobe nur bedingt repräsentativ für eine größere Menge ist.
Optimierung
Der oben beschriebene Prozess, bei dem die Gewichte angepasst werden, um immer genauere Schätzungen der Daten zu erhalten, wird als Parameteroptimierung bezeichnet. Du kannst dir diesen Prozess wie eine wissenschaftliche Methode vorstellen. Du formulierst eine Hypothese, prüfst sie an der Realität und verfeinerst oder ersetzt diese Hypothese immer wieder, um die Ereignisse in der Welt besser zu beschreiben.
Jeder Satz von Gewichten stellt eine bestimmte Hypothese darüber dar, was die Eingaben bedeuten, d.h. wie sie sich zu den Bedeutungen in den eigenen Etiketten verhalten. Die Gewichte stellen Vermutungen über die Zusammenhänge zwischen den Eingaben der Netze und den Zielkennungen dar, die sie zu erraten versuchen. Alle möglichen Gewichte und ihre Kombinationen können als Hypothesenraum für dieses Problem beschrieben werden. Bei unserem Versuch, die beste Hypothese zu formulieren, müssen wir diesen Hypothesenraum durchsuchen, und zwar mit Hilfe von Fehler- und Optimierungsalgorithmen. Je mehr Eingangsparameter wir haben, desto größer ist der Suchraum für unser Problem. Ein großer Teil der Lernarbeit besteht darin, zu entscheiden, welche Parameter wir ignorieren und welche wir berücksichtigen sollen.
Der Entscheidungsspielraum und die Hyperebenen
Wenn wir auf von der "Entscheidungsgrenze" sprechen, meinen wir die n-dimensionale Hyperebene, die durch den Parametervektor bei der linearen Modellierung entsteht.
Im Mittelpunkt des maschinellen Lernens steht die Anpassung von Linien an die Daten durch die Messung ihrer Kosten (d. h. ihres Abstands zu den Datenpunkten der Basiswahrheit). Die Linie sollte mehr oder weniger zu den Daten passen, und zwar durch Minimierung des Gesamtabstands aller Punkte von der Linie. Du minimierst die Summe der Differenz zwischen der Linie am Punkt x und dem Zielpunkt y, dem sie entspricht. In einem dreidimensionalen Raum kannst du dir die Fehlerlandschaft aus Hügeln und Tälern vorstellen und dir deinen Algorithmus wie einen blinden Wanderer vorstellen, der die Steigung ertastet. Ein Optimierungsalgorithmus wie der Gradientenabstieg informiert den Wanderer darüber, in welche Richtung es bergab geht, damit er weiß, wohin er treten muss.
Ziel ist es, die Gewichte zu finden, die den Unterschied zwischen den Vorhersagen deines Netzes (oder dem Punktprodukt aus A und x) und dem, was dein Testsatz als wahr ansieht(b), zu minimieren, wie wir bereits in Abbildung 1-4 gesehen haben. Der Parametervektor(x) oben ist der Ort, an dem du die Gewichte finden würdest. Die Genauigkeit eines Netzes hängt von seinen Eingaben und Parametern ab, und die Geschwindigkeit, mit der es genau wird, hängt von seinen Hyperparametern ab.
Hyperparameter
Beim maschinellen Lernen ( ) gibt es sowohl Modellparameter als auch Parameter, die wir abstimmen, damit die Netzwerke besser und schneller trainieren. Diese Abstimmungsparameter werden Hyperparameter genannt. Sie steuern die Optimierungsfunktion und die Modellauswahl während des Trainings mit unserem Lernalgorithmus.
Konvergenz
Konvergenz bedeutet, dass ein Optimierungsalgorithmus Werte für einen Parametervektor findet, der unserem Optimierungsalgorithmus den kleinstmöglichen Fehler über alle Trainingsbeispiele hinweg beschert. Man sagt, der Optimierungsalgorithmus "konvergiert" auf die Lösung, nachdem er mehrere verschiedene Variationen der Parameter ausprobiert hat.
Unter findest du die drei wichtigsten Funktionen, die bei der Optimierung durch maschinelles Lernen zum Einsatz kommen:
- Parameter
-
Transformiere den Input, um die Klassifizierungen zu bestimmen, die ein Netzwerk ableitet
- Verlustfunktion
-
Bewertet , wie gut es bei jedem Schritt klassifiziert (den Fehler minimiert)
- Optimierungsfunktion
-
Leitet sie zu den Punkten mit den geringsten Fehlern
Schauen wir uns nun eine Unterklasse der Optimierung, die konvexe Optimierung, genauer an.
Konvexe Optimierung
In konvexen Optimierung befassen sich die Lernalgorithmen mit konvexen Kostenfunktionen. Wenn die x-Achse ein einzelnes Gewicht und die y-Achse die Kosten darstellt, sinken die Kosten an einem Punkt der x-Achse auf 0 und steigen exponentiell zu beiden Seiten an, wenn sich das Gewicht in zwei Richtungen von seinem Ideal entfernt.
Abbildung 1-8 zeigt, dass wir die Idee einer Kostenfunktion auch auf den Kopf stellen können.
Eine weitere Möglichkeit, Parameter mit den Daten in Beziehung zu setzen, ist die Maximum-Likelihood-Schätzung (MLE). Die MLE zeichnet eine Parabel, deren Kanten nach unten zeigen, wobei die Wahrscheinlichkeit auf der vertikalen Achse und ein Parameter auf der horizontalen Achse gemessen wird. Jeder Punkt auf der Parabel misst die Wahrscheinlichkeit der Daten bei einem bestimmten Satz von Parametern. Das Ziel der MLE ist es, so lange über die möglichen Parameter zu iterieren, bis die Menge gefunden ist, die die gegebenen Daten am wahrscheinlichsten macht.
In gewissem Sinne sind maximale Wahrscheinlichkeit und minimale Kosten zwei Seiten derselben Medaille. Wenn wir die Kostenfunktion von zwei Gewichten gegen den Fehler berechnen (was uns in einen dreidimensionalen Raum versetzt), ergibt sich etwas, das eher wie ein Blatt aussieht, das an jeder Ecke gehalten wird und in der Mitte konvex abfällt - eine eher schüsselförmige Funktion. Die Steigungen dieser konvexen Kurven geben unserem Algorithmus einen Hinweis darauf, in welche Richtung der nächste Parameterschritt gehen soll, wie wir im nächsten Abschnitt über den Algorithmus zur Optimierung des Gradientenabstiegs sehen werden.
Gradient Descent
In Gradientenabstieg können wir uns die Qualität der Vorhersagen unseres Netzes (in Abhängigkeit von den Gewichtungs-/Parameterwerten) als eine Landschaft vorstellen. Die Hügel stehen für Orte (Parameterwerte oder Gewichte), die einen großen Vorhersagefehler verursachen; die Täler stehen für Orte mit weniger Fehler. Wir wählen einen Punkt auf dieser Landschaft aus, an dem wir unsere Anfangsgewichtung platzieren. Dann können wir die Anfangsgewichtung auf der Grundlage von Fachwissen auswählen (wenn wir ein Netzwerk zur Klassifizierung einer Blumenart trainieren, wissen wir, dass die Länge der Blütenblätter wichtig ist, die Farbe jedoch nicht). Wenn wir das Netz die ganze Arbeit machen lassen, können wir die Anfangsgewichte auch zufällig auswählen.
Das Ziel ist es, dieses Gewicht so schnell wie möglich bergab zu bewegen, in Bereiche mit geringeren Fehlern. Ein Optimierungsalgorithmus wie der Gradient Descent kann die tatsächliche Steigung der Hügel in Bezug auf jedes Gewicht erkennen, d.h. er weiß, in welche Richtung es abwärts geht. Das heißt, er weiß, in welche Richtung es abwärts geht. Der Gradient Descent misst die Steigung (die Änderung des Fehlers, die durch eine Änderung der Gewichtung verursacht wird) und bringt die Gewichtung einen Schritt in Richtung Talsohle. Dazu wird eine Ableitung der Verlustfunktion genommen, um den Gradienten zu ermitteln. Der Gradient gibt dem Algorithmus die Richtung für den nächsten Schritt im Optimierungsalgorithmus vor, wie in Abbildung 1-9 dargestellt.
Die Ableitung misst die "Änderungsrate" einer Funktion. Bei der konvexen Optimierung suchen wir nach dem Punkt, an dem die Ableitung der Funktion gleich 0 ist. Dieser Punkt wird auch als stationärer Punkt der Funktion oder als Minimalpunkt bezeichnet. In der Optimierung betrachten wir die Optimierung einer Funktion als Minimierung einer Funktion (abgesehen von der Umkehrung der Kostenfunktion).
Dieser Vorgang, bei dem der Verlust gemessen und das Gewicht um einen Schritt in Richtung des geringeren Fehlers verändert wird, wird so lange wiederholt, bis das Gewicht einen Punkt erreicht, über den hinaus es nicht mehr sinken kann. Es stoppt in der Talsohle, dem Punkt der größten Genauigkeit. Bei der Verwendung einer konvexen Verlustfunktion (typischerweise bei der linearen Modellierung) gibt es nur ein globales Minimum der Verlustfunktion.
Du kannst dir die lineare Modellierung in Form von drei Komponenten vorstellen, um unseren Parametervektor x zu lösen:
- Eine Hypothese über die Daten; zum Beispiel "die Gleichung, die wir verwenden, um eine Vorhersage im Modell zu machen".
- Eine Kostenfunktion. Auch Verlustfunktion genannt, z. B. "Summe der quadratischen Fehler".
- Eine Aktualisierungsfunktion; wir nehmen die Ableitung der Verlustfunktion.
Unsere Hypothese ist die Kombination aus den gelernten Parametern x und den Eingabewerten (Merkmalen), die uns eine Klassifizierung oder einen realen Wert (Regression) als Ergebnis liefert. Die Kostenfunktion sagt uns, wie weit wir vom globalen Minimum der Verlustfunktion entfernt sind, und wir verwenden die Ableitung der Verlustfunktion als Aktualisierungsfunktion, um den Parametervektor x zu ändern.
Die Ableitung der Verlustfunktion zeigt für jeden Parameter in x an, wie stark wir den Parameter anpassen müssen, um näher an den 0-Punkt auf den Verlustkurven zu kommen. Wir werden uns diese Gleichungen später in diesem Kapitel genauer ansehen, wenn wir zeigen, wie sie sowohl für die lineare Regression als auch für die logistische Regression (Klassifikation) funktionieren.
Bei anderen nichtlinearen Problemen erhalten wir jedoch nicht immer eine so klare Verlustkurve. Das Problem bei diesen anderen nichtlinearen hypothetischen Landschaften ist, dass es mehrere Täler geben kann und der Mechanismus des Gradientenabstiegs, der das Gewicht nach unten bringt, nicht wissen kann, ob er das tiefste Tal erreicht hat oder einfach nur den tiefsten Punkt in einem höheren Tal, um es mal so zu sagen. Der tiefste Punkt im untersten Tal wird als globales Minimum bezeichnet, während die Scheitelpunkte aller anderen Täler als lokale Minima bezeichnet werden. Wenn der Gradientenabstieg ein lokales Minimum erreicht, sitzt er in der Falle, und das ist ein Nachteil des Algorithmus. In Kapitel 6, wenn wir uns mit den Hyperparametern und der Lernrate beschäftigen, werden wir uns ansehen, wie dieses Problem gelöst werden kann.
Ein zweites Problem, auf das der Gradientenabstieg stößt, sind nicht-normierte Merkmale. Mit "nicht-normierten Merkmalen" meinen wir Merkmale, die in sehr unterschiedlichen Maßstäben gemessen werden können. Wenn eine Dimension in Millionen und eine andere in Dezimalzahlen gemessen wird, ist es für den Gradientenabstieg schwierig, die steilste Steigung zu finden, um den Fehler zu minimieren.
Der Umgang mit Normalisierung
In Kapitel 8 werfen wir einen erweiterten Blick auf die Methoden der Normalisierung im Zusammenhang mit der Vektorisierung und zeigen einige Möglichkeiten auf, wie man mit diesem Problem besser umgehen kann.
Stochastischer Gradientenabstieg
Bei Gradientenabstieg würden wir den Gesamtverlust für alle Trainingsbeispiele berechnen, bevor wir den Gradienten berechnen und den Parametervektor aktualisieren. Beim SGD berechnen wir den Gradienten und aktualisieren den Parametervektor nach jedem Trainingsbeispiel. Das beschleunigt nachweislich das Lernen und ist außerdem gut parallelisierbar, wie wir später im Buch noch genauer erläutern werden. SGD ist eine Annäherung an den "Full Batch" Gradientenabstieg.
Mini-Batch-Training und SGD
Eine andere Variante von SGD besteht darin, mehr als ein einziges Trainingsbeispiel zur Berechnung des Gradienten zu verwenden, aber weniger als den gesamten Trainingsdatensatz. Diese Variante wird als Mini-Batch-Größe des SGD-Trainings bezeichnet und hat sich als leistungsfähiger erwiesen als die Verwendung einzelner Trainingsinstanzen. Die Anwendung der Mini-Batch-Methode auf den stochastischen Gradientenabstieg führt auch zu einer gleichmäßigeren Konvergenz, da der Gradient bei jedem Schritt berechnet wird und somit mehr Trainingsbeispiele zur Berechnung des Gradienten verwendet werden.
Mit zunehmender Mini-Batch-Größe kommt der berechnete Gradient dem "wahren" Gradienten der gesamten Trainingsmenge näher. Das hat auch den Vorteil, dass wir effizienter rechnen können. Wenn unsere Mini-Batch-Größe zu klein ist (z. B. 1 Trainingsdatensatz), nutzen wir die Hardware nicht so effektiv, wie wir es könnten, insbesondere bei GPUs. Umgekehrt kann es auch ineffizient sein, die Mini-Batch-Größe (über einen bestimmten Punkt hinaus) zu vergrößern, weil wir denselben Gradienten mit weniger Rechenaufwand (in einigen Fällen) mit dem regulären Gradientenabstieg erzeugen können.
Quasi-Newton-Optimierungsverfahren
Quasi-Newton Optimierungsmethoden sind iterative Algorithmen, die eine Reihe von "Liniensuchen" beinhalten. Sie unterscheiden sich von anderen Optimierungsmethoden dadurch, wie sie die Suchrichtung wählen. Diese Methoden werden in späteren Kapiteln des Buches näher erläutert.
Generative versus diskriminative Modelle
Wir können verschiedene Arten von Ergebnissen aus einem Modell generieren, je nachdem, welche Art von Modell wir aufstellen. Die beiden Haupttypen sind generative Modelle und diskriminative Modelle. Generative Modelle verstehen, wie die Daten entstanden sind, um eine bestimmte Art von Antwort oder Ausgabe zu erzeugen. Bei diskriminativen Modellen spielt es keine Rolle, wie die Daten entstanden sind, sie geben uns einfach eine Klassifizierung oder Kategorie für ein gegebenes Eingangssignal. Diskriminative Modelle konzentrieren sich darauf, die Grenze zwischen den Klassen genau zu modellieren, und können eine differenziertere Darstellung dieser Grenze liefern als ein generatives Modell. Diskriminative Modelle werden normalerweise für die Klassifizierung beim maschinellen Lernen verwendet.
Ein generatives Modell lernt die gemeinsame Wahrscheinlichkeitsverteilung p(x, y), während ein diskriminatives Modell die bedingte Wahrscheinlichkeitsverteilung p(y|x) lernt. Die Verteilung p(y|x) ist die natürliche Verteilung für die Eingabe x und die Ausgabe (oder Klassifizierung) y, daher der Name "diskriminatives Modell". Generative Modelle, die die Verteilung p(x,y) lernen, werden verwendet, um eine wahrscheinliche Ausgabe zu erzeugen, wenn eine bestimmte Eingabe vorliegt. Generative Modelle sind in der Regel als probabilistische grafische Modelle aufgebaut, die die subtilen Beziehungen in den Daten erfassen.
Logistische Regression
Logistische Regression ist eine bekannte Art der Klassifizierung in der linearen Modellierung. Sie funktioniert sowohl für die binäre Klassifizierung als auch für mehrere Labels in Form der multinomialen logistischen Regression. Die logistische Regression ist ein (technisches) Regressionsmodell, bei dem die abhängige Variable kategorisch ist (z. B. "Klassifizierung"). Das binäre logistische Modell wird verwendet, um die Wahrscheinlichkeit einer binären Antwort auf der Grundlage einer oder mehrerer Eingangsvariablen (unabhängige Variablen oder "Merkmale") zu schätzen. Das Ergebnis ist die statistische Wahrscheinlichkeit einer Kategorie, wenn bestimmte Input-Prädiktoren gegeben sind.
Ähnlich wie bei der linearen Regression können wir ein logistisches Regressionsmodellierungsproblem in der Form Ax = b ausdrücken, wobei A das Merkmal (z. B. "Gewicht" oder "Quadratmeterzahl") für alle Eingangsbeispiele ist, die wir modellieren wollen. Jeder Eingabedatensatz ist eine Zeile in der Matrix A, und der Spaltenvektor b ist das Ergebnis für alle Eingabedatensätze in der Matrix A. Mithilfe einer Kostenfunktion und einer Optimierungsmethode können wir einen Satz von x Parametern finden, der den Fehler für alle Vorhersagen im Vergleich zu den wahren Ergebnissen minimiert.
Auch hier verwenden wir SGD, um dieses Optimierungsproblem zu lösen, und wir haben drei Komponenten, die wir für unseren Parametervektor x lösen müssen:
- Eine Hypothese über die Daten
- Eine Kostenfunktion
-
"Max-Likelihood-Schätzung"
- Eine Aktualisierungsfunktion
-
Eine Ableitung der Kostenfunktion
In diesem Fall besteht die Eingabe aus unabhängigen Variablen (z. B. den Eingabespalten oder "Merkmalen"), während die Ausgabe die abhängigen Variablen sind (z. B. die "Label Scores"). Eine einfache Art, sich das vorzustellen, ist die logistische Regressionsfunktion, die Eingabewerte mit Gewichten paart, um zu bestimmen, ob ein Ergebnis wahrscheinlich ist. Schauen wir uns die logistische Funktion genauer an.
Die logistische Funktion
Bei der logistischen Regression definieren wir die logistische Funktion ("Hypothese") wie folgt:
Diese Funktion ist bei der logistischen Regression nützlich, weil sie jede Eingabe im Bereich von negativ bis positiv unendlich in eine Ausgabe im Bereich von 0,0 bis 1,0 umwandelt. So können wir den Ausgabewert als Wahrscheinlichkeit interpretieren. Abbildung 1-10 zeigt eine Darstellung der logistischen Funktionsgleichung.
Diese Funktion ist eine kontinuierliche log-sigmoidale Funktion mit einem Bereich von 0,0 bis 1,0. Wir werden diese Funktion später noch einmal in "Aktivierungsfunktionen" behandeln .
Die Ausgabe der logistischen Regression verstehen
Die logistische Funktion wird oft mit dem griechischen Buchstaben Sigma oder σ bezeichnet, weil die Beziehung zwischen x und y auf einem zweidimensionalen Diagramm einem länglichen, windgepeitschten "s" ähnelt, dessen Maximum und Minimum sich asymptotisch 1 bzw. 0 nähern.
Wenn y eine Funktion von x ist und diese Funktion sigmoidal oder logistisch ist, nähern wir uns 1/1, je mehr x zunimmt, weil e hoch einer unendlich großen negativen Zahl gegen Null geht; je mehr x dagegen unter Null sinkt, desto mehr wächst der Ausdruck (1 + e-θx) und schrumpft der gesamte Quotient. Da (1 + e-θx) im Nenner steht, nähert sich der Quotient selbst umso mehr der Null an, je größer er wird.
Bei der logistischen Regression stellt f(x) die Wahrscheinlichkeit dar, dass y bei jeder Eingabe x gleich 1 ist (d.h. wahr). Wenn wir versuchen, die Wahrscheinlichkeit abzuschätzen, dass es sich bei einer E-Mail um Spam handelt, und f(x) zufällig 0,6 beträgt, könnten wir das so umschreiben, dass y mit einer 60-prozentigen Wahrscheinlichkeit 1 ist, oder dass die E-Mail mit einer 60-prozentigen Wahrscheinlichkeit Spam ist, wenn die Eingabe stimmt. Wenn wir maschinelles Lernen als eine Methode definieren, die unbekannte Ergebnisse aus bekannten Eingaben ableitet, bestimmt der Parametervektor x in einem logistischen Regressionsmodell die Stärke und Sicherheit unserer Schlussfolgerungen.
Die Logit-Transformation
Die Logit-Funktion ist die Umkehrung der logistischen Funktion ("logistische Transformation").
Modelle evaluieren
Bei der Bewertung von Modellen geht es darum, herauszufinden, wie gut sie die richtige Klassifizierung liefern, und dann den Wert der Vorhersage in einem bestimmten Kontext zu messen. Manchmal geht es nur darum, wie oft ein Modell eine Vorhersage richtig trifft; manchmal ist es wichtig, dass das Modell eine bestimmte Art von Vorhersage häufiger richtig trifft als andere. In diesem Abschnitt befassen wir uns mit Themen wie schlecht positiven und harmlosen negativen Ergebnissen, unausgewogenen Klassen und ungleichen Kosten für Vorhersagen. Werfen wir einen Blick auf das grundlegende Instrument zur Bewertung von Modellen: die Konfusionsmatrix.
Die Verwirrungsmatrix
Die Konfusionsmatrix (siehe Abbildung 1-11) - auch Konfusionstabellegenannt - isteine Tabelle mit Zeilen und Spalten, die die Vorhersagen und die tatsächlichen Ergebnisse (Labels) für einen Klassifikator darstellt. Anhand dieser Tabelle können wir besser nachvollziehen, wie gut das Modell oder der Klassifikator funktioniert, wenn es die richtige Antwort zum richtigen Zeitpunkt gibt.
Wir messen diese Antworten, indem wir die Anzahl der folgenden Punkte zählen:
- Echte Positivmeldungen
- Positive Vorhersage
- Etikett war positiv
- Falsch positive Vorhersagen
- Positive Vorhersage
- Etikett war negativ
- Echte Negative
- Negative Vorhersage
- Etikett war negativ
- Falsche Negative
- Negative Vorhersage
- Etikett war positiv
In der traditionellen Statistik wird ein falsch positiver Wert auch als "Fehler vom Typ I" und ein falsch negativer Wert als "Fehler vom Typ II" bezeichnet. Wenn wir diese Kennzahlen verfolgen, können wir eine detailliertere Analyse der Leistung des Modells durchführen, die über den grundlegenden Prozentsatz der richtigen Schätzungen hinausgeht. Wir können verschiedene Bewertungen des Modells auf der Grundlage von Kombinationen der oben genannten vier Werte in der Konfusionsmatrix berechnen, wie hier gezeigt:
Accuracy: 0.94 Precision: 0.8662 Recall: 0.8955 F1 Score: 0.8806
Im vorangegangenen Beispiel sehen wir vier verschiedene gängige Maßstäbe für die Bewertung von Machine-Learning-Modellen. Wir werden uns in Kürze mit jedem einzelnen von ihnen befassen, aber beginnen wir zunächst mit den Grundlagen der Bewertung der Modellsensitivität gegenüber der Modellspezifität.
Sensitivität versus Spezifität
Sensitivität und Spezifität sind zwei verschiedene Maße für ein binäres Klassifizierungsmodell. Die True-Positive-Rate misst, wie oft wir einen Eingabedatensatz als die positive Klasse klassifizieren und wie oft die Klassifizierung richtig ist. Dies wird auch als Sensitivität oder Recall bezeichnet; ein Beispiel wäre die Einstufung eines Patienten als krank, der tatsächlich krank war. Die Sensitivität gibt an, wie gut das Modell falsche Negative vermeidet.
- Empfindlichkeit = TP / (TP + FN)
Wenn unser Modell eine Patientin aus dem vorherigen Beispiel als nicht erkrankt einstufen würde, obwohl sie tatsächlich nicht erkrankt ist, würde dies als wahres Negativ gelten (auch Spezifität genannt). Die Spezifität gibt an, wie gut das Modell falsch-positive Ergebnisse vermeidet.
- Spezifität = TN / (TN + FP)
In vielen Fällen müssen wir den Kompromiss zwischen Sensitivität und Spezifität bewerten. Ein Beispiel wäre ein Modell, das schwere Krankheiten bei Patienten häufiger erkennt, weil die Kosten für die Fehldiagnose eines wirklich kranken Patienten hoch sind. Wir würden dieses Modell als wenig spezifisch einstufen. Eine schwere Krankheit könnte eine Gefahr für das Leben des Patienten und seiner Umgebung darstellen, daher würde unser Modell eine hohe Sensitivität für diese Situation und ihre Auswirkungen haben. In einer perfekten Welt wäre unser Modell 100 Prozent sensitiv (d. h. alle Kranken werden erkannt) und 100 Prozent spezifisch (d. h. niemand, der nicht krank ist, wird als krank eingestuft).
Genauigkeit
Genauigkeit ist der Grad der Annäherung von Messungen einer Größe an den wahren Wert dieser Größe.
- Genauigkeit = (TP + TN) / (TP + FP + FN + TN)
Die Genauigkeit kann die Qualität des Modells verfälschen, wenn das Ungleichgewicht zwischen den Klassen groß ist. Wenn wir einfach alles als die größere Klasse klassifizieren, wird unser Modell automatisch eine große Anzahl seiner Vermutungen richtig stellen und uns eine hohe Trefferquote liefern, die jedoch irreführend ist, wenn es um die tatsächliche Anwendung des Modells geht (z. B. wird es nie die kleinere Klasse oder ein seltenes Ereignis vorhersagen).
Präzision
Der Grad, in dem wiederholte Messungen unter denselben Bedingungen zu denselben Ergebnissen führen, wird in der Wissenschaft und Statistik als Präzision bezeichnet. Die Präzision wird auch als positiver Vorhersagewert bezeichnet. Obwohl sie umgangssprachlich manchmal gleichbedeutend mit "Genauigkeit" verwendet wird, werden die Begriffe im Rahmen der wissenschaftlichen Methode unterschiedlich definiert.
- Genauigkeit = TP / (TP + FP)
Eine Messung kann genau, aber nicht präzise sein, nicht genau, aber dennoch präzise, weder genau noch präzise oder sowohl genau als auch präzise. Wir betrachten eine Messung als gültig, wenn sie sowohl genau als auch präzise ist.
F1
Bei der binären Klassifizierung betrachten wir den F1-Score (oder F-Score, F-Maß) als Maß für die Genauigkeit eines Modells. Die F1-Punktzahl ist das harmonische Mittel aus dem Präzisions- und dem Wiedererkennungswert (wie zuvor beschrieben) zu einer einzigen Punktzahl, wie hier definiert:
- F1 = 2TP / (2TP + FP + FN)
Wir sehen F1-Werte zwischen 0,0 und 1,0, wobei 0,0 der schlechteste Wert und 1,0 der beste Wert ist, den wir gerne sehen würden. Die F1-Punktzahl wird normalerweise bei der Informationssuche verwendet, um zu sehen, wie gut ein Modell relevante Ergebnisse findet. Beim maschinellen Lernen wird die F1-Punktzahl als Gesamtbewertung für die Leistung unseres Modells verwendet.
Kontext und Interpretation der Noten
Der Kontext kann eine Rolle dabei spielen, wie wir unser Modell bewerten, und bestimmen, wann wir verschiedene Arten von Scores verwenden, wie bereits in diesem Abschnitt beschrieben. Die Unausgewogenheit der Klassen kann eine große Rolle bei der Wahl des Bewertungsscores spielen, und in vielen Datensätzen werden wir feststellen, dass die Klassen oder die Anzahl der Labels nicht ausgewogen sind. Hier sind einige typische Bereiche, in denen wir dies beobachten können:
- Web-Klick-Vorhersage
- Vorhersage der Sterblichkeit auf der Intensivstation
- Betrugsaufdeckung
In diesem Zusammenhang kann eine Gesamtbewertung in "Prozent richtig" irreführend sein, wenn es um den Gesamtwert des Modells in der Praxis geht. Ein Beispiel dafür ist der PhysioNet Challenge-Datensatz aus dem Jahr 2012.
Das Ziel des Wettbewerbs war es, "die Sterblichkeit im Krankenhaus mit der größten Genauigkeit mithilfe eines binären Klassifikators vorherzusagen". Die Schwierigkeit und Herausforderung bei der Modellierung dieses Datensatzes besteht darin, dass die Vorhersage, dass ein Patient überleben wird, der einfache Teil ist, weil die meisten Beispiele im Datensatz Ergebnisse aufweisen, bei denen der Patient überlebt. Das Ziel ist es, den Tod in diesem Szenario genau vorherzusagen; hier hat das Modell den größten Wert, da es in der realen Welt klinisch relevant ist. In diesem Wettbewerb wurden die Punktzahlen wie folgt berechnet:
- Score = MIN(Precision, Recall)
Die Teilnehmer sollten sich nicht nur darauf konzentrieren, vorherzusagen, dass der Patient die meiste Zeit überlebt und eine gute F1-Punktzahl erreicht, sondern auch darauf, vorherzusagen, wann der Patient stirbt (damit der Fokus auf der klinischen Relevanz liegt). Dies ist ein großartiges Beispiel dafür, wie der Kontext die Bewertung unserer Modelle verändern kann.
Methoden zur Bewältigung des Klassenungleichgewichts
In Kapitel 6 zeigen wir praktische Möglichkeiten auf, wie man mit Klassenungleichgewicht umgehen kann. Wir werfen einen genaueren Blick auf die verschiedenen Facetten des Klassenungleichgewichts und der Fehlerverteilungen im Kontext von Klassifizierung und Regression.
Ein Verständnis für maschinelles Lernen aufbauen
In diesem Kapitel haben wir die wichtigsten Konzepte vorgestellt, die für das maschinelle Lernen benötigt werden. Wir haben uns die grundlegenden mathematischen Konzepte der Modellierung angeschaut, die auf einer Gleichung basieren:
- Ax = b
Wir haben uns auch die Grundideen angesehen, wie man Merkmale in die Matrix A einträgt, wie man den Parametervektor x verändert und wie man die Ergebnisse im Vektor b festlegt.
Im weiteren Verlauf dieses Buches werden wir diese Schlüsselkonzepte weiter vertiefen. Wir werden sehen, wie neuronale Netze und Deep Learning auf diesen Grundlagen basieren, aber komplexere Methoden zur Erstellung der A-Matrix, zur Änderung des x-Parameter-Vektors durch Optimierungsmethoden und zur Verlustmessung während des Trainings hinzufügen. Gehen wir nun zu Kapitel 2 über, wo wir diese Konzepte mit den Grundlagen neuronaler Netze weiter ausbauen.
1 Patterson. 2008. "TinyTermite: A Secure Routing Algorithm" und Sartipi und Patterson. 2009. "TinyTermite: A Secure Routing Algorithm on Intel Mote 2 Sensor Network Platform".
2 Gatys et. al, 2015. "A Neural Algorithm of Artistic Style".
Get Deep Learning now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.