Verschiedene Techniken für maschinelles Lernen und Deep Learning
Verschiedene Techniken für maschinelles Lernen und Deep Learning
Support-Vektor-Maschinen
Support-Vektor-Maschinen (support vector machines - SVMs) sind moderne Klassifikatoren. In ihrer ursprünglichen Form können sie auf die Klassifizierung mit zwei Klassen angewendet werden (binären Klassifikator - binary classifier). Die gute Klassifizierungsfähigkeit von SVMs basiert auf der Idee, dass eine Erhöhung der Dimensionalität der Eingabedaten eine bessere Trennbarkeit der Klassen ermöglicht. Je höher die Dimension der Projektion der Eingabedaten, desto größer ist die Wahrscheinlichkeit einer besseren Trennfähigkeit der entsprechenden Hyperebenen. Der Name SVM kommt von den Support-Vektoren, den Feature Vektoren des Trainingssatzes, die am Rand der Klassen im hochdimensionalen Raum liegen. Es stellt sich heraus, dass sie die optimale Entscheidungsfläche vollständig bestimmen.
SVMs werden für verschiedene reale Probleme eingesetzt, darunter unter anderem die Erkennung handschriftlicher Zeichen (hand-written character recognition), die Bildklassifizierung, die Klassifizierung von Satellitendaten (satellite data classification) und Klassifizierungsaufgaben in den Biowissenschaften (classification tasks in biological sciences).
Lineare SVM mit linear trennbaren Klassen
Eine SVM ist linear, wenn ihre Entscheidungsfläche im Raum der Eingabevektoren linear ist, also eine Hyperebene ist. Angenommen, der Eingabedaten ist durch die -dimensionalen Vektoren und ihre entsprechenden Klassenbezeichnungen gegeben. Die beste Trennfähigkeit kann durch -dimensionale Hyperebenen erreicht werden. Die Klassen sind linear trennbar, wenn zwischen den Klassen Hyperebenen liegen. In diesem Unterabschnitt diskutieren wir lineare SVM mit linear trennbaren Klassen.
Optimale Hyperebene als Entscheidungsflächen
Im Allgemeinen gibt es bei linear trennbaren Klassen viele Hyperebenen, die die Klassen trennen können. Ihre Trennfähigkeit hängt jedoch von ihrer Positionierung zu den Klassen der Eingabedaten ab, siehe Abbildung 26.

Intuitiv ergibt die Hyperebene mit dem größten Abstand zu den Klassen die größte Trennungsfähigkeit. Der Abstand einer Hyperebene zu den Klassen entspricht dem Abstand zu ihren nächstgelegenen Punkten. Die Summe der Abstände von einer Hyperebene zu den Klassen wird als Margin bezeichnet. Z. B. in Abbildung 26 H1 trennt die Klassen gar nicht. H2 und H3 schon, aber H2 nur mit einer kleinen Margin. H3 ist die Hyperebene, die die Klassen mit der maximalen Margin trennt.
Tatsächlich kann gezeigt werden, dass die Hyperebene mit dem größten Margin als Entscheidungsfläche die optimale ist, in dem Sinne, dass sie bei der Klassifizierung den geringeren Generalisierungsfehler verursacht. Die optimale Hyperebene wird als Hyperebene mit maximalem Margin bezeichnet.
Optimierungsaufgabe zum Finden der Maximum-Margin Hyperebene
Jede Hyperebene kann durch eine lineare Gleichung in Normalform beschrieben werden als
Daraus folgt, dass die Maximierung der Margin gleichwertig mit der Minimierung von ist.
Somit beträgt der Abstand zwischen der Hyperebene, die auf halbem Weg zwischen den obigen Hyperebenen liegt, und einer von ihnen , was impliziert, dass für die Gleichung der Hyperebene, die auf halbem Weg zwischen die obigen Hyperebenen liegt, gilt, woraus und somit ist diese Gleichung durch

Wählen wir die Bezeichnungen und für die erste bzw. zweite Klasse. Dann erfüllen alle Vektoren der Eingabedaten, die zur ersten und zweiten Klasse gehören, jeweils die Ungleichungen
Diese beiden Ungleichungen können in einer äquivalenten kompakten Form als
Quadratisches Programm (quadratic programming problem) für die Lagrange-Multiplikatoren
Um das Optimierungsproblem mit Nebenbedingungen zu lösen, die Lagrange-Funktion wird konstruiert als
wobei die Elemente von aufgrund der Nebenbedingungen die nicht negativen Lagrange-Multiplikatoren sind. Berechnen die ersten Ableitungen nach und bei Minimum und ergibt
Wenn man sie in die Lagrange-Funktion bei und einsetzt, erhält man
Einführung des Label Vektors und der symmetrischen Matrix als
ermöglicht die Erstellung eines quadratischen Programms in Vektor-Matrix-Notation für die Lagrange-Multiplikatoren as
Bemerkung 1. Die Nebenbedingung ist dieselbe wie die partielle Ableitung der Lagrange-Funktion nach in Vektorform. Die andere partielle Ableitung und die ursprünglichen Nebenbedingungen sind hier nicht notwendig, da die Zielfunktion im obigen quadratischen Programmierproblem nicht von abhängt.
Die Eigenschaften der optimalen Hyperebene
Nach dem Kuhn-Tucker-Theorem
Für die optimale Hyperebene gelten folgende Eigenschaften:
- P.1 Der Parametervektor der optimalen Hyperebene kann als lineare Kombination der Support-Vektoren als ausgedrückt werden.
- P.2 Die Support-Vektoren bestimmen vollständig die optimale Hyperebene, also sowohl als auch .
- P.3 Zwischen dem Wert der Lagrange-Funktion im Optimum und dem Margin für die optimale Hyperebene, gilt die Relation,
Die Gleichung von P.1 kann durch Umstellen der Gleichung erhalten werden, die als erste Ableitung der Lagrange-Funktion nach erhalten wurde. Die -s für jedes erfüllen die Gleichheit und somit sind sie Support-Vektoren. Daher wird in der Expression in P.1 als Linearkombination der Support-Vektoren angegeben. Dies legt nahe, dass nur diese Vektoren des Eingabedaten einen effektiven Beitrag zum Parametervektor leisten, was den Namen „Support-Vektor“ erklärt.
Nachdem bestimmt wurde, kann durch Einsetzen eines beliebigen Support-Vektoren in die Gleichung berechnet werden. Damit ist P.2 gezeigt.
Um P.3 zu zeigen, stellen wir eine Beziehung zwischen und her als
Optimaler Hyperebenen-Algorithmus
Basierend auf den obigen Unterkapiteln kann ein Algorithmus zur Bestimmung des linearen SVM-Klassifikators mit linear trennbaren Klassen erstellt werden, d. h. um die Parameter und zu berechnen. Dieser optimale Hyperebenen-Algorithmus besteht aus den folgenden Schritten:
- Berechnen das optimale , durch Löung des quadratischen Programms
- Berechnen die optimalen Parametergewichte basierend auf der Eigenschaft P.1, d. h. aus -s und aus den Support-Vektoren unter Verwendung der Gleichung
- Berechnen den Parameter , indem einen Support-Vektor in die Gleichung eingesetzt wird.
Lineare SVM mit linear nicht trennbaren Klassen
Wenn die Klassen linear nicht trennbar sind, gibt es keine Hyperebene, die alle Trainingsbeispiele korrekt trennen kann. In diesem Fall kann man nach der Hyperebene suchen, die die meisten Trainingsbeispiele trennen kann, d. h. was den geringsten Fehler bei der Trennung macht. Daher muss der Fehler bei der Trennung in die Formulierung der Optimierungsaufgabe zum Finden der optimalen Hyperebene einbezogen werden.

