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)
[try]
Lassen Sie uns den Wert des Rauschens ändern Lassen Sie uns die Anzahl von d ändern
$ \ Rightarrow $ [Diskussion]
Optimizer name | Description |
---|---|
GradientDescentOptimizer | Optimierer durch Gradientenabstiegsmethode |
AdagradOptimizer | Optimierer nach AdaGrad-Methode |
MomentumOptimizer | Momentum-Methodenoptimierer |
AdamOptimize | Adam-Methode |
FtrlOptimizer | Folgen Sie dem Regularized Leader-Algorithmus(Ich habe das nicht gelernt) |
RMSPropOptimizer | Ein Algorithmus, der die Anpassung der Lernrate automatisiert |
(Referenz-) Optimierer für Tensorflow
[try] Lassen Sie uns den Wert des Rauschens ändern Lassen Sie uns die Anzahl von d ändern
[try]
python
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
#Ändern Sie hier die Iteration
iters_num = 10000
plot_interval = 100
#Daten generieren
n=100
#random.rand(): 0.0 oder mehr, 1.Zufällige Generierung kleiner als 0
x = np.random.rand(n).astype(np.float32) * 4 - 2
d = 30 * x ** 2 +0.5 * x + 0.2
#Rauschen hinzufügen
noise = 0.05
d = d + noise * np.random.randn(n)
#Modell-
#Beachten Sie, dass wir nicht b verwenden.
#Hinzugefügt: Die Anzahl der Ws hat sich von 4 auf 3 geändert
#xt = tf.placeholder(tf.float32, [None, 4])
xt = tf.placeholder(tf.float32, [None, 3])
dt = tf.placeholder(tf.float32, [None, 1])
#Hinzugefügt: Die Anzahl der Ws hat sich von 4 auf 3 geändert
#W = tf.Variable(tf.random_normal([4, 1], stddev=0.01))
W = tf.Variable(tf.random_normal([3, 1], stddev=0.01))
y = tf.matmul(xt,W)
#Fehlerfunktion Durchschnittlicher quadratischer Fehler
loss = tf.reduce_mean(tf.square(y - dt))
#Ändern Sie hier die Lernrate
optimizer = tf.train.AdamOptimizer(0.001)
train = optimizer.minimize(loss)
#Initialisieren
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
#Bereiten Sie die erstellten Daten als Trainingsdaten vor
d_train = d.reshape(-1,1)
#x_train = np.zeros([n, 4])
x_train = np.zeros([n, 3])
for i in range(n):
#Hinzugefügt: Die Anzahl der Ws hat sich von 4 auf 3 geändert
# for j in range(4):
for j in range(3):
x_train[i, j] = x[i]**j
#Ausbildung
for i in range(iters_num):
if (i+1) % plot_interval == 0:
loss_val = sess.run(loss, feed_dict={xt:x_train, dt:d_train})
W_val = sess.run(W)
print('Generation: ' + str(i+1) + '.Error= ' + str(loss_val))
sess.run(train, feed_dict={xt:x_train,dt:d_train})
print(W_val[::-1])
#Vorhersagefunktion
def predict(x):
result = 0.
#Hinzugefügt: Die Anzahl der Ws hat sich von 4 auf 3 geändert
# for i in range(0,4):
for i in range(0,3):
result += W_val[i,0] * x ** i
return result
fig = plt.figure()
subplot = fig.add_subplot(1,1,1)
plt.scatter(x ,d)
linex = np.linspace(-2,2,100)
liney = predict(linex)
subplot.plot(linex,liney)
plt.show()
MNIST1(DN68)
[try] Lassen Sie uns die Größe der verborgenen Ebene ändern Lassen Sie uns den Optimierer ändern $ \ Rightarrow $ [Diskussion] Wenn die Größe der verborgenen Ebene halbiert wurde, sank die richtige Antwortrate erheblich. Wenn andererseits der Optimierer von Adam auf Momentum geändert wurde, stieg die korrekte Antwortrate von 90 auf 94%. Ich habe andere Dinge getan, aber RMS Drop war mit 96% das Beste. Ich habe versucht, die Größe der verborgenen Ebene zu verdoppeln, aber die Verbesserung der korrekten Antwortrate betrug etwa 1%. Wenn die Größe der verborgenen Ebene also tief genug war, hielt ich es für wünschenswert, sie danach mit dem Optimierer anzupassen.
conv - relu - pool - conv - relu - pool - affin - relu - dropout - affin - softmax [try]
Lassen Sie uns die Abbrecherquote auf 0 ändern $ \ Rightarrow $ [Diskussion] (Vor Änderung) dropout_rate = 0.5
(Nach Änderung) dropout_rate = 0 Ich dachte, es würde mehr sinken, aber es änderte sich nicht viel.
$ \ Rightarrow $ [Diskussion] Die Antwort lautet (a)
Antwort (a) ist falsch In Bezug auf den Verlust besteht das Merkmal dieses Verlusts zunächst darin, dass die Klassifizierung in dem Teil durchgeführt wird, der in der Mitte vom Netzwerk abgezweigt ist.
Die Erläuterung der folgenden Beispiele entfällt.
[DN73] Bestätigungstest in der Erläuterung des Beispiels Beschreiben Sie kurz die Funktionen von VGG, GoogleNet und ResNet.
Für VGG wird es das älteste Modell von 2014 sein. Als Feature ist es einfach, einfache Netzwerke wie Convolution, Convolution, max_pool zu stapeln. Andererseits zeichnet es sich durch eine große Anzahl von Parametern im Vergleich zu den beiden anderen aus. Die Funktion von Google Net besteht darin, dass das Inception-Modul verwendet wird. Es zeichnet sich durch Dimensionsreduzierung bei Verwendung von 1✖️1 Größe und Spärlichkeit bei Verwendung verschiedener Filtergrößen aus. In Bezug auf ResNet wird <Verbindungsidentitätsmodul überspringen verwendet, um eine Restverbindung herzustellen, die tiefes Lernen ermöglicht.
Keras2 (DN69)
ODER-Schaltung [try] Np.random.seed (0) wurde in np.random.seed (1) geändert. Die Anzahl der Epochen wurde auf 100 geändert Geändert zu UND-Schaltung und XOR-Schaltung Ändern Sie die Chargengröße mit der ODER-Schaltung auf 10 Ändern wir die Anzahl der Epochen auf 300 ⇒ [Diskussion] (Vor Änderung) np.random.seed (0) (Nach Änderung) Geändert zu np.random.seed (1) (Nach Änderung) Die Epoche wurde von 30 auf 100 Mal geändert (Nach dem Wechsel) Wechseln Sie in die UND-Schaltung OR und AND können linear getrennt werden, aber XOR kann nicht gelernt werden, da es nicht linear getrennt werden kann. (Nach dem Wechsel) Ändern Sie die Chargengröße mit der ODER-Schaltung auf 10 (Nach der Änderung) Ändern wir die Anzahl der Epochen auf 300
[try]
(Vor Änderung / ReLU) (Aktivierungsfunktion in Sygmoid geändert) Aus der Grafik geht schließlich hervor, dass ReRU genauer ist. (Geänderte Optimierung in Optimierer = SGD (lr = 0,1))
Mit Optimierer = SGD (lr = 0,1) gibt es einige Bereiche, in denen sich die Genauigkeit verbessert hat, sodass gelegentlich 1,0 angezeigt wird, aber es scheint, dass es mehr Variationen gibt.
[try]
(Vorher ändern) (Nach Änderung) Ändern Sie one_hot_label in False
(Nach Änderung) Ändern Sie die Fehlerfunktion in sparse_categorical_crossentropy Und ändern Sie one_hot_label in False
kategoriale_kreuzentropie → setze one_hot_label auf True sparse_categorical_crossentropy → Fales one_hot_label Muss sein. Andernfalls tritt ein Fehler auf.
(Nach Änderung) Ändern wir den Wert von Adams lr-Argument (Lernrate 0,01-> 0,1).
RNN (Vorhersage der binären Addition) Keras RNN-Dokumentation
[try] (Vorher ändern) (Nach Änderung) Ändern Sie die Anzahl der Ausgabeknoten auf 128 Geänderte SimpleRNN-Einheiten = 16 $ \ Rightarrow $ -Einheiten = 128. Es ist von der Stufe von EPOCH1 auf Acc 0.9299 gestiegen. (Nach Änderung) Die Ausgabeaktivierungsfunktion wurde in ReLU $ \ Rightarrow $ sigmoid geändert Das Ergebnis von Sygmoid ist, dass Acc nicht so stark ansteigt wie LeRU. (Nach Änderung) Ändern Sie die Ausgangsaktivierungsfunktion in tanh Es dauert bis zu Epoche 3, obwohl Acc bis zu 100% beträgt.
(Nach Änderung) Ändern Sie die Optimierungsmethode in Adam Quellenänderung
pyton
#model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.1), metrics=['accuracy'])
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
Acc ist fast ein gutes Ergebnis.
(Nach Änderung) Input Dropout auf 0,5 eingestellt Das Ergebnis, dass Acc nicht so stark steigt wie erwartet.
(Nach Änderung) Setzen Sie rekursives Dropout auf 0,3 Dies ist auch nur Acc 98%.
(Nach Änderung) Unroll auf True setzen Dies ist auch ein gutes Ergebnis.
Ein Bereich des maschinellen Lernens, der darauf abzielt, Agenten zu erstellen, die Aktionen in der Umgebung auswählen können, damit die Belohnungen langfristig maximiert werden können. $ \ Rightarrow $ Dies ist ein Mechanismus zur Verbesserung des Prinzips der Entscheidung einer Aktion auf der Grundlage des Gewinns (der Belohnung), der als Ergebnis der Aktion erzielt wird.
[D81] Stärkung des Lernens 1 Bestätigungstest Betrachten Sie Beispiele, die auf das Lernen zur Stärkung angewendet werden könnten, und listen Sie Umweltfaktoren, Maßnahmen und Belohnungen auf.
⇒ [Diskussion] Aktieninvestitionsroboter Umwelt ⇒ Börse Agent ⇒ Investor Maßnahme ⇒ Wählen Sie Aktien aus und investieren Sie in diese, die wahrscheinlich rentabel sind Belohnung ⇒ Gewinn / Verlust aus dem Kauf und Verkauf von Aktien
Für das Marketing Umwelt: Abteilung für Verkaufsförderung des Unternehmens Agent: Kampagnen-E-Mail basierend auf Profil und Kaufhistorie Es ist eine Software, die den Kunden zum Senden entscheidet. Aktion: Sie müssen für jeden Kunden zwischen sendenden und nicht sendenden Aktionen wählen. Belohnung: Negative Belohnung der Kampagnenkosten und erstellt von der Kampagne Erhalten Sie eine positive Belohnung für Verkäufe, die voraussichtlich getätigt werden
Mit perfekter Kenntnis der Umgebung im Voraus ist es möglich, ein optimales Verhalten vorherzusagen und zu bestimmen.
⇒ Situation, in der bekannt ist, welche Art von Kunde eine Kampagnen-E-Mail senden soll und welche Maßnahmen ergriffen werden.
⇒ Bei intensivem Lernen gilt die obige Annahme nicht. Sammeln Sie Daten, während Sie auf der Grundlage unvollständigen Wissens handeln. Finde die beste Aktion.
Wenn Sie in den vergangenen Daten immer nur das beste Verhalten verwenden, können Sie das beste andere Verhalten nicht finden. ⇒ Unzureichende Suche (Obere und untere sind Kompromissbeziehungen) Wenn Sie weiterhin nur unbekannte Maßnahmen ergreifen, können Sie Ihre bisherigen Erfahrungen nicht nutzen. Unzureichende Nutzung Kompromissbeziehung ⇒ Nur unbekannte Höhe
Unterschiede zwischen verbessertem Lernen und regelmäßig unterrichtetem und unbeaufsichtigtem Lernen
Fazit: unterschiedliche Ziele
Geschichte des verbesserten Lernens Über das Lernen der Verstärkung ・ Obwohl es eine Winterära gab, wird es aufgrund des Fortschritts der Berechnungsgeschwindigkeit möglich, intensives Lernen durchzuführen, wenn es einen großräumigen Zustand aufweist. ・ Darstellung einer Methode, die Funktionsnäherungsmethode und Q-Lernen kombiniert
Q Lernen ・ So fahren Sie mit dem Lernen fort, indem Sie die Aktionswertfunktion jedes Mal aktualisieren, wenn Sie eine Aktion ausführen Funktionsnäherungsmethode ・ Eine Methode zur Funktionsnäherung an Wertfunktionen und Richtlinienfunktionen
Was ist eine Aktionswertfunktion?
Eine Richtlinienfunktion ist eine Funktion, die die Wahrscheinlichkeit angibt, welche Maßnahmen in einem bestimmten Zustand in einer auf Richtlinien basierenden Lernmethode zur Verstärkung ergriffen werden müssen.
Methode zur Wiederholung von Richtlinien Techniken zur Modellierung und Optimierung von Strategien ⇒ Richtliniengradientenmethode
\theta^{(t+1)}=\theta^{(t)}\epsilon\nabla j(\theta)
Was ist j? ⇒ Gute Politik ... Muss definiert werden
Definitionsmethode ・ Durchschnittliche Belohnung ・ Rabattbelohnungssumme Entsprechend der obigen Definition wird die Aktionswertfunktion: Q (s, a) definiert. Der Satz des politischen Gradienten gilt.
\nabla _{\theta} j(\theta)=E_{\pi_\theta} [\nabla_{\theta} log\pi_\theta(a|s)Q^\pi(s,a))]
Recommended Posts