[PYTHON] Themen> Deep Learning: Tag 3 RNN

sutudy-ai


Tiefes Lernen

Inhaltsverzeichnis [Deep Learning: Tag 1 NN] (https://qiita.com/matsukura04583/items/6317c57bc21de646da8e) [Deep Learning: Day2 CNN] (https://qiita.com/matsukura04583/items/29f0dcc3ddeca4bf69a2) [Deep Learning: Tag 3 RNN] (https://qiita.com/matsukura04583/items/9b77a238da4441e0f973) [Deep Learning: Tag 4 Stärkung des Lernens / Tensorflusses] (https://qiita.com/matsukura04583/items/50806b750c8d77f2305d)

Deep Learning: Tag 3 CNN (Lecture Summary)

Rückblick auf das Gesamtbild des Deep Learning - Lernkonzepts

スクリーンショット 2020-01-02 14.09.10.png

Neueste CNN

•AlexNet AlexNet ist ein Modell, das mit großem Abstand den zweiten Platz im Bilderkennungswettbewerb 2012 gewonnen hat. Mit dem Aufkommen von AlexNet hat Deep Learning viel Aufmerksamkeit erhalten. Modellstruktur Besteht aus 3 vollständig verbundenen Schichten, einschließlich 5 Faltungsschichten und einer Poolschicht スクリーンショット 2020-01-02 14.50.59.png

Über rekursives neuronales Netzwerk

Abschnitt 1) Konzept des rekursiven neuronalen Netzwerks

python


u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W)
z[:,t+1] = functions.sigmoid(u[:,t+1])
np.dot(z[:,t+1].reshape(1, -1), W_out)
y[:,t] = functions.sigmoid(np.dot(z[:,t+1].reshape(1, -1), W_out))np.dot(z[:,t+1].reshape(1, -1), W_out)

Section2) LSTM Gesamtbild (vorheriger Ablauf und Vision des Gesamtbildes der Probleme)

Gesamtansicht von LTSM

スクリーンショット 2020-01-03 15.25.30.png

Ein Mechanismus, der entwickelt wurde, um die Anforderungen zu erfüllen, die früheren Informationen des CEC-Speichers jederzeit an andere Knoten weiterzugeben oder jederzeit zu vergessen. Der Wert von CEC selbst hat keinen Einfluss auf die Gate-Steuerung. Was ist eine Gucklochverbindung? Eine Struktur, die die Weitergabe an den Wert von $ \ Rightarrow $ CEC selbst über eine Gewichtsmatrix ermöglicht.

Section3) GRU

Gesamtansicht der GRU

Abschnitt 4) Bidirektionale RNN

Verarbeitung natürlicher Sprache mit RNN

Section5)Seq2Seq

Seq2Seq Gesamtbild

スクリーンショット 2020-01-03 21.38.30.png Was ist die spezifische Verwendung von Seq2seq? $ \ Rightarrow $ Es wird für maschinelle Dialoge und maschinelle Übersetzung verwendet. Was ist Seq2seq? $ \ Rightarrow $ Encoder - Ein Decoder-Typ.

Section6)Word2vec

Bestätigungstest

[P11] Bestätigungstest Beantworten Sie die Größe des Ausgabebildes, wenn das Eingabebild der Größe 5x5 mit dem Filter der Größe 3x3 gefaltet wird. Der Schritt ist 2 und die Polsterung ist 1. ⇒ [Diskussion] Antwort 3 ✖️ 3 Eingabegrößenhöhe (H), Eingabegrößenbreite (W) Output Hight(OH) Output Width(OW) Filler Hight(FH) Filler Width(FW) Schritt (S) Schwenken (P)

[P12] Finden Sie dz / dx nach dem Prinzip des Kettengesetzes.

     z = t^2,t=x+y

⇒ [Diskussion] Sie kann durch die folgende Berechnung berechnet werden.

 \frac{dz}{dx}=\frac{dz}{dy}\frac{dy}{dx}
,t=x+y
z = t^Da es 2 ist, wenn Sie durch t differenzieren\frac{dz}{dt}=2t

t=x+Da es y ist, wenn Sie durch x differenzieren\frac{dt}{dx}=1

\frac{dz}{dx}=2t ・ 1=2t=2(x+y)
   OH =\frac{H+2P-FH}{S}+1 =\frac{5+2.1-3}{2}+1=3
   OH =\frac{W+2P-FW}{S}+1 =\frac{5+2.1-3}{2}+1=3

Es ist eine feste Berechnungsmethode, also erinnern wir uns daran als Formel.