Optimierungsaufgabe zum Finden der optimalen Hyperebene
Sei der Fehler des fälschlicherweise getrennten Trainingsbeispiels , der im der ausgewählten Hyperebene zugeordneten Margin liegt, siehe Abbildung 28. Die Trainingsbeispiele mit (grüne Kreise) sind Support-Vektoren. Die Trainingsbeispiele mit (lila Kreise) sind richtig klassifiziert, liegen aber innerhalb des Margins. Die Trainingsbeispiele mit (lila Kreise) sind falsch klassifiziert. Die zuvor für die linear separierbaren Klassen festgelegte Nebenbedingungen müssen geändert werden, da die fehlerhaft separierten Trainingsbeispiele innerhalb des Margins liegen. Die richtige Nebenbedingung, die den Fehler des fälschlicherweise getrennten Trainingsbeispiele berücksichtigt, kann wie folgt formuliert werden:
Jetzt wollen wir nicht nur sondern auch den Gesamtfehler bei der Trennung minimieren, um einen großen Margin zu haben. Hier den Gesamtfehler kann als
Je kleiner der Wert , desto größer der Margin, was zu einem größeren Gesamtfehler bei der Trennung führt. Somit stehen der Wert und der Gesamtfehler bei der Trennung im Kompromiss zueinander. Daher ist die Optimierungsaufgabe mit Nebenbedingungen zum Finden der optimalen Hyperebene für linear nicht trennbare Klassen wird durch
Bemerkung 2. Wenn diese Optimierung mit einem hohen Wert von angewendet wird, dann verhält sie sich ähnlich wie die Optimierung für trennbare Klassen.
SVM mit nichtlinearem Kernel
Im Fall linear nicht trennbarer Klassen kann eine bessere Trennbarkeit durch die Verwendung einer nichtlinearen Entscheidungsfläche anstelle einer Hyperebene erreicht werden. Dies wird in Abbildung 29 veranschaulicht.

Die Idee der nichtlinearen SVM
Aus diesem Grund wird die Theorie der Support Vector Machine auf nichtlineare Entscheidungsflächen erweitert. Die Idee dieser Erweiterung besteht darin, die Eingabevektoren in -dimensionale Vektoren umzuwandeln, indem eine -dimensionale Vektorfunktion auf sie angewendet und dann eine optimale Hyperebene im -dimensionalen Raum der transformierten Vektoren konstruiert wird. Durch richtig ausgewählte Vektorfunktion werden die transformierten Klassen im -dimensionalen Raum wieder durch eine optimale Hyperebene linear trennbar ! Dies ist in Abbildung 30 illustriert.

