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)
•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
1-1 RNN Übersicht
1-1-1 Was ist RNN?
Was ist RNN? $ \ Rightarrow $ Ein neuronales Netzwerk, das Zeitreihendaten verarbeiten kann.
1-1-2 Zeitreihendaten
Was sind Zeitreihendaten? $ \ Rightarrow $ Eine Reihe von Daten, die in regelmäßigen Abständen in chronologischer Reihenfolge beobachtet werden und statistische Abhängigkeiten voneinander aufweisen.
Was sind spezifische Zeitreihendaten? $ \ Rightarrow $ Sprachdaten / Textdaten ... usw.
1-1-3 Über RNN
Was sind die Merkmale von RNN? Um das Zeitreihenmodell $ \ Rightarrow $ zu handhaben, benötigen wir eine rekursive Struktur, die den Anfangszustand und den Zustand der vergangenen Zeit t-1 enthält und t beim nächsten Mal rekursiv findet.
Übersicht über RNN
Formel
Code
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)
1-2BPTT
1-2-1 Was ist BPTT? Überprüfung der Fehlerrückführungsmethode
1-2-2 Mathematische Beschreibung von BPTT
Wenn von oben mit dem Code verknüpft + np.dot(X.T,delta[:,t].reshape(1,-1)) + np.dot(z[:,t+1].reshape(-1,1),delta_out[:,t].reshape(-1,1)) + 3)np.dot(z[:,t].reshape(-1,1), delta[:,t].reshape(1,-1))
(B und c) der Kürze halber im einfachen RNN-Code weggelassen
(B und c) der Kürze halber im einfachen RNN-Code weggelassen
(Code) y [:, t] = functions.sigmoid (np.dot (z [:, t + 1] .reshape (1, -1), W_out))
Parameteraktualisierungsformel
1-2-3 Gesamtansicht von BPTT
Unterstrichen $ \ Longrightarrow $
Section2) LSTM Gesamtbild (vorheriger Ablauf und Vision des Gesamtbildes der Probleme)
2-1CEC
Als Lösung für das Verschwinden des Gradienten und die Explosion des Gradienten kann es gelöst werden, wenn der Gradient 1 ist. Das Gewicht der Task-Eingabedaten ist unabhängig von der Zeitabhängigkeit einheitlich. $ \ Rightarrow $ Es gibt keine Lerncharakteristik des neuronalen Netzwerks. Eingabeebene → Gewicht in verborgene Ebene Eingabegewichtskollision. Versteckte Ebene → Gewicht Ausgabe Gewicht Gewicht Kollision mit Ausgabe Ebene.
2-2 Eingangs- und Ausgangsgatter
Welche Rolle spielt das Eingangs- / Ausgangsgatter? Durch Hinzufügen von $ \ Rightarrow $ -Eingabe- / Ausgabegattern können die Gewichte der Eingabewerte zu jedem Gatter durch die Gewichtsmatrizen W und U geändert werden. Das Problem von $ \ Rightarrow $ CEC wurde gelöst.
2-3 Vergessenheitstor
Das Oblivion Gate wird aus der Aufgabe des LSTM-Blocks geboren
Problem Wenn frühere Informationen nicht mehr benötigt werden, können sie nicht gelöscht werden und bleiben gespeichert. Der aktuelle Status von LSTM CEC speichert alle früheren Informationen. Lösung Wenn Sie keine früheren Informationen mehr benötigen, benötigen Sie eine Funktion, um die Informationen zu diesem Zeitpunkt zu vergessen. $ \ Rightarrow $ Geburt des Oblivion Gate
2-4 Gucklochverbindung
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
(Hintergrund) LSTM hat das Problem, dass die Anzahl der Parameter groß und die Berechnungslast hoch ist. Geburt von $ \ Rightarrow $ GRU
Was ist GRU? $ \ Rightarrow $ Im herkömmlichen LSTM gab es viele Parameter, sodass die Berechnungslast hoch war. In GRU wurden die Parameter jedoch erheblich reduziert, und es ist zu erwarten, dass die Genauigkeit gleich oder höher ist.
Verdienst $ \ Rightarrow $ Die Berechnungslast ist gering.
Section5)Seq2Seq
5-1Encoder RNN
Struktur, die die vom Benutzer eingegebenen Textdaten weitergibt, indem sie in Token wie Wörter unterteilt wird
Nehmen: Teilen Sie den Satz in Token wie Wörter und für jeden Token in IDs.
Einbetten: Konvertieren von ID in verteilten Darstellungsvektor, der das Token darstellt.
Encoder RNN: Geben Sie die Vektoren der Reihe nach in RNN ein.
Encoder RNN-Verarbeitungsverfahren
Geben Sie vec1 in RNN ein und geben Sie den verborgenen Zustand aus. Dieser verborgene Zustand und der nächste Eingang vec2 werden erneut in das RNN eingegeben, und der verborgene Zustand wird ausgegeben, was wiederholt wird.
Speichern Sie den verborgenen Zustand, wenn der letzte VEC als Endzustand eingefügt wird. Dieser Endzustand wird als Gedankenvektor bezeichnet und wird zu einem Vektor, der die Bedeutung des Eingabesatzes ausdrückt.
5-2Decoder RNN
Eine Struktur, in der das System Ausgabedaten für jedes Token generiert, z. B. ein Wort.
Decoder RNN-Verarbeitung
5-3HRED
Seq2seq Probleme Es kann nur eine Frage beantwortet werden. Es gibt keinen Kontext zu der Frage, nur die Antwort geht weiter. HRED wurde geboren, um dieses Problem zu lösen.
Was ist HRED? Generieren Sie die nächste Äußerung aus den letzten n-1 Äußerungen. System: Inco ist süß, nicht wahr? Benutzer: Ja System: Ich verstehe den niedlichen Inco. In Seq2seq wurde die Antwort durch Ignorieren des Kontexts der Konversation gegeben, in HRED folgt die Antwort dem Fluss des vorherigen Wortes, sodass ein menschlicherer Satz erzeugt wird.
5-4VHRED
Was ist VHRED? $ \ Rightarrow $ HRED mit dem Zusatz des Konzepts latenter Variablen in VAE (Fliegen genannt).
Eine Struktur, die das Problem der HRED löst, indem das Konzept der latenten Variablen der VAE hinzugefügt wird.
5-5VAE
5-5-1 Auto Encoder-
Was ist ein Auto-Encoder? $ \ Rightarrow $ Eine des unbeaufsichtigten Lernens. Daher sind die Eingabedaten zum Zeitpunkt des Lernens nur Trainingsdaten, keine Lehrerdaten.
Auto Encoder-spezifisches Beispiel Im Fall von MNIST handelt es sich um ein neuronales Netzwerk, das ein Bild mit 28 x 28 Zahlen erstellt und dasselbe Bild ausgibt.
Auto Encoder Struktur
Strukturzeichnung
<img width = 25% alt = "Screenshot 2020-01-03 22.40.52.png " src = "https: //qiita-image-store.s3.ap-northeast-1.amazonaws" .com / 0/357717 / 9a74cfde-b8f7-f0d4-7bca-49d192d811e4.png ">
Erklärung der Auto-Encoder-Struktur $ \ Rightarrow $ Encoder ist ein neuronales Netzwerk, das Eingabedaten in die latente Variable z konvertiert. Im Gegensatz dazu ist Decoder ein neuronales Netzwerk, das das Originalbild wiederherstellt, indem die latente Variable z als Eingabe verwendet wird.
** Vorteile $ \ Rightarrow $ Dimensionsreduzierung **
Section6)Word2vec
Erstellen Sie ein Vokabular aus Trainingsdaten Bsp.) Ich möchte Äpfel essen. Ich mag Äpfel. {Äpfel, esse, ich möchte, möchte} * Wenn Sie ein 7-Wörter-Vokabular erstellen, das leicht zu verstehen ist, haben Sie ursprünglich so viele Wörter wie im Wörterbuch.
Vorteile
Das Erlernen der verteilten Darstellung großer Datenmengen ist mit realistischer Berechnungsgeschwindigkeit und Speichermenge möglich geworden.
✗: Eine Gewichtsmatrix nur für Vokabeln x Vokabeln wird geboren.
○: Wortschatz × Eine Gewichtsmatrix wird in einer beliebigen Wortvektordimension geboren + Section7)AttentionMechanism
Herausforderung: Das Problem mit seq2seq ist, dass es schwierig ist, mit langen Sätzen umzugehen. Mit seq2seq müssen Sie 2 Wörter oder 100 Wörter in einen Vektor mit fester Dimension eingeben
Lösung: Wir brauchen einen Mechanismus, der die Dimension der internen Darstellung der Sequenz umso größer macht, je länger der Satz ist.
Mechanismus zum Erlernen des Relevanzgrades "welches Wort der Eingabe und Ausgabe in Beziehung steht"
Aufmerksamkeitsmechanismus Spezifisches Beispiel $ \ Rigtharrow $ * "a" hat einen geringen Grad an Relevanz und "I" hat einen hohen Grad an Relevanz für "I".
[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.
[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 ⇒ [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
⇒ [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
⇒ [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
[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
⇒ [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 ⇒ [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 ⇒ [Diskussion] Die Antwort lautet (2). Es wird durch einen Darstellungsvektor dargestellt, und die Darstellungsvektoren werden links und rechts nebeneinander gewichtet.
simple RNN Binäre Addition Ausführungsergebnis der binären Addition
[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 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 Ergebnisse mit HE 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])
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])
Recommended Posts