[P23] Bestätigungstest Das RNN-Netzwerk hat drei Hauptgewichte. Eines ist das Gewicht, das beim Definieren der aktuellen Zwischenschicht aus der Eingabe angewendet wird, und das andere ist das Gewicht, das beim Definieren der Ausgabe von der Zwischenschicht angewendet wird. Erklären Sie das verbleibende Gewicht. ⇒ [Diskussion] Die Antwort ist das Gewicht, das von einer mittleren Schicht zur nächsten weitergegeben wird. スクリーンショット 2020-01-03 6.53.48.png

[P37] Finden Sie dz / dx nach dem Prinzip des Kettengesetzes.

     z = t^2,t=x+y

⇒ [Diskussion] Sie kann durch die folgende Berechnung berechnet werden.

 \frac{dz}{dx}=\frac{dz}{dy}\frac{dy}{dx}
,t=x+y
z = t^Da es 2 ist, wenn Sie durch t differenzieren\frac{dz}{dt}=2t

t=x+Da es y ist, wenn Sie durch x differenzieren\frac{dt}{dx}=1

\frac{dz}{dx}=2t ・ 1=2t=2(x+y)

[P46] Bestätigungstest

Drücken Sie y1 in der folgenden Abbildung als Formel mit x, s0, s1, win, w und wout aus. * Definieren Sie die Tendenz mit einem beliebigen Zeichen. * Lassen Sie auch die Sigmoidfunktion g (x) auf den Ausgang der Zwischenschicht wirken.


Z_1=sigmoid(S_0W+x_1W_{(in)}+b)

Die Ausgabeschicht verwendet auch Sigmoid

y_1=sigmoid(Z_1W_{(out)}+c)

Kennen Sie die Essenz, denn die Art und Weise, Symbole zu schreiben, ist je nach Buch unterschiedlich.

[P54] Codeübungen スクリーンショット 2020-01-03 13.43.56.png ⇒ [Diskussion] Die Antwort lautet (2) [Erklärung] In RNN hängt die Zwischenschichtausgabe h_ {t} von der letzten Zwischenschichtausgabe h_ {t-1}, .., h_ {1} ab. Wenn wir die Verlustfunktion in Bezug auf die Gewichte W und U in RNN teilweise differenzieren, müssen wir dies berücksichtigen und beachten, dass dh_ {t} / dh_ {t-1} = U, U jedes Mal, wenn wir in der Zeit zurückgehen. Ist aufgehängt. Das heißt, delta_t = delta_t.dot (U).

[P63] Wenn die Sigmoidfunktion unterschieden wird, wird der Maximalwert genommen, wenn der Eingabewert 0 ist. Wählen Sie den richtigen Wert aus den Optionen. (1) 0,15 (2) 0,25 (3) 0,35 (4) 0,45

⇒ [Diskussion] Differenzierung von Sigumoid

     (sigmoid)'=(1-sigmoid)(sigmoid)

Da die Sigmoidfunktion bei 0,5 maximal ist,

     (sigmoid)'=(1-0.5)(0.5)=0.Wird 25 sein

[P65] Übungsherausforderung スクリーンショット 2020-01-03 14.28.59.png

⇒ [Diskussion] Richtige Antwort: 1 [Erläuterung] Wenn die Norm des Gradienten größer als der Schwellenwert ist, wird die Norm des Gradienten auf den Schwellenwert normiert, sodass der abgeschnittene Gradient als Gradient × (Schwellenwert / Norm des Gradienten) berechnet wird. Zu Das heißt, Gradientenrate. Es ist leicht zu verstehen, da der Schwellenwert einfach mit dem Gradienten multipliziert und normalisiert wird.

[P79] Bestätigungstest Angenommen, Sie möchten den folgenden Satz in LSTM eingeben und die Wörter vorhersagen, die in die Leerzeichen passen. Das Wort "sehr" im Text hat keine Auswirkung, selbst wenn es in der leeren Vorhersage verschwindet. Welches Tor funktioniert in einem solchen Fall? "Der Film war interessant. Übrigens war ich so hungrig, dass etwas ____." ⇒ [Diskussion] Richtige Antwort: Vergessenheitstor. Die Rolle des Vergessenstors wird verwendet, um zu bestimmen, wie viel unmittelbare Auswirkung berücksichtigt wird.

[P80] Übungsherausforderung スクリーンショット 2020-01-03 16.10.21.png

⇒ [Diskussion] Richtige Antwort: 3 [Erklärung] Der Zustand der neuen Zelle wird ausgedrückt als die Summe der Eingabe in die berechnete Zelle und des Zustands der Zelle einen Schritt zuvor, multipliziert mit dem Eingangsgatter und dem Vergessensgatter. Das heißt, input_gate * a + forget_gate * c.

[P89] Bestätigungstest Beschreiben Sie kurz die Herausforderungen, vor denen LSTM und CEC stehen.