Dann ist die potentielle Entscheidungsgrenze eine -dimensionale Hyperebene für die transformierten Vektoren , für mit den Parametern und , welche die Form
Unter Anwendung der Eigenschaft P.1 der Soft-Margin-Hyperebene im -dimensionalen Raum der transformierten Vektoren kann der optimale Parametervektor als Linearkombination von der Support-Vektoren im transformierten Raum als
Der Kernel-Trick
Das einzige Rechenproblem besteht darin, potenzielle hochdimensionale Räume zu behandeln, die in für große Werte von entstehen. Tatsächlich ist es jedoch nicht erforderlich. Die Entscheidungsfunktion (decision function) hängt nur vom Skalarprodukt und nicht von den einzelnen Vektoren und ab. Unter bestimmten Bedingungen gibt es Funktionen K(u, v), die wie folgt faktorisiert werden können.
Mit einer solchen Funktion kann die Entscheidungsgrenze in der Form
Die Funktion wird Kernel genannt und die Idee, sie zu verwenden, anstatt die Vektorenfunktion zu behandeln, was die Berechnung leicht berechenbar macht, nennt man Kernel-Trick. Maschinen, die den Kernel-Trick anwenden, werden Kernel-Maschinen benannt.
Eigenschaften von SVM mit nichtlinearem Kernel
Die Hauptmerkmale von SVM mit nichtlinearem Kernel kann wie folgt zusammengefasst werden.
- Seine Entscheidungsfunktion kann mit der Hilfe Kernel ausgedrückt werden.
- Seine Entscheidungsfunktion ist nichtlinear im Raum des Eingabevektors.
- Der nichtlinear transformierte Vektorraum kann hochdimensional sein.
- Die nichtlineare Entscheidungsfläche ist eine Soft-Margin-Hyperebene im transformierten Vektorraum.
- Die Entscheidungsfläche wird mit dem Soft-Margin-Hyperplane-Algorithmus berechnet, mit der einzigen Unterschied zur Einstellung der Matrix als
Ausgewählte nichtlineare Kernel
Nachfolgend sind einige häufig verwendete nichtlineare Kernel aufgeführt.
- Polynomkernel – für Klassifikator vom Grad Für und wird es zum linearen Kernel.
- Potentialfunktion
- Gaußsche Radialfunktion als Kernel (Gaussian radial function)
- Sigmoid- oder hyperbolische Tangensfunktion
Erweiterungen
SVM verfügt über mehrere Erweiterungen. Nachfolgend befindet sich eine kurze Zusammenfassung der wichtigsten von denen.
- Multiklassen-SVM. Multiclass SVM ist ein Klassifikator, der für mehr als zwei Klassen entwickelt wurde. Der vorherrschende Realisierungsansatz führt auf Klassifikatoren mit zwei Klassen zurück. Eine dieser Methoden ist die Eins-gegen-Alle-Methode (one-versus-all), bei der für jede Klasse ein Klassifikator angewendet wird, um sie vom Rest zu trennen, und der Klassifikator mit der höchsten Ausgabe gewinnt.
- Transduktive SVM. Transduktive SVM realisiert halbüberwachtes Lernen. Neben dem beschrifteten Trainingdaten wird ein unbeschriftet Daten von Vektoren , bereitgestellt. Die Optimierungsaufgabe wird modifiziert, indem neben den Parametern und auch nach den vorherzusagenden Labels gesucht wird und die Nebenbedingungen durch und ergänzt werden.
- Support-Vektor-Clustering (SVC). SVC ist eine Maschine, die unüberwachtes Lernen realisiert.
- Strukturierte SVM (structured SVM). Strukturierte SVM ist eine Verallgemeinerung von SVM, die strukturierte und unendlich viele Labels ermöglicht.
- Support-Vector-Regression (SVR). SVR basiert auf der an die Regression angepassten SVM-Theorie. Jetzt ist der vorhergesagte Wert und die richtige Ausgabe, wobei beide stetige Werte annehmen. Dann wird die Regression durch die Optimierungsaufgabe mit der Nebenbedingung bestimmt, wobei ein freier Schwellenwert für Fehler (error threshold) ist.
Implementierung
Normalerweise ist vor der Berechnung von SVM eine Vorverarbeitung der Trainingsdaten erforderlich. Zu den notwendigen Vorverarbeitungsschritten gehören:
- Skalierung mit Methoden wie Min-Max, Dezimalskalierung (decimal scaling) oder Z-Score.
- Mittelwertnormalisierung (mean normalization), d. h. Subtrahieren des Mittelwerts von den Vektoren.
- Varianznormalisierung (variance normalization), d. h. Division jeder Vektorkomponente durch ihre Varianz.
Kernel SVM ist in vielen ML Softwarepaketen implementiert, darunter unter anderem
- P-Pack SVM mit Subgradienten-Verfahren,
- MATLAB, SAS,
- LIBSVM, SVMlight,kernlab, JKernelMachines und
- scikit-learn Python-Bibliothek.
Entscheidungsbäume und Random Forests
Klassifikations- und Regressionsbäume (Classification and Regression Trees - CART) sind Entscheidungsbäume, die für Klassifikations- und Regressionsaufgaben verwendet werden können. In diesem Unterabschnitt diskutieren wir den Ansatz von Entscheidungsbäume für Klassifikationsaufgaben.
Klassifikationsbäume realisieren eine hierarchische Partitionierung des Raumes der Eingabevektoren. Die Eingabevektoren werden auch als Featurevektoren genannt, da jede einzelne Komponente der Eingabevektoren ein Merkmal (also Feature) darstellt. Die Partitionierung führt zu einzelnen disjunkten Bereichen des Raumes der Eingabevektoren, von denen jeder einer Klasse zugeordnet ist. Die Grundidee des Klassifikationsbaums ist also die Zuordnung disjunkter Bereiche des Raumes der Eingabevektoren zu Klassen, was sich wesentlich von den Ideen anderer Klassifikationsmethoden unterscheidet, wie z. B. neuronalen Netzen, die Diskriminanzfunktionen realisieren, oder Support Vector Machines, die Entscheidungsgrenzen als Hyperebene realisieren.
Ein medizinisches Beispiel
In einem medizinischen Beispiel werden die Patienten in Hochrisiko- und Niedrigrisiko-Patienten eingeteilt. Die Einteilung erfolgt durch Fragen an die Patienten. Die Fragen können in einem binären Baum organisiert werden, siehe Abbildung 31.
Jede Frage bezieht sich auf ein Merkmal (Feature), das eine Variable im Raum der Eingabevektoren darstellt. Solche Variablen sind systolischer Blutdruck, Alter und das Vorhandensein einer Sinustachykardie. Somit verwendet die Aufgabe einen dreidimensionalen Raum der Eingabevektoren, wobei zwei Dimensionen sind kontinuierlich, während die letzte diskret ist (kann nur den Wert logisch wahr oder falsch aufnehmen). Auf diese Weise entspricht jedes Blatt des Binärbaums einem disjunkten Bereich des Raums der Eingabevektoren.
Erstellen eines Entscheidungsbaums
Der Entscheidungsbaum wird iterativ aufgebaut, wobei in jeder Iteration eine der resultierenden Regionen der vorherigen Iteration in zwei weitere disjunkte Regionen aufgeteilt wird. Jede Region wird normalerweise entlang einer Komponente des Eingabevektors aufgeteilt. Dies entspricht einer Frage wie „Ist , wobei die Aufteilung entlang der -ten Komponente der Eingabevektoren durchgeführt wird und eine mögliche Position für die Aufteilung ist. Dies wird in Abbildung 32 veranschaulicht.
Abbildung 32: Veranschaulichung der iterativen Aufteilung des Raums der Eingabevektoren in jedem Schritt entlang einer Komponente des Eingabevektors (Quelle: [CARTPennStateCourse(2024)]).
Dabei ist der gesamte Raum der Eingabevektoren und -s, stehen für die einzelnen Regionen des Raums der Eingabevektoren als Ergebnis der aktuellen Aufteilung. Aufgrund der binären Baumdarstellung wächst der Baum in jeder Iteration und jede Region kann auch als Knoten im binären Baum dargestellt werden.
Um den Entscheidungsbaum mittels der oben beschriebenen iterativen Aufteilung zu konstruieren, müssen die Teilaufgaben im Voraus festgelegt werden.
- Auswahl der nächsten Aufteilung (split), d. h. Entscheidung, welcher Knoten (d. h. Region) und wie aufgeteilt werden soll.
- Bereitstellung eines Abbruchkriteriums (stopping criterion) für das Wachstum des Baums.
- Zuweisen einer Klasse zu jedem Blatt des endgültigen Baums.
Auswahl der nächsten Aufteilung
Es besteht der Bedarf an einem Maß, mit deren Hilfe aus allen Kandidaten-Aufteilungen die nächstbeste Aufteilung ausgewählt werden kann. Jeder
Kandidaten-Aufteilung kann durch den aufzuteilenden Knoten und eine Aufteilung angegeben werden, der die für die Aufteilung zu verwendende Komponente des Eingabevektors und seine Position angibt.
Ein häufig verwendetes Maß zur Auswahl der nächstbesten Aufteilung ist das Maß „Goodness of split“ („Güte der Aufteilung“). Die "Goodness of split" einer Kandidaten-Aufteilung kann jedoch berechnet werden, indem die Impurity-Funktion (Unreinheitsfunktion) auf einige Knoten angewendet wird. Daher führen wir zunächst die Impurity-Funktion ein.
Die Impurity-Funktion
Intuitiv ist eine Region „rein“, wenn die meisten Punkte (d. h. Beispiele der Trainingsdaten) zur selben Klasse gehören. Dazu muss gemessen werden, wie unrein (impure) eine Region ist. Ein Beispiel zum Erstellen reiner Regionen in zwei Aufteilungsschritten ist in Abbildung 33 dargestellt.
Abbildung 33: Ein Beispiel zum Erstellen reiner Regionen in zwei Aufteilungsschritten (Quelle: [CARTPennStateCourse(2024)]).
Nach der ersten Aufteilung gehören nur zwei Punkte auf der linken Seite zur durch Kreise gekennzeichneten Klasse. Durch Anwenden der zweiten Teilung ist es möglich, einen Baum mit 100 % reinen Knoten zu erhalten. Man kann beobachten, dass nach jedem Aufteilungsschritt die Reinheit zunimmt oder gleichwertig die Impurity abnimmt.
Seien die Wahrscheinlichkeiten, dass ein markierter Datenpunkt in der Region zur Klasse gehört. Dann ist die Impurity-Funktion auf , für und durch ihre folgenden Eigenschaften definiert:
- Die Funktion hat ein Maximum nur bei gleichmäßig verteilten -s, d. h. wenn alle -s gleich sind.
- Die Funktion hat ein Minimum an Punkten, wenn einer der -Werte und alle anderen sind.
- Die Funktion ist symmetrisch in
hat für jede Permutation von den gleichen Wert.
Sei die Wahrscheinlichkeit, dass ein Punkt (= Featurevektor eines Beispiels einer Trainingsdata) im Knoten liegt. Ähnlich sei die Wahrscheinlichkeit, dass ein Punkt im Knoten liegt und zur Klasse gehört. Darüber hinaus sei , die bedingte Wahrscheinlichkeit, dass ein Punkt zur Klasse gehört, vorausgesetzt, dass er im Knoten liegt. Diese bedingten Wahrscheinlichkeiten können basierend auf ihren Definitionen als berechnet werden. Dann ist das Impurity-Measure (Unreinheitsmaß) des Knotens , als
Die am häufigsten verwendeten Impurity-Funktionen sind
- Entropie (entropy): (For apply .)
- Fehlklassifizierungsrate (missclassification rate): .
- Gini-Index (Gini index): .
Es ist wichtig zu verstehen, dass es egal ist, welche Impurity-Funktion angewendet wird, da ihre Fähigkeit zur Messung der Impurity durch ihre Eigenschaften gewährleistet wird, die für alle Impurity-Funktionen gelten.
Auswahl basierend auf dem Maß „Goodness of split“
Der linke und rechte Kindknoten des Knotens werden jeweils als und bezeichnet. und bezeichnen die Wahrscheinlichkeit, dass sich ein Punkt im Knoten bzw. befindet. Dann sind die bedingten Wahrscheinlichkeiten, dass sich ein Punkt im Knoten und befindet, wenn der Punkt im Knoten ist, durch
Basierend auf der Definition von kann die „Goodness of split“ einer
Kandidaten-Aufteilung als die Differenz der Impurity des Knotens und der gewichteten Summe der Impurity der linken und rechten untergeordneten Knoten angegeben werden. Mit anderen Worten
Somit drückt die oben definierte „Goodness of split“ den Gewinn aus, wenn der Kandidaten-Aufteilung angewendet wird, d. h. wenn die durch angegebene Aufteilung auf Knoten angewendet wird. Hier sind und Gewichte oder Anteile von Punkten, die zu linken und rechten Knoten gehen.
Die gewichtete Impurity (weighted impurity) des Knotens wird definiert als
Dann wird die Differenz des gewichteten Impurity-Mass des übergeordneten Knotens und der linken und rechten untergeordneten Knoten definiert als
Auswahl basierend auf der Twoing Rule
Eine andere Möglichkeit, die nächste Aufteilung auszuwählen, ist die Anwendung der Twoing Rule. Diese Regel wählt die nächste Aufteilung aus, die den Gesamtunterschied der Posterior-Wahrscheinlichkeiten der Klassen maximiert und die Anteile der Punkte ausgleicht, die auf die untergeordneten Knoten fallen. Mit anderen Worten wählt die Twoing Rule am Knoten die Aufteilung aus, die das Optimierungskriterium
Der Term in der Klammer stellt die Gesamtdifferenz der
Posterior-Wahrscheinlichkeiten der Klassen dar, während der Multiplikationsfaktor im Maximumkriterium das Ausgleichsziel umsetzt.
Das Problem des guten Abbruchkriterium
Wenn man die "Goodness of split" zur Auswahl der nächsten Aufteilung anwendet, ist zu erwarten, dass die gewichtete Impurity mit jedem Schritt abnimmt. Der Baum, der durch iterative Auswahl der nächstbesten Aufteilung wächst, ist jedoch ein Greedy Algorithmus. Daher kann auf eine schlechte Aufteilung mit niedrigem eine gute Aufteilung mit höherem folgen. Daher wäre ein Abbruchkriterium wie das Abbrechen des Wachstums des Entscheidungsbaums, wenn unter einen bestimmten Schwellenwert fällt, kein zufriedenstellendes Abbruchkriterium. Ebenso würde ein „Vorausblick“ auf weitere Schritte in der Entwicklung von dieses Problem nicht lösen, da die weitere Entwicklung von nach diesen Schritten unbekannt ist, d. h. eine gute Aufteilung mit höherem könnte auch nach diesen Schritten folgen.
Daher kann auf diese Weise kein gutes Abbruchkriterium festgelegt werden. Deshalb lässt sich die richtige Strategie wie folgt feststellen.
- Lassen den Baum zunächst wachsen, bis er ausreichend groß ist, und
- Prune (beschneiden) ihn dann gemäß einem zufriedenstellenden Kriterium, siehe Unterabschnitt 4.2.3.
Das Erreichen einer ausreichend großen Größe kann beispielsweise anhand eines der folgenden Kriterien entschieden werden.
- Lassen den Baum wachsen, bis alle Knoten rein sind (= nur noch eine Klasse enthalten).
- Lassen den Baum wachsen, bis die Anzahl der Datenpunkte unter eine vordefinierte Grenze fällt, z. B. 6.
Zuweisen eine Klasse jedem Blatt
Nachdem der Entscheidungsbaum fertig ist, wird jedem Blatt eine Klasse zugewiesen. Die angewandte Regel ist unkompliziert: Jedem Blatt wird die Klasse mit der höchsten Wahrscheinlichkeit zugewiesen. Mit anderen Worten: Die dem Blattknoten zugewiesene Klasse kann als
Pruning
Die Beschreibung des Pruning (Beschneidung) bedarf einiger Vorüberlegungen (preliminary considerations).
Vorüberlegungen
Optimale Teilbäume
Das Finden eines optimalen Teilbaums mittels erschöpfender Suche ist keine praktikable Strategie, da die Anzahl der Teilbäume auch bei einem mittelgroßen Baum beträchtlich groß sein kann. Stattdessen wird eine effizientere Methode benötigt, die die folgenden Voraussetzungen erfüllt.
- Der Teilbaum nach dem Pruning sollte in einem vordefinierten Sinne optimal sein.
- Die Methode zur Bestimmung dieses optimalen Teilbaums sollte rechnerisch handhabbar sein.
Fehlklassifizierungsrate
Die Fehlklassifizierungsrate ist die Wahrscheinlichkeit der Fehlklassifizierung (misclassification) in einem bestimmten Blattknoten, welche durch die Resubstitutionsschätzung (resubstitution estimate) charakterisiert wird. Aufgrund der Klassenzuweisungsregel (class assign rule), dass jedem Blatt die Klasse mit der höchsten Wahrscheinlichkeit zugewiesen wird, ist gegeben als
Wir definieren . Seien und die Bezeichnungen des gesamten Baums bzw. der Menge der Blattknote. Der Klassifizierungsfehler für den gesamten Baum, , ist definiert als die Summe der gewichteten Resubstitutionsschätzung über die Menge der Blattknoten, , mit anderen Worten
Eine wesentliche Aussage ist, dass die Aufteilung eines Knotens in zwei Kindknoten immer den Klassifizierungsfehler für den gesamten Baum verringert. Dies folgt aus
welches eine Folge der Klassenzuweisungsregel ist und kann wie folgt nachgewiesen werden.
Daher gilt
aus denen
Minimal Cost-Complexity Pruning
Begriffe und Notationen
Zur Beschreibung des Prunings werden verschiedene Begriffe und Notationen eingeführt.
- Descendant (Nachkomme): Ein Knoten ist ein Descendant von Knoten , wenn es einen Pfad von nach unten im Baum zu Knoten gibt.
- Ancestor (Vorfahr): ist Ancestor von , wenn ein Descendant von ist.
- Branch (Zweig) des Baums mit Wurzelknoten : besteht aus Knoten und allen seinen Descendants.
- Pruning a branch (Das Beschneiden eines Zweigs) aus einem Baum bedeutet das Löschen aller Knoten des Zweigs , außer dem Wurzelknoten.
Kosten-Komplexität-Kriterium (cost-complexity criterion) zum Finden des optimalen Teilbaums
Der Klassifizierungsfehler ist kein geeignetes Maß, um den optimalen Teilbaum (optimal subtree) zu finden, da er mit zunehmendem Baum monoton abnimmt und somit den größten Baum bevorzugt. Das Hinzufügen eines Strafterms (penalty term), der kleinere Bäume bevorzugt, führt jedoch zu einem ausgewogenen Maß (balanced measure), dessen Minimierung zum Finden des optimalen Teilbaums geeignet ist.
Sei die Anzahl der Blattknoten in der Menge und ein Komplexitätsparameter (complexity parameter). Die Kosten-Komplexität (cost-complexity) eines Baums ist durch
Weiterhin sei der initiale Baum (initial tree), der durch Wachstum auf eine ausreichend große Größe erhalten wird, und die Menge der Teilbäume des Baums . Dann soll der optimale Teilbaum eine minimale Kosten-Komplexität aufweisen
Hier begünstigt der Strafterm in der Zielfunktion (objective function) kleinere Bäume und der Komplexitätsparameter gibt die Wichtigkeitsgewichtung (importance weight) der Größe des Baums an.
Es kann vorkommen, dass mehrere Teilbäume dieselbe minimale
Kosten-Komplexität aufweisen, z. B. einer mit kleinerer Größe, aber höherem Klassifizierungsfehler. In diesem Fall wird der Teilbaum mit der kleinsten Größe bevorzugt. Daher kann der optimale Teilbaum als der mit der minimalen Größe unter der Teilbäume mit minimaler Kosten-Komplexität angegeben werden. Es kann wie folgt als Optimierungsproblem formuliert werden.
Da es nur endlich viele Teilbäume des Baums gibt, ergibt nur für endlich viele -s unterschiedliche Werte. Daher ist als Funktion von eine stückweise Treppenfunktion mit Sprüngen (piecewise step function with jumps).
Weakest-Link-Cutting
Wir erweitern die Definition der Kosten-Komplexität vom Baum auch auf Knoten. Für den Knoten ist seine Kosten-Komplexität als
Die Weakest-Link-Cutting-Methode bestimmt den optimalen Teilbaum durch Durchlaufen der optimalen Teilbäume als Funktion von von bis , indem sie den nächsten Sprungpunkt (jump point) in rekursiv bestimmt. Das Durchlaufen der optimalen Teilbäume erfordert für jeden Knoten den Vergleich von
Beginnend mit wissen wir bereits, dass für jedes , d.h. der optimale Teilbaum für ist der initiale Baum selbst. Diese Ungleichung gilt auch für einige kleine . Durch schrittweises Erhöhen von wird der Punkt erreicht, an dem , da der Koeffizient von in größer als in ist. Der Wert von an diesem Punkt kann aus der Gleichheit bestimmt werden, was zum Wert
Direkt über diesem ist der Wert , was bedeutet, dass das Pruning des Zweigs zu einem Teilbaum mit geringerer Kosten-Komplexität führt. Es kann jedoch vorkommen, dass dieser Gleichheitspunkt für einen anderen Knoten früher erreicht wird, d. h. bei geringerem . Daher tritt der erste Sprung in minimaler Kosten-Komplexität, , am Gleichheitspunkt mit dem kleinsten unter den Gleichheitspunkten aller Nicht-Blattknoten (non-leaf nodes) des Baums auf. Der Wert von an diesem Sprungpunkt von wird mit bezeichnet und kann wie folgt berechnet werden.
Sei der Knoten, an dem diese erste Gleichheit auftritt, mit anderen Worten
Dann ist knapp über der optimale Teilbaum, d. h. der Teilbaum mit der geringsten Kosten-Komplexität, derjenige, der durch Pruning den Zweig von erhalten wird, was als bezeichnet wird. Durch Wiederholen der schrittweisen Erhöhung von und der Berechnung des nächsten Sprungpunkts basierend auf der Kosten-Komplexität des aktuell optimalen Teilbaums kann ein rekursiver Algorithmus definiert werden, um die Sprungpunkte und die optimalen Teilbäume in den einzelnen -Regionen zu erhalten. In jedem Schritt führt der Algorithmus das Pruning den Zweig durch, dessen Kostenkomplexität in am frühesten größer wird als die seines Wurzelknotens, der als Weakest-Link (schwächstes Glied) angesehen werden kann. Aus diesem Grund wird der Algorithmus als Weakest-Link-Cutting-Algorithmus (Algorithmus zum Beschneiden des schwächsten Glieds) bezeichnet. Seine schematische Funktionsweise ist im Algorithmus angegeben.
Algorithm Weakest-Link-Cutting-Algorithmus
—————————————————————————————
Eingabe:
- der initiale Baum Ausgabe:
- Folge von Sprungpunkten , , - Folge von optimalen Teilbäumen in den einzelnen Regionen , und .
—————————————————————————————
1 Initialisierung: , , , , , , , ,
2 while
3
4
5
6
7
8 Update ,
9 Inkrement as
10 end
—————————————————————————————
Eigenschaften des Entscheidungsbaums
Ein wesentliches Merkmal des Entscheidungsbaumansatzes (decision tree approach) ist, dass der Raum seiner Eingabevektoren explizit vorgegeben ist, d. h. die Dimensionen der Eingabevektoren sind explizit bekannt. Dies ist ein wesentlicher Unterschied zu HMMs oder neuronalen Netzwerken, deren Eingabevektoren (=Featurevektoren) implizit bestimmt werden.
Nachfolgend wird eine Liste über die Vorteile des Entscheidungsbaumansatzes angeführt.
- Der Entscheidungsbaumansatz verarbeitet nicht nur Ordinalvariablen (Ordinalskala), sondern auch kategorische Variablen (Nominalskala).
- Der Entscheidungsbaumansatz ist invariant gegenüber monotonen Transformationen der Featurekomponenten als Ordinalvariablen.
- Der Entscheidungsbaumansatz liefert eine Schätzung der Fehlklassifizierungsrate für jede Klasse.
- Der Entscheidungsbaum ist robust gegenüber fehlklassifizierten Punkten (misclassified points) im Trainingsdaten und Ausreißern (outliers).
- Der Entscheidungsbaum ist leicht zu interpretieren, was ihn insbesondere in medizinischen Anwendungsszenarien attraktiv macht.
Random Forest
Bootstrap-Aggregation - Bagging
Das bisher besprochene Training ist ein deterministischer Prozess, der dieselben Parameter aus demselben Trainingsdaten ergibt. Ein anderer Ansatz besteht darin, eine zufällige Komponente in den Trainingsprozess einzuführen und mehrere Durchläufe desselben Trainingsdaten mit dem zufällig modifizierten Trainingsprozess durchzuführen. Eine solche zufällige Modifikation kann beispielsweise darin bestehen, in jedem Durchgang eine zufällig ausgewählte Teilmenge der Trainingsdaten zu nehmen und nur diese Teilmenge für das Training in diesem Durchgang zu verwenden. Die Ergebnisse nach jedem Durchgang werden angesammelt und das Endergebnis wird aus der Sammlung der Ergebnisse durch eine zweckmäßige Kombination erstellt. Hier sind die Ergebnisse beispielsweise die Parameter des Modells. Die Kombination der angesammelten Ergebnisse kann beispielweise durch Mittelwertbildung (by averaging), gewichtete Mittelwertbildung (by weighted averaging), Berechnung des Medians (computing the median) oder durch Anwendung einer Mehrheitswahl (majority voting) erfolgen. Dieser Ansatz wird als Bootstrap-Aggregation genannt oder mit dem Akronym Bagging bezeichnet.
Das Ziel von Bagging ist normalerweise, die Varianz im Ergebnis zu verringern. Die Varianz des Stichprobenmittelwerts nimmt proportional zur Anzahl der Stichproben ab und daher das Ansammlung und Mittelwertbildung mehrerer Ergebnisse eine reduzierende Wirkung auf die Varianz hat.
Bootstrap-Aggregation hat mehrere Vorteile.
- Die Mittelung über eine Sammlung trainierter Parameter reduziert Overfitting, da sie die erfasste Entwicklung zwischen den Trainingsbeispielen, die von der zugrunde liegenden Verteilung abweichen, teilweise aufhebt.
- Die Mittelung über eine Sammlung trainierter Parameter führt zu einem stabileren Endergebnis.
- Modelle mit hoher Kapazität können aufgrund der reduzierten Overfitting eine flexiblere Anpassung (fitting) erreichen.
- Die Mittelung über eine Sammlung trainierter Parameter führt zum Aufbrechen des Bias-Varianz-Kompromisses (siehe in Absatz [subsec:bias_variance]), indem die Varianz neben dem gleichen Bias reduziert wird.
Bootstrap-Aggregation wurde von Leo Breiman [Breiman(1996)] entwickelt.
Random Forest
Random Forest ist eine Bootstrap-Aggregation, die auf Klassifizierungs- und Regressionsbäume angewendet wird. In Random Forest werden mehrere Bäume trainiert. Während des Trainings jedes Baums wird nur eine zufällig ausgewählte Teilmenge von Komponenten des Eingabevektoren berücksichtigt, die für die Aufteilung verwendet wird.
Leo Breiman hat umfangreiche Experimente mit Random Forest durchgeführt. Er fand heraus, dass es insgesamt etwas besser abschneidet als Support Vector Machines.
Convolutional Neural Networks für Bildverarbeitung
Convolutional Neural Networks (CNNs) sind eine Subklasse von KNNs, die sich für die Verarbeitung von Eingaben in Gridform, insbesondere von Bildern, eignen. Die Convolutional im Namen von CNN ergibt sich aus der Convolution Layer, die den Kernbaustein von CNN ist. Der Convolution Layer realisiert einen mathematischen Convolution (= Faltungsoperation). CNNs eignen sich besonders zum Extrahieren lokales Features und komplexerer Muster wie Texturen (textures). Hier lokal bedeutet, dass diese Features nur von den Pixeln abhängen, die sich um das betrachtete Pixel herum befinden.
Als Beispiel nehmen wir ein Feature, das durch Subtrahieren des Werts des linken Nachbarpixels vom Wert jedes einzelnen Pixels erstellt wird. Diese Funktion eignet sich zur Erkennung von Konturen, genauer gesagt von Kanten mit vertikalen Komponenten, was eine mögliche Teilaufgabe der Objekterkennung darstellt. Dies ist in Abbildung 34 dargestellt.
Das Bild auf der rechten Seite zeigt die Anwendung des Feature zur Konturerkennung auf das Originalbild auf der linken Seite.
Die mathematische Convolution
Die stetige Version des Faltungsoperators ist ein Integral einer Multiplikation zweier Funktionen und , über die reellwertige Variable als
Das resultierende Integral hängt nur von ab. Solche Operatoren kommen in vielen technischen Teilgebieten vor, wie z.B. Beschreiben der Wahrscheinlichkeitsdichtefunktion der Summe zweier unabhängiger Zufallsvariablen mit den Wahrscheinlichkeitsdichtefunktionen und oder Entrauschen des Signals durch Bildung seines gewichteten Durchschnitts durch Anwendung von abhängige Gewichte .
Das Argument des Integrals reicht in seiner allgemeinsten Form von bis , hängt aber normalerweise vom Kontext ab. Im Beispiel pdf der Summe unabhängiger nicht negativer Zufallsvariablen geht das Integral von bis unendlich, während im zweiten Beispiel die Zeit darstellen kann und das Integral von bis geht. Werte für zu haben, würde bedeuten, auch zukünftige Werte des Signals in die Berechnung des entrauschten Werts bei , , einzubeziehen, was normalerweise im realen Kontext nicht möglich ist.
Die Convolution wird in der Regel mit einem Sternchen bezeichnet.
Die diskrete Convolution
Die diskrete Convolution ist analog definiert und kann als
Die zweidimensionale Convolution
Convolution kann auch als mehrdimensionaler Operator definiert werden. Die zweidimensionale diskrete Convolution kann wie folgt angegeben werden:
Bei Anwenden auf ein Bild, beschreibt das zweidimensionale Bild und ist ein zweidimensionaler Kernel. Beide werden als zweidimensionales endliches Array dargestellt und die resultierende Matrix, wird als Ausgabematrix genannt. In diesem Fall können die Funktionen und in der oben angeführten Formel mit Ausnahme einer endlichen Menge von Punkten als Null angenommen werden. Auf diese Weise kann die unendliche Summe in der Convolution tatsächlich eine endliche Summe auch darstellen. Mehrdimensionale Arrays werden auch als Tensoren bezeichnet.
Die Convolution ist ein kommutativer Operator, was bedeutet, dass auch als
Illustration der Convolution
Die Anwendung der zweidimensionalen Convolution lässt sich anhand der Form mit Kernel-Flipping veranschaulichen. Die Gewichte werden in einem Kernelfenster angeordnet (d.h. die Elemente von K()) und auf das Bildfeld des Pixels angewendet, über denen das Kernelfenster positioniert ist. Dies ergibt einen Wert der Ausgabe. Durch horizontales und vertikales Verschieben des Kernelfensters über alle möglichen Positionen ergeben sich alle Werte des Ausgabetensors. Dies wird in Abbildung 35 dargestellt.
Beispielsweise kann die Convolution der vertikalen Kantenerkennung, die in Abbildung 34 illustriert wurde, mit dem in Abbildung 36 dargestellten Kernelfenster realisiert werden.
Motivation aus rechnerischer Sicht
Die Anwendung der Convolution in NN ist auch aus rechnerischer Sicht vorteilhaft. Die rechnerischen Vorteile der Verwendung der Convolution in NNs zum Extrahieren lokaler Features können wie folgt aufgeführt werden:
- Sparse Connectivity (dünn besetzte Konnektivität),
- Parameter-Sharing und
- Äquivarianz zu verschieben (eqivariance to shift).
Sparse Connectivity
Lokale Features werden nur durch eine begrenzte Anzahl benachbarter Pixel beeinflusst. Bei seiner Realisierung ist jede Einheit der nächsten Layer nur mit einigen Einheiten der tatsächlichen Layer verbunden. Wenn jede Einheit der nächsten Layer nur mit der Einheiten der tatsächlichen Layer verbunden ist, verringert sich die erforderliche Anzahl von Operationen an jeder Einheit der nächsten Layer ebenfalls um zu . Dies ist eine große Errungenschaft, da normalerweise mehrere Größenordnungen kleiner als sein kann. Diese Sparse Connectivity, sowohl von unten als auch von oben betrachtet, ist in Abbildung 37 dargestellt.
Abbildung 37: Sparse Connectivity von unten (Links) und von oben (Rechts) (Quelle: [Goodfellow et al.(2016)]).
In einem tiefen CNN mit mehr Hidden Layer können die tieferen Hidden Layer jedoch indirekt mit mehr Eingabeeinheiten interagieren. Dies ist in Abbildung 38 dargestellt.
Parameter-Sharing
Die Verwendung der Convolution in NN bedeutet, dass auch für Bildfelder von mehreren Pixels dieselben Gewichte angewendet werden, siehe Abbildung 35 im Falle von 2-D-Convolution. Dies wird als Parameter-Sharing bezeichnet. In einem Fully-Connected neuronalen Netzwerkmodell wird jeder Gewichtungsparameter nur einmal verwendet, um genau eine Eingabeeinheit zu gewichten und nur einen Ausgabewert zu berechnen. Im Convolutional Neuronalen Netzen wird jedes Gewicht im Kernel für jede Eingabeeinheit verwendet.
Äquivarianz zu verschieben
Die Äquivarianz von Convolution und Verschiebung bedeutet, dass der Umtausch der Reihenfolge von Convolution und Verschiebung das Ergebnis nicht ändert. Daraus folgt, dass die Anwendung desselben Convolution Kernel auf ein verschobenes Bild zur gleichen Ausgabe führt, jedoch verschoben. Daher können Teilaufgaben wie z.B. die Konturerkennung mit den gleichen Gewichtsparametern (d. h. mit den gleichen lokalen Features) im gesamten Bild unabhängig von der verschobenen Position des Objekts durchgeführt werden. Somit die Einführung eines neuen lokalen Features wegen der Verschiebung des Bildes ist nicht erforderlich. Aber die Convolution hat keine Äquivarianz zu anderen Transformationen wie der Drehung oder Skalierung eines Bildes.
Pooling
Jedes Element des Ausgabetensors der Convolution liefert einen Wert über das lokale Feature, das der Kernel an dieser Position realisiert. Pooling reduziert die Dimensionen der Ausgabe, indem die Ausgaben von Clustern neuronaler Einheiten zu einer Ausgabe kombiniert werden. Dies kann auch als eine zusammenfassende Statistik gesehen werden.
Typische Pooling Operationen
Zu den typischen Pooling Operationen gehören Max-Pooling, Average-Pooling, -Norm-Pooling oder Weighted-Average-Pooling. Max-Pooling liefert die maximale Ausgabe unter den benachbarten Positionen innerhalb eines rechteckigen Bereichs. Dies ist beispielsweise bei der Konturerkennung sinnvoll, um den schärfsten Unterschied zwischen den benachbarten Pixelwerten extrahieren, der die wahrscheinlichste Position der Kontur darstellt. Das Average-Pooling gibt den Durchschnitt der Ausgaben innerhalb eines rechteckigen Bereichs um die betrachtete Position zurück. Dies ist sinnvoll, z.B. bei Teilaufgaben wie der Einstufung eines bestimmten lokalen Feature, bei dem die räumliche Dichte der größeren Ausgabewerte dieses lokalen Feature proportional zum ausgabenden Wert ist. Ebenso bezieht sich die Norm auch auf die Ausgaben innerhalb eines rechteckigen Bereichs um die betrachtete Position. Das Weighted-Average-Pooling berechnet gewichtete Summen unter Anwendung von Gewichtungen basierend auf der Entfernung von der betrachteten Position.
Lerninvarianz
Pooling kann zum Lernen der skaleninvarianten und/oder orientierungsinvarianten Detektion von Features verwendet werden. Dies wird dadurch realisiert, dass Pooling auf separat parametrisierte Convolutionen angewendet wird. Dies ist für den Fall der Zeichenerkennung von Zahlen mit unterschiedlichen Orientierungen in Abbildung 39 dargestellt.
Jede Einheit der Convolution Layer (Convolution Unit) ist parametrisiert, um eine große Ausgabe für unterschiedlich positionierte Zahlenzeichen „5“ zu liefern. Die Versorgung einer Max-Pooling-Einheit mit diesen Ausgaben führt zu einer großen Ausgabe für jedes der unterschiedlich positionierten Zahlenzeichen „5“. Basierend auf das Label „5“ kann das Modell darauf trainiert werden, das Zahlenzeichen „5“ zu erkennen, das von seiner Position abhängt.
Convolution Block
Nichtlineare Aktivierungsfunktion
Die Ausgabe jeder Convolution Unit durchläuft normalerweise eine nichtlineare Aktivierungsfunktion (nonlinear activation function), bevor sie zur Einheit der Pooling Layer (Pooling Unit) gelangt. Die nichtlineare Aktivierungsfunktion führt zumindest annähernd eine Abbildung eines bestimmten Eingabebereichs auf einen Ausgabewert (z.B. 0 oder 1) durch. Dies kann so gesehen werden, dass einige Eingabewerte gezwungen werden, sich einem vordefinierten Ausgabewert anzunähern, wodurch im Wesentlichen eine Polarisierung oder Detektorfunktionalität (detection functionality) realisiert wird. Eine der am häufigsten verwendeten nichtlinearen Aktivierungsfunktionen in CNN ist die Rectified Linear Unit, .
Zusammensetzung eines Convolution Blocks
Ein typischer Convolution Block besteht aus drei Komponenten, in der folgenden Reihenfolge.
- Convolutional Layer
- Detektor Layer (=Nichtlineare Aktivierungsfunktion)
- Pooling Layer
In Diagrammen von CNN-Architekturen werden die Nichtlineare Aktivierungsfunktion oft mit Convolutional Layer zusammen in einem gemeinsamen rechteckigen Box dargestellt. In der sogenannten komplexen Layer-Terminologie werden die drei Komponenten als „Stages“ genannt und die Komponente zusammen als Convolutional Layer.
Weitere typische Layers eines CNNs
Flatten Layer
Die Flatten Layer wird benötigt, um die Ausgabenwerten in 2D-Matrixform in einen Vektor umzuwandeln, der die Einspeisung in die Dense Layer ermöglicht. Diese Layer hat keine Parameter zu trainieren.
Dense Layer
Die Dense Layer (dichte Schicht) ist eine Fully-Connected Layer (vollständig verbundene Schicht), also jede ihrer Einheiten mit der Ausgaben aller Einheiten der vorherigen Layer verbunden ist. Die Dense Layer lernt, die Features auf hohem Abstraktionsniveau aus den Convolution Blocks zu kombinieren, um die Klassifizierungsaufgabe zu erfüllen.
Dropout layer
Die Dropout Layer realisiert eine so genannte Regularisierungstechnik (regularization technique), um die Overfitting zu reduzieren. Sie wendet Dropout an, bei dem die Ausgabe zufällig ausgewählter Einheiten in jeder Trainingsphase auf Null gesetzt wird. Dies führt zu einem zufällig unterschiedlichen Menge aktiver Neuralen Einheiten in jeder Trainingsphase, was das Netzwerk dazu anregt, weniger empfindlich auf die Gewichte bestimmter Neuralen Einheiten zu reagieren und so zu einer höheren Generalisierungsfähigkeit führt.
Output layer
Die Output Layer hat so viele Einheiten wie die Anzahl der Klassen in der Klassifizierungsaufgabe. Bei Klassifizierungsaufgaben mit mehreren Klassen besteht sie nur aus einer Softmax Funktion, die die Ausgabe der vorherigen Ebene in Wahrscheinlichkeiten der einzelnen Klassen umwandelt. Das Ergebnis der Klassifizierungsaufgabe, d. h. die vorhergesagte Klasse, ist dann derjenige mit der höchsten Wahrscheinlichkeit.
Convolution in der Praxis
Normalerweise wendet ein CNN viele Convolution an, um mehr Features extrahieren zu können. Um die Effizienz des Trainings zu erhalten, wird dieses als Parallelrechnung (parallel computation), z.B. durch Ausnützung der Parallelrechner-Fähigkeiten einer Grafikkarte implementiert.
Convolution on grid of vectors
Bisher wurde das Eingabebild (input image) als Raster realer Werte behandelt. In der Praxis handelt es sich bei der Eingabe eines CNN jedoch eher um ein Gitter von Vektoren (grid of vectors). Beispielsweise wird jedes Pixel eines Farbbildes durch ein Vektor der Dimension 3 beschrieben, die die Intensitäten von Rot, Grün und Blau beschreiben.
Zero Padding
Die Darstellung der Convolution durch Verschieben des Kernelfensters zeigt sofort, dass die Convolution mit der Kernelbreite (kernel width) dazu führt, dass die Ausgabebreite(output width) mit schrumpft. Dies kann vermieden werden, indem vor und nach jeder Eingabezeile einige Nullen hinzugefügt werden. Dies wird als Zero Padding (Nullauffüllung) bezeichnet. Zero Padding ermöglicht die unabhängige Steuerung der Ausgabegröße und Kernelbreite. Hier betrachten wir drei Sonderfälle der Zero Padding. Sie werden in der MATLAB-Terminologie als
- gültige Convolution (valid convolution),
- gleiche Convolution (same convolution) und
- vollständige Convolution (full convolution)
bezeichnet.
Bei einer gültigen Convolution gibt es keine Zero Padding. Es sind nur die Positionen des Kernelfensters erlaubt, an denen es vollständig im Bild enthalten ist. Somit schrumpft die Ausgabebreite bei Anwenden von jedem Convolution Layer, was die Anzahl der anwendbaren Convolution Layer begrenzt. Bei gleicher Convolution werden der Eingabe so viele Nullen hinzugefügt, womit die Ausgabe die gleiche Breite wie die Breite der Eingabe kommt. Dies bedeutet, dass zu jeder Zeile der Eingabe genau Nullen hinzugefügt werden. Normalerweise werden diese Nullen vor dem linken und nach dem rechten Rand des Eingabegitters geteilt, was bedeutet, dass die Pixel am Rand des Eingabegitters Einfluss auf weniger Ausgabepixel haben als diejenigen, die sich innerhalb des Eingabegitters befinden. Die Vermeidung dieses Unterschieds motiviert die vollständige Convolution, bei der der Eingabe so viele Nullen hinzugefügt werden, dass ausreicht, um auch die Pixel am Rand des Eingabegitters -mal zu besuchen. Dies wird erreicht, indem Nullen sowohl vor dem linken als auch nach dem rechten Rand des Eingabegitters hinzugefügt werden. Dies führt jedoch dazu, dass die Ausgabe breiter wird, d. h. die Ausgabegröße wird um größer als die Eingabegröße. Die verschiedenen Sonderfälle des Zero Padding sind in Abbildung 40 dargestellt.
CNN Beispielarchitekturen für die Bildklassifizierung
Eine einfache Musterarchitektur
Eine einfache Beispielarchitektur für die Bildklassifizierung ist in Abbildung 41 dargestellt.
In der ersten Convolution Stage wird 16 parallele Convolution angewendet, um die Extraktion komplexerer lokaler Features und/oder das Erlernen von Invarianzen zu ermöglichen. Diese Beispielarchitektur zeigt die Positionierung der typische Layers in einer CNN-Architektur.
Einige bekannte CNN-Architekturen
Nachstehed sind einige bekannte CNN-Architekturen mit Links zu ihren Beschreibungen aufgeführt.
Recurrent Neural Network
Feedforward Neural Network werden durch gleichzeitige Eingabe (Input) gespeist. Im Gegensatz dazu sind Recurrent Neural Networks - RNN (rekurrentes neuronales Netzwerk) in der Lage, sequentielle Eingaben zu verarbeiten. Es eignet sich für Aufgaben, bei denen es um Eingaben mit sequentiellem Charakter geht, wie z.B. Text, gesprochene Sprache. Die sequentielle Natur der Eingabe spiegelt sich oft in ihrer zeitlichen Natur wider.
Ein Recurrent Neural Network ist ein neuronales Netzwerk, dessen Netzwerkarchitektur einen Zyklus aufweist, d. h. der Wert einer Unit in einer Layer des Netzwerks hängt von ihrer eigenen vorherigen Ausgabe als Eingabe ab. Diese Abhängigkeit ermöglicht, dass die Ausgabe des Recurrent Neural Network aufgrund seiner wiederkehrenden Verbindungen von Hunderten (theoretisch unendlich vielen) vorherigen Input Units abhängt. Diese langfristige Abhängigkeit von der Zeit ist das Novum des RNN, das neue Möglichkeiten für das Recurrent Neural Network eröffnet, beispielsweise wenn es zur Sprachmodellierung verwendet wird.
Der Zyklus in der Netzwerkarchitektur eines Recurrent Neural Network macht es leistungsstark, erschwert jedoch die Schlussfolgerung seiner Ausgabe aus seinen Eingaben und macht auch das Training des Netzwerks komplizierter.
Einfaches Recurrent Neural Network
Wir wollen uns nur mit einer eingeschränkten Unterklasse der allgemeinen Klasse Recurrent Neural Network befassen, den sogenannten Elman Networks (Elman-Netzwerken) [Elman(1990)] oder einfachen Recurrent Neural Network. Diese dient auch als Basis für weitere Architekturen von Recurrent Neural Network, wie z.B. das LSTM (siehe Unterabschnitt 4.4.4). Von nun an werden wir dieses einfache Recurrent Neural Network als Recurrent Neural Network oder RNN bezeichnen.
Wir werden den Index verwenden, um die Zeit des gegebenen Vektors darzustellen, wie z.B. repräsentiert den Eingabevektor zum Zeitpunkt oder repräsentiert den Ausgabevektor der einzigen Hidden Layer zum Zeitpunkt . Die Architektur des RNN ist in Abbildung 42 dargestellt ([Elman(1990)]).
Wie in Abb. 9.1 zu sehen ist, liegt das Wesentliche des RNN in der wiederkehrenden Verknüpfung vom Ausgang der Hidden Layer mit dem Eingang der Hidden Layer, der in der gestrichelten Linie dargestellt ist. Die Ausgabe der Hidden Layer zum vorherigen Zeitpunkt realisiert einen Speicher und kann als Kontext angesehen werden, der Informationen über die Verarbeitung früherer Eingaben kodiert. Noch wichtiger ist, dass im RNN keine Längenbeschränkung für diesen Kontext auferlegt wird. Im Prinzip kann dieser Kontext Informationen bis zum Anfang der Eingabesequenz (input sequence) erfassen.
Vorwärtsinferenz (Forward Inference)
Der Ausgabewert der Hidden Layer zum Zeitpunkt wird bei der Berechnung des Ausgabewerts der Hidden Layer zum Zeitpunkt einbezieht, indem ein neuer Satz von Gewichten darauf angewendet wird, die durch die Matrix dargestellt werden. Somit kann die zeitabhängige Berechnung des RNN wie folgt angegeben werden:
Die Aktivierungsfunktion der Output Layer ist normalerweise eine Softmax Funktion, also eine Vektorwertige Funktion. Das Hinzufügen der Zeitabhängigkeit zur Beschreibung von RNN scheint dieses Netzwerk komplexer zu machen, aber tatsächlich kann seine Berechnung durch die Einführung des Vektors auf eine Berechnung eines entprechenden Feedforward Network zurückgeführt werden. Dies ist in Abbildung 43 dargestellt.
Der sequentielle Charakter des RNN kann durch zeitliches Ausrollen hervorgehoben werden. Dies ist in Abbildung 44 dargestellt.
Training
RNN zu trainieren bedeutet, die Parameter der Gewichtsmatrizen , und zu lernen. Aufgrund der wiederkehrenden Struktur des Netzwerks sind vor der Gestaltung des Trainings folgende Überlegungen notwendig.
- Die Berechnung des Loss zum Zeitpunkt erfordert die Ausgabe der Hidden Layer zum Zeitpunkt .
- Die Ausgabe der Hidden Layer zum Zeitpunkt beeinflusst nicht nur die Ausgabe des Netzwerks zum Zeitpunkt , sondern auch die Ausgabe der Hidden Layer zum Zeitpunkt .
Die Berechnung des Fehlers am Ausgang der Hidden Layer zum Zeitpunkt erfordert die Kenntnis seiner Auswirkung auf und alle und , .
Daraus folgt, dass das Training von RNN das Ausrollen des Recurrent Neural Network in ein Feedforward Network erfordert und das Training dann auf diesem Feedforward Network auf übliche Weise durchgeführt werden kann, einschließlich der folgenden zwei Durchgänge:
- Vorwärtsinferenz, Berechnung von und und Speichern von für die Verwendung des nächsten Zeitschritts sowie die Akkumulation des Loss bei jedem Zeitschritt.
- Rückwärtsdurchlauf (backward pass), um den Fehler der Ausgabe der Hidden Layer für jeden rekursiven Rückschritt zu berechnen und zu speichern sowie den Gradient zu berechnen.
Dieser Ansatz zum Training von RNN wird als Backpropagation Through Time [Werbos(1974)] bezeichnet.
Bei Anwendungen mit längeren Eingabesequenzen, wie z.B. Streaming, Spracherkennung, muss das Ausrollen auf Segmente mit fester Länge beschränkt werden, da das Ausrollen der gesamten Eingabesequenz praktisch nicht möglich ist.
Stacked RNN
Stacked RNN (gestapeltes RNN) ist eine Erweiterung von RNN, bei der die gesamte Ausgabesequenz eines RNN als Eingabesequenz für ein nächstes RNN verwendet wird. Die Architektur des Stacked RNN ist in Abbildung 45 dargestellt.
Stacked RNNs haben im Allgemeinen höhere Fähigkeiten als ein RNN. Dies liegt daran, dass allgemein davon ausgegangen wird, dass jede Layer eine andere Abstraktionsebene einführt. Allerdings steigt der Zeit- und Ressourcenbedarf des Trainings mit der Anzahl der Layer schnell an. Die optimale Anzahl der Layer hängt von den Anforderungen der Anwendung ab.
Bidirektionales RNN
Die Idee des bidirektionalen RNN [SchusterPaliwal(1997)] besteht darin, nicht nur die Kontextinformationen aus dem linken Teil der Folge von Eingabevektoren (linker Kontext), sondern auch aus dem rechten Teil davon zu verwenden. In Anwendungen, in denen die Sequenz keine Zeit darstellt und die gesamte Eingabesequenz verfügbar ist, ist diese Architektur sinnvoll. Es stellt sicher, dass Kontokontextinformationen nicht nur von links, sondern auch von rechts genutzt werden, was z. B. die Leistung der Klassifizierungsaufgabe verbessert.
Im RNN repräsentiert die Ausgabe der Hidden Layer zum Zeitpunkt die Kontextinformationen aus dem linken Teil der Folge von Eingabevektoren. Dies kann als Vorwärts-RNN angesehen werden, da die Hidden Layer die Informationen über die Eingabevektoren von links nach rechts weitergibt. Ein ähnlicher Rückwärts-RNN kann eingerichtet werden, dessen Hidden Layer die Informationen über die Eingabevektoren von rechts nach links weitergibt. Somit können die Ausgabevektoren der Vorwärts- und Rückwärts-RNNs, als Hidden Layers, zum Zeitpunkt , und als
Dann werden die gesamten Zustands- oder Kontextinformationen zum Zeitpunkt zusammengestellt, indem sowohl die linken als auch die rechten Kontextinformationen kombiniert werden. Dies geschieht durch die Kombination der Vektoren und , die die linken und die rechten Kontextinformationen darstellen. Mögliche Kombinationsvarianten sind Verkettung (concatenation), Multiplikation oder elementweise Addition. Beispielsweise kann durch Anwenden der Verkettung der Vektor , der die gesamten Kontextinformationen darstellt, als
Das LSTM
Eine Einschränkung von RNN besteht darin, dass es für Aufgaben, bei denen Informationen berücksichtigt werden müssen, die weit vom aktuellen Index entfernt sind, nicht effektiv ist. Der Grund dafür ist, dass die in kodierten Informationen eher lokal sind und somit den Einfluss näherer Teile der Eingabesequenz widerspiegeln.
Um dieses Problem zu lösen, wurden kompliziertere RNN-Architekturen entworfen, die explizit diejenige Informationsteile steuern, die vergessen beziehungsweise für die zukünftige Verwendung gespeichert werden sollen, und diese Steuerung dynamisch über die Zeit durchführen. Eine solche RNN-Architektur ist das neuronale Netzwerk Long Short-Term Memory (LSTM)
Das LSTM wird als Hidden Unit realisiert. Es führt zu jedem Zeitpunkt , einen Kontextvektor, , ein. Der Kontextvektor wird zur Maskierung bei der Berechnung der tatsächlichen Ausgabe der Hidden Unit zum Zeitpunkt , verwendet. Andererseits wird der Kontextvektor bei jedem Zeitschritt aktualisiert, d. h. wird aus berechnet. Während dieses Updates wird
- ein Teil des Kontextvektors durch Maskierung mit dem Forget Gate gelöscht (welches Fehler beim Parsen (MathML mit SVG- oder PNG-Rückgriff (empfohlen für moderne Browser und Barrierefreiheitswerkzeuge): Ungültige Antwort („Math extension cannot connect to Restbase.“) von Server „https://wikimedia.org/api/rest_v1/“:): {\textstyle {\bf k}_{ t}} resultiert) und
- ein Teil der eigentlichen Information , die aus und wie üblich extrahiert, wird durch Maskierung mit dem Add Gate bewahrt (welches resultiert) und
- die Summe von und gebildet um den aktualisierten Kontextvektor anzugeben.
Die elementweise Multiplikation (auch als Hadamard-Produkt von Vektoren bezeichnet) wird mit bezeichnet, und die Sigmoid Aktivierungsfunktionen werden zur Realisierung der Funktionalität der Maskierung verwendet. Das Sigmoid wird aufgrund seiner Eigenschaft ausgewählt, indem seine Eingabe entweder in Richtung oder zu werfen. Genauer gesagt werden die oben genannten Vektoren, wie folgt, berechnet.
- Löschen eines Teils von durch Maskieren mit dem Forget Gate
- Extrahieren der tatsächlichen Informationen aus und sowie Bewahren eines Teils davon durch Maskieren mit das Add Gate
- Zusammenstellen des aktualisierten Kontextvektors durch Summieren von und
- Berechnen von auf übliche Weise aus und sowie erstellen den Ausgabevektor der Hidden Unit durch Maskieren von mit dem tatsächlichen Kontextvektor
Die gesamte Berechnung der neuronalen LSTM-Einheit ist in Abbildung 47 dargestellt.
Der Vergleich der Eingabe- und Ausgabeschnittstellen der neuronalen Einheiten FNN, RNN und LSTM ist in Abbildung 48 zu sehen.