Neuronale Netze und PyTorch

Ähnliche Dokumente
Rekurrente Neuronale Netze

Neural Networks: Architectures and Applications for NLP

Wissensentdeckung in Datenbanken

Grundlagen zu neuronalen Netzen. Kristina Tesch

Rekurrente Neuronale Netzwerke

Konzepte der AI Neuronale Netze

Wissensentdeckung in Datenbanken

6.2 Feed-Forward Netze

Neuronale Netze in der Phonetik: Feed-Forward Netze. Pfitzinger, Reichel IPSK, LMU München {hpt 14.

Neural Networks: Architectures and Applications for NLP

Neuronale Netze. Anna Wallner. 15. Mai 2007

Rekurrente / rückgekoppelte neuronale Netzwerke

Training von RBF-Netzen. Rudolf Kruse Neuronale Netze 134

Wir haben in den vorherigen Kapiteln verschiedene Verfahren zur Regression und Klassifikation kennengelernt (z.b. lineare Regression, SVMs)

Skipgram (Word2Vec): Praktische Implementierung

Hannah Wester Juan Jose Gonzalez

Neuronale Netze. Automatische Hinderniserkennung Paul Fritsche

Maschinelles Lernen: Neuronale Netze. Ideen der Informatik

Künstliche Neuronale Netze

Universität Leipzig. Fakultät für Mathematik und Informatik. Forschungsseminar Deep Learning. Prof. Dr. Erhard Rahm. Wintersemester 2017/18

TensorFlow Open-Source Bibliothek für maschinelles Lernen. Matthias Täschner Seminar Deep Learning WS1718 Abteilung Datenbanken Universität Leipzig

Neuronale Netze. Christian Böhm.

KLAUSUR ZUM BACHELORMODUL PROBEKLAUSUR COMPUTERLINGUISTISCHE ANWENDUNGEN PROBEKLAUSUR, DR. BENJAMIN ROTH KLAUSUR AM

Allgemeine (Künstliche) Neuronale Netze. Rudolf Kruse Neuronale Netze 40

Maschinelles Lernen: Neuronale Netze. Ideen der Informatik Kurt Mehlhorn

Radiale-Basisfunktionen-Netze. Rudolf Kruse Neuronale Netze 120

Einführung in die Computerlinguistik

Wortähnlichkeit: Praktische Implementierung

Neuronale Netze Aufgaben 3

Statistical Learning

Einfaches Framework für Neuronale Netze

kurze Wiederholung der letzten Stunde: Neuronale Netze Dipl.-Inform. Martin Lösch (0721) Dipl.-Inform.

6.4 Neuronale Netze zur Verarbeitung von Zeitreihen

Mustererkennung: Neuronale Netze. D. Schlesinger ()Mustererkennung: Neuronale Netze 1 / 12

Thema 3: Radiale Basisfunktionen und RBF- Netze

Grundlagen neuronaler Netzwerke

Wir haben in den vorherigen Kapiteln verschiedene Verfahren zur Regression und Klassifikation kennengelernt (z.b. lineare Regression, SVMs)

(hoffentlich kurze) Einführung: Neuronale Netze. Dipl.-Inform. Martin Lösch. (0721) Dipl.-Inform.

Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation. Yupeng Guo

Schwellenwertelemente. Rudolf Kruse Neuronale Netze 8

Reinforcement Learning

Maschinelles Lernen: Neuronale Netze. Ideen der Informatik Kurt Mehlhorn

Neuronale Netze mit mehreren Schichten

Künstliche neuronale Netze

Maschinelles Lernen: Neuronale Netze. Ideen der Informatik Kurt Mehlhorn

Weitere Untersuchungen hinsichtlich der Anwendung von KNN für Solvency 2. Tom Schelthoff

Neuronale Netze. Einführung i.d. Wissensverarbeitung 2 VO UE SS Institut für Signalverarbeitung und Sprachkommunikation

Robust Named Entity Recognition (NER) in Idiosyncratic Domains. Eine automatische Identifikation und Klassifikation von Eigennamen

Lineare Klassifikatoren. Volker Tresp

Lernende Vektorquantisierung

Neuronale Netze. Prof. Dr. Rudolf Kruse

Leipziger Institut für Informatik. Wintersemester Seminararbeit. im Studiengang Informatik der Universität Leipzig

WiMa-Praktikum 1. Woche 8

Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik. 8. Aufgabenblatt

Adaptive Systeme. Mehrere Neuronen, Assoziative Speicher und Mustererkennung. Prof. Dr. rer. nat. Nikolaus Wulff

So lösen Sie das multivariate lineare Regressionsproblem von Christian Herta

kurze Wiederholung der letzten Stunde: Neuronale Netze Dipl.-Inform. Martin Lösch (0721) Dipl.-Inform.

Softwareprojektpraktikum Maschinelle Übersetzung Grundlagen Neuronaler Netze und mxnet

DEEP LEARNING MACHINE LEARNING WITH DEEP NEURAL NETWORKS 8. NOVEMBER 2016, SEBASTIAN LEMBCKE

Neuronale Netze. Einführung i.d. Wissensverarbeitung 2 VO UE SS Institut für Signalverarbeitung und Sprachkommunikation

Universität des Saarlandes

Was bisher geschah Künstliche Neuronen: Mathematisches Modell und Funktionen: Eingabe-, Aktivierungs- Ausgabefunktion Boolesche oder reelle Ein-und

Neuronale Netzwerke. Neuronale Netzwerke 1 / 147

Neuronale. Netze. Henrik Voigt. Neuronale. Netze in der Biologie Aufbau Funktion. Neuronale. Aufbau Netzarten und Topologien

Künstliche Neuronale Netze

Der Backpropagation-Algorithmus als Beispiel für Lernalgorithmen künstlicher neuronaler Netze Reinhard Eck 1

Proseminar Machine Learning. Neuronale Netze: mehrschichtige Perzeptrone. Christina Schmiedl Betreuer: Christian Spieth, Andreas Dräger

Nichtlineare Klassifikatoren

Softwareprojektpraktikum Maschinelle Übersetzung Feedforward Modell und Praktische Anmerkungen (zum Training und mxnet)

Neural Networks. mit. Tools für Computerlinguist/innen

Theoretische Informatik 1

Computational Intelligence 1 / 20. Computational Intelligence Künstliche Neuronale Netze Perzeptron 3 / 20

Faltungsnetzwerke. (Convolutional Neural Networks) Maximilian Schmidt. Faltungsnetzwerke

11. Neuronale Netze 1

Seminar K nowledge Engineering und L ernen in Spielen

Neuronale Netze (Konnektionismus) Einführung in die KI. Beispiel-Aufgabe: Schrifterkennung. Biologisches Vorbild. Neuronale Netze.

Neuronale Netze. Gehirn: ca Neuronen. stark vernetzt. Schaltzeit ca. 1 ms (relativ langsam, vgl. Prozessor)

Vorlesung Maschinelles Lernen

Lineare Regression. Volker Tresp

Praktische Optimierung

10. Neuronale Netze 1

oder A = (a ij ), A =

Neuronale Netze (Konnektionismus)

Neural Networks: Architectures and Applications for NLP

Das Modell: Nichtlineare Merkmalsextraktion (Preprozessing) + Lineare Klassifikation

Seminararbeit über Visuelles Lernen Arithmetischer Operationen

Reranking. Parse Reranking. Helmut Schmid. Institut für maschinelle Sprachverarbeitung Universität Stuttgart

Schriftlicher Test Teilklausur 2

Neuronale Netze. Prof. Dr. Rudolf Kruse Christoph Doell, M.Sc.

Logistische Regression

Perzeptronen. Lehrstuhl für Künstliche Intelligenz Institut für Informatik Friedrich-Alexander-Universität Erlangen-Nürnberg

10. Neuronale Netze 1

Lineare Regression. Christian Herta. Oktober, Problemstellung Kostenfunktion Gradientenabstiegsverfahren

Hopfield-Netze. Rudolf Kruse Neuronale Netze 192

Schriftlicher Test Teilklausur 2

Neuronale Netze. Prof. Dr. Rudolf Kruse

Einführung in NLP mit Deep Learning

Aufgabe 1 Probabilistische Inferenz

Neuronale Netze. Volker Tresp

Transkript:

Neuronale Netze und PyTorch Helmut Schmid Centrum für Informations- und Sprachverarbeitung Ludwig-Maximilians-Universität München Stand: 9. April 2018 Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 1 / 38

Lernen von Repräsentationen Conditional Random Fields und andere Modelle mit log-linearen Klassifikatoren arbeiten mit einer manuell definierten Menge von Merkmalen Gute Merkmale zu finden ist schwierig. Die gefundene Menge ist selten optimal. Die Suche muss wiederholt werden, wenn sich die Aufgabe ändert. Könnte man die Merkmale automatisch lernen? Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 2 / 38

Von log-linearen Modellen zu neuronalen Netzen grafische Darstellung eines log-linearen Modelles w1 c1 c2 c3 f1 f2 f3 f4 w2 w3 w4 w5 Klassen: c1, c2, c3 Merkmale: f1, f2, f3, f4 Eingabewörter: w1, w2, w3, w4, w5 Jedes Merkmal f k wird aus w 5 1 berechnet Jede Klasse c k wird aus f 4 1 berechnet mit c k = 1 Z e i θ ki f i = softmax ( i θ kif i ) Anmerkung: Hier sind die Merkmale unabhängig von den Klassen. Stattdessen gibt es für jedes Merkmal klassenspezifische Gewichte. Idee: Die Merkmale f i werden analog zu den Klassen c i berechnet/gelernt: ( ) f k = act θ ki w i = act(net k ) neuronales Netz i Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 3 / 38

Von log-linearen Modellen zu neuronalen Netzen grafische Darstellung eines log-linearen Modelles w1 c1 c2 c3 f1 f2 f3 f4 w2 w3 w4 w5 Klassen: c1, c2, c3 Merkmale: f1, f2, f3, f4 Eingabewörter: w1, w2, w3, w4, w5 Jedes Merkmal f k wird aus w 5 1 berechnet Jede Klasse c k wird aus f 4 1 berechnet mit c k = 1 Z e i θ ki f i = softmax ( i θ kif i ) Anmerkung: Hier sind die Merkmale unabhängig von den Klassen. Stattdessen gibt es für jedes Merkmal klassenspezifische Gewichte. Idee: Die Merkmale f i werden analog zu den Klassen c i berechnet/gelernt: ( ) f k = act θ ki w i = act(net k ) neuronales Netz i Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 3 / 38

Embeddings ( ) f k = act θ ki w i Die Eingabe w i muss eine numerische Repräsentation des Wortes sein. Möglichkeiten 1 binärer Vektor (1-hot-Repräsentation) Beispiel: wi hot = (0 0 0 0 0 0 0 0 1 0 0 0 0 0) Dimension = Vokabulargröße Alle Wörter sind sich gleich ähnlich/unähnlich 2 reeller Vektor (verteilte Repräsentation, distributed representation) Beispiel: w dist i = (3.275, -7.295, 0.174, 5.7332) Vektorlänge beliebig wählbar Ziel: Ähnliche Wörter durch ähnliche Vektoren repräsentieren i Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 4 / 38

Embeddings ( ) f k = act θ ki w i Die Eingabe w i muss eine numerische Repräsentation des Wortes sein. Möglichkeiten 1 binärer Vektor (1-hot-Repräsentation) Beispiel: wi hot = (0 0 0 0 0 0 0 0 1 0 0 0 0 0) Dimension = Vokabulargröße Alle Wörter sind sich gleich ähnlich/unähnlich 2 reeller Vektor (verteilte Repräsentation, distributed representation) Beispiel: w dist i = (3.275, -7.295, 0.174, 5.7332) Vektorlänge beliebig wählbar Ziel: Ähnliche Wörter durch ähnliche Vektoren repräsentieren i Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 4 / 38

Embeddings ( ) f k = act θ ki w i Die Eingabe w i muss eine numerische Repräsentation des Wortes sein. Möglichkeiten 1 binärer Vektor (1-hot-Repräsentation) Beispiel: wi hot = (0 0 0 0 0 0 0 0 1 0 0 0 0 0) Dimension = Vokabulargröße Alle Wörter sind sich gleich ähnlich/unähnlich 2 reeller Vektor (verteilte Repräsentation, distributed representation) Beispiel: w dist i = (3.275, -7.295, 0.174, 5.7332) Vektorlänge beliebig wählbar Ziel: Ähnliche Wörter durch ähnliche Vektoren repräsentieren i Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 4 / 38

Embeddings Wir können die 1-hot-Repräsentation in einem neuronalen Netz auf die verteilte Repräsentation (Embedding) abbilden: Embedding w1 w2 w3 w4 w5 1 hot Da nur ein 1-hot-Neuron den Wert 1 und alle anderen den Wert 0 haben, ist die verteilte Repräsentation identisch zu den Gewichten des aktiven Neurons. (Die Aktivierungsfunktion ist hier die Identität act(x) = x) Die Embeddings werden dann ebenfalls im Training gelernt. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 5 / 38

Lookup-Tabelle Wir können die verteilten Repräsentationen der Wörter zu einer Matrix L (Embedding-Matrix, Lookup-Tabelle) zusammenfassen. Multiplikation eines 1-hot-Vektors mit dieser Matrix liefert die verteilte Repräsentation. Matrix-Vektor-Multiplikation: w dist = Lw hot 0 0 1 0 0 w hot L 3.3 8.5 7.3 1.9-7.7 4.8 5.1 4.7-5.3 3.1-8.6 8.7 9.5 3.5 5.6 6.9 6.4-4.3 5.7 3.3 7.7 6.7-8.2 9.7-9.1 7.3 4.7 9.5-4.3-8.2 w dist Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 6 / 38

Aktivierungsfunktionen Neuron: ( ) f k = act θ ki w i = act(net k ) i In der Ausgabeebene eines neuronalen Netzes wird (wie bei log-linearen Modellen) oft die Softmax-Aktivierungsfunktion verwendet. c k = softmax(net k ) = 1 Z enet k mit Z = k e net k Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 7 / 38

Spezialfall: 2 Klassen SoftMax: c k = 1 Z enet k mit net k = i θ ki f i = θ T k f = θ k f Im Falle von zwei Klassen c 1 und c 2 ergibt sich: c 1 = = e θ 1 f e θ 1 f e θ1 f + e θ 2 f e θ 1 f 1 1 + e (θ 1 θ 2 ) f Nach einer Umparametrisierung erhalten wir die Sigmoid-Funktion c 1 = 1 1 + e θf mit θ = θ 1 θ 2 c 2 = 1 c 1 Bei 2-Klassen-Problemen genügt ein Neuron. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 8 / 38

Sigmoid-Funktion Die Sigmoid-Funktion wird häufig als Aktivierungsfunktion der Neuronen in den versteckten Ebenen (hidden layers) genommen. σ(x) = 1 1 + e x Man könnte also sagen, dass die versteckten Neuronen die Wahrscheinlichkeiten von binären Merkmalen berechnen. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 9 / 38

Verschiedene Aktivierungsfunktionen sigmoid: σ(x) = 1 1+e x = ex 1+e x tanh: tanh(x) = ex e x e x +e x = 2σ(2x) 1 ReLU: ReLU(x) = max(0, x) Softplus: softplus(x) = ln(1 + e x ) Der Tangens Hyperbolicus tanh: skalierte und verschobene Sigmoidfunktion, oft besser als Sigmoidfunktion, liefert 0 als Ausgabe, wenn alle Eingaben 0 sind ReLUs (rectified linear units): einfach zu berechnen, bei 0 nicht differenzierbar. Softplus ist eine überall differenzierbare Annäherung an ReLU. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 10 / 38

Ableitungen der Aktivierungsfunktionen sigmoid: σ(x) = 1 1+e x = ex 1+e x σ (x) = σ(x)(1 σ(x)) tanh: tanh(x) = ex e x e x +e x = 2σ(2x) 1 tanh (x) = 1 tanh(x) 2 ReLU: ReLU(x) = max(0, x) { 1 falls x > 0 ReLU (x) = 0 falls x < 0 Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 11 / 38

Warum ist die Aktivierungsfunktion wichtig? Ohne (bzw. mit linearer) Aktivierungsfunktion gilt: Jede Ebene eines neuronalen Netzes führt eine lineare Transformation der Eingabe durch (= Multiplikation mit einer Matrix). Eine Folge von linearen Transformationen kann aber immer durch eine einzige lineare Transformation ersetzt werden. Jedes mehrstufige neuronale Netz mit linearer Aktivierungsfunktion kann durch ein äquivalentes einstufiges Netz ersetzt werden. Mehrstufige Netze machen also nur Sinn, wenn nicht-lineare Aktivierungsfunktionen verwendet werden. Ausnahme: Embedding-Schicht mit gekoppelten Parametern Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 12 / 38

Neuronale Netze Die Aktivierung a k eines Neurons ist gleich der Summe der gewichteten Eingaben e i moduliert durch eine Aktivierungsfunktion act. a k = act( i w ik e i + b k ) Der zusätzliche Biasterm b k ermöglicht, dass bei einem Nullvektor als Eingabe die Ausgabe nicht-null ist. Vektorschreibweise a k = act ( w k T e + b k ) Matrixschreibweise a = act (W e + b) Summe Aktivierungs funktion wobei act elementweise angewendet wird: act([z 1, z 2, z 3 ]) = [act(z 1 ), act(z 2 ), act(z 3 )] trainierbare Parameter: W, b Eingaben f Ausgabe Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 13 / 38

Training von neuronalen Netzen Neuronale Netzwerke werden (ähnlich wie CRFs) trainiert, indem eine Zielfunktion, welche die Qualität der aktuellen Ausgabe misst, optimiert (d.h. minimiert oder maximiert) wird. Die Optimierung erfolgt mit stochastischem Gradientenabstieg oder -anstieg. Dazu wird die Ableitung der Zielfunktion nach den Netzwerkparametern (Gewichte und Biaswerte) berechnet, mit der Lernrate multipliziert und zu den Parametern addiert (Gradientenanstieg) bzw. davon subtrahiert (Gradientenabstieg). Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 14 / 38

Zielfunktionen Die verwendeten Ausgabefunktionen und zu optimierenden Kostenfunktionen hängen von der Aufgabe ab. Regression: Ein Ausgabeneuron, welches einen Zahl liefert Beispiel: Vorhersage der Restlebenszeit eines Patienten in Abhängigkeit von verschiedenen Faktoren wie Alter, Blutdruck, Rauch- und Essgewohnheiten, Sportaktivitäten etc. Aktivierungsfunktion der Ausgabeneuronen: o = act(x) = e x Kostenfunktion: (y o) 2 quadrierter Abstand zwischen gewünschter Ausgabe y und tatsächlicher Ausgabe o Klassifikation: n mögliche disjunkte Ausgabeklassen repräsentiert durch je ein Ausgabeneuron Beispiel: Diagnose der Krankheit eines Patienten anhand der Symptome Aktivierungsfunktion der Ausgabeneuronen: o = softmax(x) Kostenfunktion: log(y T o) (Loglikelihood, Crossentropie) Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 15 / 38

Zielfunktionen Die verwendeten Ausgabefunktionen und zu optimierenden Kostenfunktionen hängen von der Aufgabe ab. Regression: Ein Ausgabeneuron, welches einen Zahl liefert Beispiel: Vorhersage der Restlebenszeit eines Patienten in Abhängigkeit von verschiedenen Faktoren wie Alter, Blutdruck, Rauch- und Essgewohnheiten, Sportaktivitäten etc. Aktivierungsfunktion der Ausgabeneuronen: o = act(x) = e x Kostenfunktion: (y o) 2 quadrierter Abstand zwischen gewünschter Ausgabe y und tatsächlicher Ausgabe o Klassifikation: n mögliche disjunkte Ausgabeklassen repräsentiert durch je ein Ausgabeneuron Beispiel: Diagnose der Krankheit eines Patienten anhand der Symptome Aktivierungsfunktion der Ausgabeneuronen: o = softmax(x) Kostenfunktion: log(y T o) (Loglikelihood, Crossentropie) Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 15 / 38

Deep Learning Neuronale Netze mit mehreren versteckten Ebenen nennt man tiefe Netze Deep Learning. Bei der Anwendung eines neuronalen Netzes werden die Eingabewerte x über die Neuronen der versteckten Ebenen h 1,..., h 3 bis zur Ausgabeebene h 4 propagiert. Je höher die versteckte Ebene, desto komplexer sind die darin repräsentierten Merkmale. Im Training werden alle Parameter (Gewichte, Biases) gleichzeitig optimiert. Dazu wird der Gradient der Zielfunktion an den Ausgabeneuronen berechnet und bis zu den Eingabeneuronen zurückpropagiert. Backpropagation Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 16 / 38

Arbeitsweise eines neuronalen Netzes Forward-Schritt: Die Aktivierung der Eingabeneuronen wird über die Neuronen der versteckten Ebenen zu den Neuronen der Ausgabeebene propagiert. Backward-Schritt: Im Training wird anschließend der Gradient einer zu optimierenden Zielfunktion an den Ausgabeneuronen berechnet und zu den Eingabeneuronen zurückpropagiert. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 17 / 38

Forward-Propagation Ein neuronales Netz mit Eingabevektor x, verstecktem Vektor h und skalarem Ausgabewert o kann wie folgt definiert werden: o 1 o 2 o 3 o 4 W ho h 1 h 2 h 3 h 4 h() = tanh(w hx x + b h ) o() = softmax(w oh h + b o ) = softmax(w oh tanh(w hx x + b h ) + b o ) Das Training maximiert die Log-Likelihood der Daten x 1 x 2 x 3 x 4 W xh LL(x, y) = log(y T o) = log(y T softmax(w oh tanh(w hx x + b h ) + b o )) y repräsentiert die gewünschte Ausgabe als 1-hot-Vektor Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 18 / 38

Backward-Propagation Für die Parameteroptimierung müssen die Ableitungen des Ausdruckes LL(x, y) = log(y T softmax(w oh tanh(w hx x + b h ) + b o )) bzgl.der Parameter W hx, b h, W oh und b o berechnet werden. Am besten benutzt man dazu automatische Differentiation anschließend Anpassung der Parameter θ mit Gradientenanstieg: θ t+1 = θ t + η LL θt Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 19 / 38

Backward-Propagation Für die Parameteroptimierung müssen die Ableitungen des Ausdruckes LL(x, y) = log(y T softmax(w oh tanh(w hx x + b h ) + b o )) bzgl.der Parameter W hx, b h, W oh und b o berechnet werden. Am besten benutzt man dazu automatische Differentiation anschließend Anpassung der Parameter θ mit Gradientenanstieg: θ t+1 = θ t + η LL θt Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 19 / 38

Einfaches neuronales Netz für Wortart-Annotation Embeddings Ausgabeebene versteckte Ebene o t = softmax(w oh h t ) h t = tanh(w he e t 2 e t 1 e t e t+1 e t+2 ) e t = Lw t 1 hot Vektoren Lange galt die Bank als vorbildlich Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 20 / 38

Numpy Python-Bibliothek für numerische Aufgaben Datentypen: Skalare, Vektoren, Matrizen und Tensoren viele Operatoren (z.b. Matrixprodukte) effiziente C-Implementierungen der Operatoren Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 21 / 38

Programmierung von neuronalen Netzen PyTorch Python-Bibliothek für neuronale Netze und andere komplexe mathematische Funktionen Syntax ähnelt Numpy automatisches Differenzieren von Funktionen ( NN-Training) GPU-Unterstützung Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 22 / 38

PyTorch-Beispiel import torch from torch.autograd import Variable import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def init (self): super(net, self). init () # 1 input channel, 6 output channels, 5x5 convolution # kernel self.conv1 = nn.conv2d(1, 6, 5) self.conv2 = nn.conv2d(6, 16, 5) # an affine operation: y = Wx + b self.fc1 = nn.linear(16 * 5 * 5, 120) self.fc2 = nn.linear(120, 84) self.fc3 = nn.linear(84, 10) Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 23 / 38

PyTorch-Beispiel (Forts.) class Net(nn.Module):... def forward(self, x): # Max pooling over a (2, 2) window x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) # If the size is a square you can only specify a single number x = F.max_pool2d(F.relu(self.conv2(x)), 2) x = x.view(-1, self.num_flat_features(x)) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x def num_flat_features(self, x): size = x.size()[1:] # all dimensions except the batch dimension num_features = 1 for s in size: num_features *= s return num_features Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 24 / 38

PyTorch-Beispiel (Forts.) net = Net() criterion = nn.mseloss() optimizer = optim.sgd(net.parameters(), lr=0.01) input = Variable(torch.randn(1, 1, 32, 32)) output = net(input) # calls the forward method target = Variable(torch.arange(1, 11)) # a dummy target, for example target = target.view(1, -1) # add a batch dimension net.zero_grad() # do not accumulate gradients loss = criterion(output, target) loss.backward() # backpropagation optimizer.step() Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 25 / 38

Batchverarbeitung Die vordefinierten PyTorch-NN-Module erwarten eine Folge von Trainingsbeispielen (Minibatch) als Eingabe. Die Minibatch-Verarbeitung lastet die GPU besser aus. Wenn auf Sätzen trainiert wird, müssen alle Sätze dieselbe Länge haben, damit sie zu einer Matrix zusammengefasst werden können. Kürzere Sätze müssen daher mit Dummysymbolen aufgefüllt werden (Padding) Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 26 / 38

Einfaches neuronales Netz für Wortart-Annotation Embeddings Ausgabeebene versteckte Ebene o t = softmax(w oh h t ) e t 2 e t 1 h t = tanh(w he e t e t+1 ) e t+2 e t = Lw t 1 hot Vektoren Lange galt die Bank als vorbildlich Feedforward -Netze haben ein beschränktes Eingabefenster und können daher keine langen Abhängigkeiten erfassen. rekurrente Netze Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 27 / 38

Einfaches neuronales Netz für Wortart-Annotation Embeddings Ausgabeebene versteckte Ebene o t = softmax(w oh h t ) e t 2 e t 1 h t = tanh(w he e t e t+1 ) e t+2 e t = Lw t 1 hot Vektoren Lange galt die Bank als vorbildlich Feedforward -Netze haben ein beschränktes Eingabefenster und können daher keine langen Abhängigkeiten erfassen. rekurrente Netze Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 27 / 38

Rekurrente Neuronale Netze http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns Ein RNN ist äquivalent zu einem sehr tiefen Feedforward-NN mit gekoppelten Gewichtsmatrizen. Das neuronale Netz lernt, relevante Information über die Vorgängerwörter im Zustand s t zu speichern. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 28 / 38

Rekurrentes neuronales Netz für Wortart-Annotation In jedem Schritt wird ein Wort x t gelesen ein neuer Hidden State s t (= Aktivierungen der versteckten Ebene) berechnet eine Wahrscheinlichkeitsverteilung über mögliche Tags ausgegeben o t (Das Netzwerk hat noch keine Information über den rechten Kontext. Dazu später mehr.) Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 29 / 38

Backpropagation Through Time (BPTT) Zum Trainieren wird das rekurrente Netz zu einem Feedforward-Netz aufgefaltet Der Gradient wird von den Ausgabeneuronen o t zu den versteckten Neuronen s t und von dort weiter zu den Eingabeneuronen x t und den vorherigen versteckten Neuronen s t 1 propagiert (Backpropagation through time) An den versteckten Neuronen werden zwei Gradienten addiert. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 30 / 38

Verschwindender/Explodierender Gradient Das Training tiefer neuronaler Netze ist schwierig, weil der Gradient beim Zurückpropagieren meist schnell kleiner wird. http://neuralnetworksanddeeplearning.com/chap5.html Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 31 / 38

Verschwindender/Explodierender Gradient Warum wird der Gradient exponentiell kleiner mit der Zahl der Ebenen? Betrachten wir ein neuronales Netz mit 5 Ebenen und einem Neuron pro Ebene http://neuralnetworksanddeeplearning.com/chap5.html w i ist ein Gewicht, b i ein Bias, C die Kostenfunktion, a i die Aktivierung eines Neurons und z i die gewichtete Eingabe eines Neurons Der Gradient wird in jeder Ebene mit dem Ausdruck w i σ (z i ) multipliziert. Wie groß ist dieser Ausdruck? Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 32 / 38

Verschwindender/Explodierender Gradient http://neuralnetworksanddeeplearning.com/chap5.html http://whiteboard.ping.se/ MachineLearning/BackProp Wenn die Gewichte mit zufälligen Werten im Bereich [-1,1] initialisiert werden, dann gilt w i σ (z i ) < 0.25, da σ (z i ) < 0.25. Damit wird der Gradient exponentiell kleiner mit der Zahl der Ebenen. Wenn die Gewichte mit sehr großen Werten initialisiert werden, kann der Gradient auch explodieren. Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 33 / 38

Long Short Term Memory entwickelt von Sepp Hochreiter und Jürgen Schmidhuber (TUM) löst das Problem der instabilen Gradienten für rekurrente Netze Eine Speicherzelle (cell) bewahrt den Wert des letzten Zeitschritts Der Gradient wird beim Zurückpropagieren nicht mehr mit Gewichten multipliziert und bleibt über viele Zeitschritte erhalten cell 1 Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 34 / 38

Long Short Term Memory: Schaltplan http://christianherta.de/lehre/datascience/machinelearning/neuralnetworks/lstm.php Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 35 / 38

Long Short Term Memory Berechnung eines LSTMs (ohne Peephole-Verbindungen) z t = tanh(w z x t + R z h t 1 + b z ) (input activation) i t = σ(w i x t + R i h t 1 + b i ) (input gate) f t = σ(w f x t + R f h t 1 + b f ) (forget gate) o t = σ(w x x t + R o h t 1 + b o ) (output gate) c t = f t c t 1 + i t z t (cell) h t = o t tanh(c t ) (output activation) mit a b = (a 1 b 1, a 2 b 2,..., a n b n ) Die LSTM-Zellen ersetzen einfache normale Neuronen in rekurrenten Netzen. Man schreibt kurz: z = LSTM(x) Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 36 / 38

Long Short Term Memory Vorteile löst das Problem mit instabilen Gradienten exzellente Ergebnisse in vielen Einsatzbereichen Nachteile deutlich komplexer als ein normales Neuron höherer Rechenzeitbedarf Alternative Gated recurrent Units (GRU) (Cho et al.) etwas einfacher (nur 2 Gates) Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 37 / 38

Bidirektionale RNNs colah.github.io/posts/2015-09-nn-types-fp/img/rnn-general Die rekurrenten Neuronen repräsentieren alle bisherigen Eingaben. Für viele Anwendungen ist aber auch eine Repräsentation der folgenden Eingaben nützlich. bidirektionales RNN colah.github.io/posts/2015-09-nn-types-fp/img/rnn-bidirectional Bidirektionale RNNs können zu tiefen bidirektionalen RNNs gestapelt werden Helmut Schmid (CIS, LMU) Neuronale Netze und PyTorch Stand: 9. April 2018 38 / 38