⇒ [Diskussion] Herausforderungen für LSTM und CEC. LSTM hat das Problem, dass die Anzahl der Parameter groß und die Berechnungslast hoch ist. In der KEK gibt es kein Lernkonzept und es werden keine Gewichte verwendet. Es ist nicht möglich, die Notwendigkeit zu erfüllen, die gespeicherten vergangenen Informationen jederzeit an andere Knoten weiterzugeben oder sie jederzeit zu vergessen.

[P91] Übungsherausforderung スクリーンショット 2020-01-03 16.53.16.png

[P93] Bestätigungstest Beschreiben Sie kurz den Unterschied zwischen LSTM und GRU. ⇒ [Diskussion] In LSTM gab es ein Problem, dass die Anzahl der Parameter groß und die Berechnungslast hoch war, aber in GRU wurden die Parameter reduziert und die Verarbeitung wurde schneller. Allerdings sind nicht alle GRUs überlegen, und in einigen Fällen ist es besser, sie zu vergleichen und auszuwählen.

[P96] Übungsherausforderung

スクリーンショット 2020-01-03 20.20.29.png ⇒ [Diskussion] Richtige Antwort: 4 [Erläuterung] In der bidirektionalen RNN ist die Merkmalsgröße die Kombination der Zwischenschichtdarstellung bei der Ausbreitung in Vorwärts- und Rückwärtsrichtung, also np.concatenate ([h_f, h_b [:: -1]]] Achse = 1). (Referenz) [Erfahren Sie hier die Syntax von np.concatenate](https://www.sejuku.net/blog/67869)

[P111] Übungsherausforderung スクリーンショット 2020-01-03 21.07.54.png ⇒ [Diskussion] Richtige Antwort: 1 [Erklärung] Das Wort w ist ein One-Hot-Vektor, der durch Einbetten des Wortes in ein anderes Merkmal umgewandelt wird. Dies kann unter Verwendung der eingebetteten Matrix E als E.dot (w) geschrieben werden. w besteht aus einem One-Hot-Vektor.

(Referenz) Erfahren Sie hier die Beziehung zwischen der Verarbeitung natürlicher Sprache und On-Hot Wenn das Dokument groß ist, werden auch die On-Hot-Daten groß, und es besteht das Problem, dass die Verarbeitung möglicherweise nicht rechtzeitig erfolgt. [P120] Bestätigungstest seq2 Beschreiben Sie kurz den Unterschied zwischen seq und HRED sowie zwischen HRED und VHRED. ⇒ [Diskussion] seq2seq konnte jeweils nur eine Frage beantworten, aber HRED wurde erstellt, um dieses Problem zu lösen. Der Unterschied zwischen HRED und VHRED besteht darin, dass es Probleme gibt, die HRED nicht auf die gleiche Weise beantworten kann, und VHRED kann diese Probleme beantworten, während der Ausdruck geändert wird.

[P129] Bestätigungstest Beantworten Sie die Lücken in der folgenden Beschreibung zu VAE. Einführung von ____ in die latente Variable des Selbstcodierers ⇒ [Diskussion] Die Antwort ist die Einführung von "Wahrscheinlichkeitsvariablen" in latente Variablen.

[P138] Bestätigungstest Beschreiben Sie kurz den Unterschied zwischen RNN und word2vec und seq2seq und Attention. ⇒ [Diskussion] RNN musste eine Matrix aus Vokabelnummern - Vokabelnummerngewichten - generieren, aber word2vec kann mit einer Vokabelnummer - einer beliebigen Wortvektornummern-Gewichtsmatrix erstellt werden. Mit seq2seq und Attention können Sie nur mit seq2seq dieselbe Antwort auf dieselbe Frage geben, aber mit Attention können Sie die Wichtigkeit und Relevanz nutzen und Antworten mit Variationen zurückgeben. Durch iteratives Lernen können Sie Antworten geben, die zu einer verbesserten Genauigkeit führen.

[Video DN60] Übungsherausforderung スクリーンショット 2020-01-04 1.29.38.png ⇒ [Diskussion] Die Antwort lautet (2). Es wird durch einen Darstellungsvektor dargestellt, und die Darstellungsvektoren werden links und rechts nebeneinander gewichtet.

# Übung

DN42_source Übung ①

simple RNN Binäre Addition Ausführungsergebnis der binären Addition スクリーンショット 2020-01-03 4.42.29.png

[try] Lassen Sie uns weight_init_std, learning_rate, hidden_layer_size ändern weight_init_std 1→10 learning_rate 0.1→0.01 hidden_layer_size 16→32 スクリーンショット 2020-01-03 4.53.56.png Das Lernen wurde schlimmer.

[try] Lassen Sie uns die Methode zur Gewichtsinitialisierung ändern Versuchen Sie, sowohl Xavier als auch He zu ändern. (Quellenänderung)

python


###########Änderungen##############
#Gewichtsinitialisierung(Die Vorspannung ist der Einfachheit halber weggelassen)
#W_in = weight_init_std * np.random.randn(input_layer_size, hidden_layer_size)
#W_out = weight_init_std * np.random.randn(hidden_layer_size, output_layer_size)
#W = weight_init_std * np.random.randn(hidden_layer_size, hidden_layer_size)

#Gewichtsinitialisierung mit Xavier
W_in = np.random.randn(input_layer_size, hidden_layer_size) / (np.sqrt(input_layer_size))
W_out = np.random.randn(hidden_layer_size, output_layer_size) / (np.sqrt(hidden_layer_size))
W = np.random.randn(hidden_layer_size, hidden_layer_size) / (np.sqrt(hidden_layer_size))

#Gewichtsinitialisierung mit He
# W_in = np.random.randn(input_layer_size, hidden_layer_size) / (np.sqrt(input_layer_size)) * np.sqrt(2)
# W_out = np.random.randn(hidden_layer_size, output_layer_size) / (np.sqrt(hidden_layer_size)) * np.sqrt(2)
# W = np.random.randn(hidden_layer_size, hidden_layer_size) / (np.sqrt(hidden_layer_size)) * np.sqrt(2)

#####################################

Ergebnisse mit Xavier スクリーンショット 2020-01-03 5.38.13.png Ergebnisse mit HE スクリーンショット 2020-01-03 5.41.19.png Die Ergebnisse waren fast nahe.

[try] Ändern wir die Aktivierungsfunktion der mittleren Ebene ReLU (Überprüfen wir die Gradientenexplosion)

Python ändert sich


     #  z[:,t+1] = functions.sigmoid(u[:,t+1])
        z[:,t+1] = functions.relu(u[:,t+1])
     #  z[:,t+1] = functions.np.tanh(u[:,t+1])
スクリーンショット 2020-01-03 5.55.44.png

tanh (tanh wird in numpy angegeben. Erstellen wir eine Ableitung als d_tanh)

Python-Änderung Hinzufügung einer abgeleiteten Definition


def d_tanh(x):
     return np.tanh(x)

Python ändert sich


     #  z[:,t+1] = functions.sigmoid(u[:,t+1])
     #  z[:,t+1] = functions.relu(u[:,t+1])
        z[:,t+1] = d_tanh(u[:,t+1])
スクリーンショット 2020-01-03 6.00.26.png

Recommended Posts

Themen> Deep Learning: Tag 3 RNN
<Kurs> Tiefes Lernen: Day2 CNN
<Kurs> Tiefes Lernen: Tag 1 NN
Tiefes Lernen
Studiere gründlich Deep Learning [DW Tag 0]
[Rabbit Challenge (E-Qualifikation)] Deep Learning (Tag 2)
[Rabbit Challenge (E-Qualifikation)] Deep Learning (Tag 3)
<Kurs> Deep Learning Day4 Stärkung des Lernens / Tensorflusses
Deep Learning Memorandum
Starten Sie Deep Learning
Python-Lerntag 4
Python Deep Learning
Deep Learning × Python
[Rabbit Challenge (E-Qualifikation)] Deep Learning (Tag 4)
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Lernrekord 4 (8. Tag)
Lernrekord 9 (13. Tag)
Lernrekord 3 (7. Tag)
Deep Learning 1 Übung des Deep Learning
Deep Learning / Cross Entropy
Lernrekord 5 (9. Tag)
Lernrekord 6 (10. Tag)
Erstes tiefes Lernen ~ Vorbereitung ~
Erstes tiefes Lernen ~ Lösung ~
Lernrekord 8 (12. Tag)
[AI] Deep Metric Learning
Lernrekord 1 (4. Tag)
Lernrekord 7 (11. Tag)
Ich habe versucht, tief zu lernen
Python: Deep Learning Tuning
Lernrekord 2 (6. Tag)
Deep Learning Großtechnologie
Lernrekord 16 (20. Tag)
Lernrekord 22 (26. Tag)
Deep Learning / Softmax-Funktion
Lernrekord Nr. 21 (25. Tag)
Deep Learning von Grund auf 1-3 Kapitel
Versuchen Sie es mit TensorFlow
Deep Learning Gaiden ~ GPU-Programmierung ~
Lernrekord Nr. 10 (14. Tag)
Lernrekord Nr. 17 (21. Tag)
Lernrekord 12 (16. Tag) Kaggle2
Deep Learning Bilderkennung 1 Theorie
Lernrekord Nr. 18 (22. Tag)
Deep Running 2 Tuning von Deep Learning
Deep Learning / LSTM Scratch Code
Sinuswellenvorhersage mit RNN in der Deep-Learning-Bibliothek Keras
Lernrekord Nr. 24 (28. Tag)
Deep Kernel Learning mit Pyro
Versuchen Sie Deep Learning mit FPGA
Einführung in Udacity Deep Learning Nanodegree