Navigation: đ€ Teil 1 - đ€ Teil 2 - đ€ Teil 3 - đ€ Teil 4Loading âLoading â
đŻ In dieser Reihe erfĂ€hrst du, wie ein Computer mithilfe von Daten lernen kann.
Abb.1: Fehlerfunktion1).
Im Teil 1 hast du gelernt, dass mit Machine Learning Probleme gelöst werden können, bei welchen eine Eingabe in eine Ausgabe ĂŒberfĂŒhrt werden soll. Dabei mĂŒssen Ein- und Ausgabe mit Zahlen dargestellt werden können. Mathematisch formuliert geht es darum, fĂŒr ein gegebenes Problem die Funktion $f(x)$ zu finden, welche die Ausgabe $y$ fĂŒr die Eingabe $x$ produziert, d.h. fĂŒr welche gilt: $y = f(x)$.
Beim Machine Learning wird die âwahreâ Funktion $f(x)$ durch eine âStellvertreter-Funktionâ $f_{ML}(x)$ ersetzt (â$_{ML}$â steht hier fĂŒr Machine Learning). Die Stellvertreter-Funktion $f_{ML}(x)$ beinhaltet mehrere Parameter, welche als Gewichte $w$ bezeichnet werden2). Das Ziel besteht darin, die Gewichte $w$ so einzustellen, dass $y=f_{ML}(x)$ möglichst gut fĂŒr alle âechtenâ Eingaben $x$ und Ausgaben $y$ gilt, d.h. dass $f_{ML}(x)$ der wahren Funktion $f(x)$ möglichst nahekommt.
Dem Computer muss mit einer Zahl gesagt werden, ob die Gewichte $w$ gut eingestellt sind oder nicht. HĂ€ufig wird dafĂŒr ein Fehler $e$ berechnet3). Je nach Einstellung der Gewichte $w$ wird dieser Fehler kleiner oder grösser. Abb.1 zeigt den Zusammenhang zwischen dem Fehler $e$ und den Einstellungen der Gewichte $w$. Die rote Kurve wird als Fehlerfunktion bezeichnet und trĂ€gt ĂŒblicherweise den Buchstaben $J$. Somit ist $e = J(w)$. Beim Machine Learning wird diejenige Gewicht-Einstellung $w^{*}$ gesucht, fĂŒr welche der Fehler $e$ minimal wird, d.h. fĂŒr welche gilt: $e_{min} = J(w^{*})$.
â ïž Beim Machine Learning wird nicht das Problem selbst gelöst. Das Problem wird nĂ€herungsweise mit einer Stellvertreter-Funktion beschrieben. Die Lösung des Problems wird nĂ€herungsweise durch das Minimieren einer Fehlerfunktion ersetzt. Nur wenn Stellvertreter-Funktion und Fehlerfunktion gut zum Problem passen, kann das Problem in guter NĂ€herung gelöst werden. Passen diese schlecht, dann wird zwar auch ein Problem gelöst, aber vermutlich nicht das gesuchte.
Beim Machine Learning wird nicht das Problem selbst gelöst. Es wird stellvertretend durch das Anpassen von Gewichten eine Fehlerfunktion minimiert. Daher muss immer geprĂŒft werden, inwieweit eine durch Machine Learning gefundene Lösung in der Praxis tatsĂ€chlich brauchbar ist.
Im vorangehenden Kapitel haben wir als NĂ€herung das Problem durch $f_{ML}(x)$ und die Problemlösung durch $e_{min}=J(w^*)$ ersetzt. Um die Gewicht-Einstellung $w^*$ finden zu können, mĂŒssen wir zumindest in der Lage sein, fĂŒr eine beliebige, gegebene Gewicht-Einstellung $w^âĄ$ den Fehlerwert $e^⥠= J(w^âĄ)$ zu berechnen. Der Fehlerwert $e^âĄ$ soll dabei nicht nur fĂŒr ein einzelnes Datenbeispiel ausgerechnet werden, sondern am besten fĂŒr alle möglichen Datenbeispiele hinweg. Z.B. sollte bei einer Gesichtserkennung der Fehlerwert nicht nur mit dem Gesicht von Peter bestimmt werden, sondern basierend auf allen möglichen Gesichtern.
đ«Ł In der Vergangenheit wurden Gesichtserkennungsverfahren relativ unkritisch mit Bildern aus dem Internet trainiert. Da es im Internet viel mehr Bilder von hellhĂ€utigen MĂ€nnern als von dunkelhĂ€utigen Frauen gibt, wurden in der Folge Gesichter von dunkelhĂ€utigen Frauen deutlich schlechter erkannt â eine unbeabsichtigte, algorithmische Diskriminierung. Seit dem wird versucht, mit Gesichtern zu trainieren, welche möglichst alle Alter, Ethnien etc. abdecken. FĂŒr die perfekte Gesichtserkennung mĂŒsste man eigentlich mit unendlich vielen Gesichtern trainieren, welche alle denkbaren Gesichtsvarianten abdecken.
đ Jetzt die schlechte Nachricht, wir können nur schon aus praktischen GrĂŒnden nie unendlich viele Daten berĂŒcksichtigen und wir werden kaum je alle denkbaren Datenvarianten fĂŒr ein Problem zusammentragen können. Somit können wir die wahren Fehlerwerte nur mit den Daten annĂ€hern, die wir haben. Je mehr Daten verfĂŒgbar sind (und je besser diese alle denkbaren Varianten abdecken), desto besser kann der wahre Fehlerwert $e^⥠= J(w^âĄ)$ angenĂ€hert werden. Da $f_{ML}(x)$ und $J(w)$ selbst nur NĂ€herungen der Wirklichkeit darstellen, wird damit ânurâ eine NĂ€herung der NĂ€herung berechnet.
đ Hier lernst du, dass viele Daten meist bessere NĂ€herungen ergeben als wenige.
WĂŒrfle!
klickst, wird 100 Mal gewĂŒrfelt und die Anzahl Sechser wird gezĂ€hlt. Theoretisch mĂŒssten 1/6 aller WĂŒrfe Sechsen sein, d.h. 16.66⊠also rund 17 Sechsen. Diese Zahl wird bei Erwarteten Anzahl Sechsen
(auch âErwartungswertâ genannt) angegeben. Klicke mehrfach auf den Button WĂŒrfle!
und beobachte wie stark die tatsĂ€chlich GewĂŒrfelte Anzahl Sechsen
von der Erwartete Anzahl Sechsen
prozentual abweicht.Erwartete Anzahl Sechsen
. WĂŒrfle mehrmals mit verschiedenen Slider-Einstellungen. Wie gut wird die Erwartete Anzahl Sechsen
bei wenigen WĂŒrfen getroffen? Wie gut wird die Erwartete Anzahl Sechsen
bei vielen WĂŒrfen getroffen?
In den beiden vergangenen Kapitel wurde als NĂ€herung das Problem durch $f_{ML}(x)$ und die Problemlösung durch $e_{min}=J(w^*)$ ersetzt und gezeigt, dass der wahre Fehlerwert $e^âĄ$ fĂŒr eine gegebene Gewicht-Einstellung $w^âĄ$ mit einer beschrĂ€nkten Anzahl Datenpunkte nur nĂ€herungsweise berechnet werden kann. Jetzt geht es darum, fĂŒr eine gegebene Fehlerfunktion $J(w)$ diejenige Gewicht-Einstellung $w^*$ zu finden, fĂŒr welche $e_{min} = J(w^*)$ gilt.
đ«Ł Leider lĂ€sst sich die Gewicht-Einstellung $w^*$ in den wenigsten FĂ€llen exakt berechnen, d.h. das wahre $w^*$ kann nur angenĂ€hert werden. Somit kann Machine Learning im Endeffekt nur NĂ€herungen der NĂ€herungen eines Problems annĂ€hern. Erstaunlicherweise fĂŒhrt das Ganze trotzdem meist zu bemerkenswerten Resultaten.
Machine-Learning-Verfahren sind keine exakten Verfahren, sie können Sachverhalte nur nÀherungsweise beschreiben und nur nÀherungsweise berechnen. Somit werden Machine-Learning-Lösungen kaum je zu 100% fehlerfrei funktionieren.
Im Folgenden werden drei gÀngige Strategien vorgestellt, mit welchen die gesuchte Gewicht-Einstellung $w^*$ angenÀhert werden kann. Jedes dieser Verfahren basiert dabei auf einer durch mehrere Gewichte $w$ anpassbaren Funktion $f_{ML}(x)$ und einer Fehlerfunktion $J(w)$.
đĄ Manche Fehlerfunktionen $J(w)$ brauchen fĂŒr die Berechnung des Fehlers Datenpaare $(x, d)$, wobei $x$ die Eingabe darstellt und $d$ den zugehörigen âdesired Outputâ (die zugehörige âerwĂŒnschte Ausgabeâ). Bei solchen Fehlerfunktionen wird von âsupervised Learningâ (ĂŒberwachten Lernen) gesprochen. Andere Fehlerfunktionen kommen nur mit den Eingangswerten $x$ aus. Hierbei wird von âunsupervised Learningâ (unĂŒberwachten Lernen) gesprochen. Alle der nachfolgenden Beispiele beziehen sich auf supervised Learning.
Bei den iterativen Verfahren wird ausgehend von einer zufĂ€llig erzeugten Gewicht-Einstellung $w_0$ versucht, die Gewichte in mehreren Schritten in Richtung $w^*$ zu verĂ€ndern. Iterativ bedeutet in mehreren Wiederholungen. FĂŒr die iterativen Verfahren eignen sich viele Stellvertreter-Funktionen $f_{ML}(x)$ und Fehlerfunktionen $J(w)$, jedoch nicht alle. Damit eine gezielte, schrittweise Verbesserung berechnet werden kann, mĂŒssen $f_{ML}(x)$ und $J(w)$ gewissen mathematischen Bedingungen genĂŒgen 4).
Neuronale Netze werden meist mit iterativen Verfahren trainiert. Dabei wird als anpassbare Funktion $f_{ML}(x)$ eine neuronale Netz-Funktion verwendet. Als Fehlerfunktion $J(w)$ wird mehrheitlich eine Funktion verwendet, welche fĂŒr jeden Dateneingang $x$ den Ausgangswert des neuronalen Netzes $y$ mit dem desired Output $d$ vergleicht. Um von einer Einstellung der Gewichte zu einer besseren zu kommen, wird hĂ€ufig ein âGradientenverfahrenâ genutzt. Was das genau ist und wie das genau funktioniert, wird in den Teilen 3 und 4 dieser Reihe erklĂ€rt.
đ Hier erfĂ€hrst du, wie ein iteratives Verfahren arbeitet.
đĄ Das folgende neuronale Netz besitzt zwei EingĂ€nge, die x- und die y-Koordinaten der abgebildeten Kreise und Kreuze. Weiter besitzt es einen einzigen Ausgang $y$ der Werte von 0 bis 1 annehmen kann. Alle Ausgangswerte $y>0.5$ werden als Kreuze erkannt, alle Ausgangswerte $y\le0.5$ als Kreise. Als Fehlerfunktion wird der mean squared error (MSE) genutzt, welcher den Mittelwert aller Differenzquadrate $(y - d)^2$ bezeichnet. Der desired Output $d$ wird dabei fĂŒr einen Kreis auf $d=1$ gesetzt und fĂŒr ein Kreuz auf $d=0$. Die rote Linie stellt die Ausgangswerte $y = 0.5$ dar und wird als âdecision Boundaryâ bezeichnet.
LERNRATE
bestimmt die Lerngeschwindigkeit, wobei bei einer zu hohen Lernrate das neuronale Netz âwild hin und her springtâ.ANZAHL_HIDDEN_NEURONEN
ist mit der Anzahl Gewichte verknĂŒpft. Je höher dieser Wert, desto mehr Gewichte. Bei zu wenigen Gewichten kann nicht genĂŒgend gelernt werden, bei zu vielen Gewichten tritt âOverfittingâ auf, d.h. die Trainingsdaten werden auswendig gelernt (= gute Trainingsresultate, aber schlechte Validationsresultate).ANZAHL_EPOCHEN
und EPOCHEN_FUER_GRAFIK_UPDATE
kann eingestellt werden, wie lange trainiert und wie oft die Resultate und die Grafik aktualisiert werden soll.Loading â
Abb.2: Illustration Naive Bayes5).
Bei den statistischen Verfahren wird ermittelt, wie die Daten wertmĂ€ssig verteilt sind. Dabei wird eine bestimmte, vorgegebene âFormâ der Verteilung als Funktion $f_{ML}(x)$ genutzt und diese mithilfe der Einstellung mehrerer Gewichte $w$ möglichst gut an die Daten angepasst. FĂŒr die Anpassung der Gewichte $w$ werden in der Regel die Eingangsgrössen $x$ jedes Datenpunktes und die zugehörigen desired Outputs $d$ berĂŒcksichtigt. Die statistischen Verfahren sind so konstruiert, dass durch die Hinzunahme aller Daten direkt die Gewicht-Einstellung $w^*$ geschĂ€tzt wird, fĂŒr welche $e_{min}=J(w^*)$ gilt, wobei $J(w)$ eine verfahrensspezifische, statistische Fehlerfunktion ist 6).
Da die wahre Verteilung der Daten normalerweise nicht bekannt ist, stellt die Wahl einer vorgegebenen âFormâ fĂŒr die Verteilung eine NĂ€herung dar. Weiter treffen die gĂ€ngigen statistischen Verfahren fĂŒr ihre Berechnungen zusĂ€tzliche vereinfachende Annahmen, welche ebenfalls als NĂ€herungen angesehen werden können.
Ein einfaches statistisches Verfahren ist der Naive Bayes Klassifikator, welcher verschiedene Klassen unterscheiden kann. Dabei wird fĂŒr jede Klasse deren HĂ€ufigkeit ermittelt und fĂŒr jede Klasse und jede Eingangsgrösse ein eigenes Histogramm aus den Daten erstellt. Ein Beispiel ist in Abb.2 illustriert. Es geht darum, mit zwei Eingangsgrössen $x_1$ und $x_2$ die beiden Klassen $A$ und $B$ zu unterscheiden. Das Histogramm in der Abbildung oben zeigt die Eingangsgrösse $x_1$ fĂŒr die Datenpunkte, welche zur Klasse $A$ gehören. Ebenso (aber hier nicht abgebildet) werden drei weitere Histogramme fĂŒr die Eingangsgrössen der Datenpunkte der Klasse $A$ sowie fĂŒr die Eingangsgrössen $x_1$ und $x_2$ der Datenpunkte der Klasse $B$ erstellt. Die Abbildung unten zeigt, wie der Datenraum durch die Histogramme in âZellenâ unterteilt wird. FĂŒr jede Zelle wird basierend auf den Histogrammen Auftretenswahrscheinlichkeiten der Klassen $A$ und $B$ berechnet. Daraufhin wird jede Zelle derjenigen Klasse zugeordnet, welche den höheren Wahrscheinlichkeitswert aufweist.
Die HĂ€ufigkeit der Klassen und die Höhen der einzelnen Histogramm-Balken stellen im Naive Bayes Klassifikator die Gewichte $w$ dar. Durch âZĂ€hlenâ der Daten wird so direkt die Gewicht-Einstellung $w^*$ geschĂ€tzt, fĂŒr welche $e_{min}=J(w^*)$ gilt, wobei $J(w)$ den sogenannten âBayes Fehler (EPE)â bezeichnet7). FĂŒr das ZĂ€hlen genĂŒgt es, alle Trainingsdaten einmal anzusehen, d.h. es genĂŒgt eine Epoche fĂŒr das Training.
Falls du wissen möchtest, wie der Naive Bayes Klassifikator genau aufgebaut ist, klicke hier!
đ Hier erfĂ€hrst du, wie ein statistisches Verfahren arbeitet.
đĄ Um den statistischen Naive Bayes Klassifikator mit dem neuronalen Netz aus Kapitel 3.1 vergleichen zu können, werden hierfĂŒr dieselben Daten wie in 3.1. versendet. D.h. zwei Eingangsgrössen (die x- und die y-Koordinaten der Kreise und Kreuze) und als Ausgang $y$ die Wahrscheinlichkeit, dass ein Datenpunkt $x$ zur Klasse der Kreuze gehört. Somit werden auch hier alle Ausgangswerte $y>0.5$ werden als Kreuze erkannt (und blau eingefĂ€rbt) und alle Ausgangswerte $y<0.5$ als Kreise erkannt (und grĂŒn eingefĂ€rbt).
đĄ Speziell ist, dass alle Ausgangswerte mit $y = 0.5$ weiss eingefĂ€rbt werden. Hier kann sich der Klassifikator fĂŒr keine der beiden Klassen entscheiden. Die Anzahl der betroffenen Kreise oder Kreuze wird im Programm mit zwei ??
gekennzeichnet und nicht fĂŒr die Berechnung der Klassifikationsrate oder der Anzahl falsch klassifizierter Datenpunkte berĂŒcksichtigt.
đĄ Aus GrĂŒnden der Vergleichbarkeit wird als Fehlerfunktion nicht der Bayes-Fehler, sondern der MSE berechnet und angegeben.
ANZAHL_INTERVALLE
bestimmt die Feinheit der Histogramme, mit welchen die Daten statistisch ausgewertet werden. Je höher dieser Wert, desto mehr Gewichte. Bei zu wenigen Gewichten kann nicht genĂŒgend gelernt werden, bei zu vielen Gewichten tritt âOverfittingâ auf, d.h. die Trainingsdaten werden auswendig gelernt (= gute Trainingsresultate, aber schlechte Validationsresultate).Loading â
Bei den stochastischen Verfahren werden die Werte aller Gewichte $w$ zufĂ€llig gewĂŒrfelt (Zufallszahlen) und anschliessend der Fehler mit den verfĂŒgbaren Daten berechnet. Dies wird viele Male wiederholt und am Ende die Gewichte-Einstellung mit dem kleinsten erzielten Fehler verwendet. Somit wird die Gewichte-Einstellung $w^*$ fĂŒr welche $e_{min}=J(w^*)$ gilt, durch Zufall angenĂ€hert.
Mit dieser Vorgehensweise können, im Gegensatz zu den in den Kapiteln 3.1 und 3.2 vorgestellten Verfahren, alle Varianten von Stellvertreter-Funktionen $f_{ML}(x)$ und Fehlerfunktionen $J(w)$ ohne EinschrÀnkung verwendet werden.
Bekannte stochastische Verfahren sind
đ Hier erfĂ€hrst du, wie ein stochastisches Verfahren arbeitet.
đĄ Um alle Resultate mit dem Neuronalen Netz aus 3.1 und dem Naive Bayes Klassifikator aus 3.2 vergleichen zu können, werden hier wiederum dieselben Daten verwendet. Im ersten Programm wird das Monte-Carlo Verfahren dazu verwendet, die Gewichte im neuronalen Netz aus 3.1 zu wĂŒrfeln. Im zweiten Programm werden damit die Gewichte des Naive Bayes Klassifikators aus 3.2 gewĂŒrfelt. In beiden Experimenten kann gewĂ€hlt werden, ob die Gewicht-Einstellung mit dem kleinsten MSE oder die Gewicht-Einstellung mit der höchsten Klassifikationsrate gesucht werden soll.
OBJEKTIVE
mse
wird jeweils die Gewicht-Einstellung mit dem tiefsten MSE genommen, bei korrekt
dasjenige mit der höchsten Klassifikationsrate.MIN_WEIGHT
und MAX_WEIGHT
kann eingestellt werden, im welchem Zahlenbereich die Gewichte $w$ gewĂŒrfelt werden sollen (die Default-Einstellung sollte einigermassen ok sein). Loading â
Jetzt hast du schon einiges ĂŒber die Funktionsweise, Umsetzungsvarianten, Möglichkeiten und Grenzen maschinellen Lernens gelernt. Im đ€ Teil 3 erfĂ€hrst du detaillierter, wie mit einem iterativen Verfahren schrittweise Gewichte so angepasst werden können, dass der Fehler im Mittel ĂŒber mehrere Schritte hinweg abnimmt.
Loading â