Grundsätzlich wird dieselbe Netzwerkkonfiguration wie im vorherigen Artikel verwendet (http://qiita.com/yuyakato/items/ab38064ca215e8750865). Die Grundwerte der Hyperparameter sind die in "3.3. Hyperparameter" gezeigten.
Variablennamen | Bedeutung | Wert |
---|---|---|
num_of_input_nodes |
Anzahl der Knoten in der Eingabeebene | 1 Knoten |
num_of_hidden_nodes |
Anzahl der Knoten mit versteckten Ebenen | 2 Knoten |
num_of_output_nodes |
Anzahl der Knoten in der Ausgabeschicht | 1 Knoten |
length_of_sequences |
RNN-Sequenzlänge | 50 Schritte |
num_of_training_epochs |
Anzahl der Wiederholungen des Lernens | 2,000 mal |
num_of_prediction_epochs |
Anzahl der Wiederholungen der Vorhersage | 100 mal |
size_of_mini_batch |
Anzahl der Proben pro Mini-Charge | 100 Proben |
learning_rate |
Lernrate | 0.1 |
forget_bias |
(Ich bin mir nicht sicher) | 1.0 (Standardwert) |
Der zum Lernen / Vorhersagen verwendete Quellcode, das Notizbuch, das die Trainingsdaten generiert hat, und das Notizbuch, das zum Aufzeichnen der Ergebnisse verwendet wird, sind auf GitHub verfügbar. Bitte beziehen Sie sich auf diesen für spezifischen Quellcode und Werte.
https://github.com/nayutaya/tensorflow-rnn-sin/tree/20160517/ex2
Num_of_hidden_nodes
: Anzahl der Hidden-Layer-KnotenDie folgende Tabelle zeigt die Vorhersageergebnisse und die Verlustfunktion, wenn die Anzahl der Knoten für verborgene Schichten von 1 auf 4 geändert wird. Wenn die Anzahl der Knoten mit versteckten Ebenen "1" ist, können Sie sehen, dass dies völlig unvorhersehbar ist. Wenn die Anzahl der Knoten in der verborgenen Schicht groß ist, werden anscheinend nicht immer gute Ergebnisse erzielt. Wenn Sie sich das Verlustfunktionsdiagramm ansehen, ist der endgültige Verlust umso geringer, je mehr Knoten sich in der verborgenen Ebene befinden.
No | Anzahl der Knoten mit versteckten Ebenen | Lernen / geschätzte Zeit |
---|---|---|
1 | 1 |
3m53.845s |
2 | 2 |
3m30.844s |
3 | 3 |
4m36.324s |
4 | 4 |
5m30.537s |
Länge_der_Sequenzen
: RNN-SequenzlängeDie folgende Tabelle zeigt die Vorhersageergebnisse und die Verlustfunktion, wenn die RNN-Sequenzlänge auf "30", "40", "50", "60" und "70" geändert wird. Die Trainingsdaten sind diesmal eine Sinuswelle mit 50 Schritten pro Zyklus, aber es ist ersichtlich, dass selbst wenn es weniger als ein Zyklus ist, es ausreichend vorhergesagt werden kann.
No | RNN-Sequenzlänge | Lernen / geschätzte Zeit |
---|---|---|
1 | 30 |
2m29.589s |
2 | 40 |
2m58.636s |
3 | 50 |
3m30.844s |
4 | 60 |
4m25.459s |
5 | 70 |
5m38.550s |
Num_of_training_epochs
: Anzahl der TrainingsiterationenDie folgende Tabelle zeigt die Vorhersageergebnisse und die Verlustfunktion, wenn die Anzahl der Trainingswiederholungen auf 1.000, 2.000 und 3.000 geändert wird. Beim 3.000-fachen schwankt das Ergebnis der Verlustfunktion von rund dem 1.600-fachen. Das Vorhersageergebnis ist auch nicht gut.
No | Anzahl der Wiederholungen des Lernens | Lernen / geschätzte Zeit |
---|---|---|
1 | 1,000 mal | 2m10.783s |
2 | 2,000 mal | 3m30.844s |
3 | 3,000 mal | 6m17.675s |
Size_of_mini_batch
: Anzahl der Proben pro Mini-BatchDie folgende Tabelle zeigt die Vorhersageergebnisse und die Verlustfunktion, wenn die Anzahl der Proben pro Mini-Charge auf "50", "100" und "200" geändert wird. Es gibt keinen merklichen Unterschied, aber im Grunde scheint es, dass die Ergebnisse umso besser sind, je größer die Anzahl der Proben ist.
No | Anzahl der Proben pro Mini-Charge | Lernen / geschätzte Zeit |
---|---|---|
1 | 50 |
4m25.032s |
2 | 100 |
3m30.844s |
3 | 200 |
4m59.550s |
Learning_rate
: LernrateDie folgende Tabelle zeigt die Vorhersageergebnisse und die Verlustfunktion, wenn die an den Optimierer übergebene Lernrate auf "0,02", "0,1" und "0,5" geändert wird. Bei den Lernraten "0,02" und "0,5" kann dies nicht richtig vorhergesagt werden. Auch im Fall der Lernrate "0,5" schwankt das Ergebnis der Verlustfunktion unmittelbar nach dem Lernen.
No | Lernrate | Lernen / geschätzte Zeit |
---|---|---|
1 | 0.02 |
3m46.852s |
2 | 0.1 |
3m30.844s |
3 | 0.5 |
4m39.136s |
3.6. forget_bias
Tatsächlich wird das Diagramm der Verlustfunktion und das Vorhersageergebnis, wenn der nicht gut verstandene Parameter "forget_bias" von "BasicLSTMCell" in "0,25", "0,5", "1,0" (Standardwert) geändert wird, unten gezeigt. zeigen. Im Fall von "0,25" ist dies nicht vorhersehbar.
No | forget_bias | Lernen / geschätzte Zeit |
---|---|---|
1 | 0.25 |
4m27.725s |
2 | 0.5 |
4m27.089s |
3 | 1.0 |
3m30.844s |
Die folgende Tabelle zeigt die Vorhersageergebnisse und die Verlustfunktion, wenn der für die Optimierung verwendete Optimierer von "Gradient Descent Optimizer" auf "Adam Optimizer" umgeschaltet wird. Der "Adam Optimizer" hat eine schnellere Verlustreduzierung und der Endwert scheint niedriger zu sein, aber er vibriert heftig. Es ist schwierig, mit dem Lernen aufzuhören.
No | Optimierer | Lernen / geschätzte Zeit |
---|---|---|
1 | GradientDescentOptimizer |
3m30.844s |
2 | AdamOptimizer |
4m46.116s |
Die folgende Tabelle zeigt die Vorhersageergebnisse und die Verlustfunktion, wenn die RNN-Zelle von "BasicLSTMCell" auf "GRUCell" umgeschaltet wird. Es gab keinen großen Unterschied.
No | RNN-Zelle | Lernen / geschätzte Zeit |
---|---|---|
1 | BasicLSTMCell |
3m30.844s |
2 | GRUCell |
4m53.831s |
Ich würde gerne versuchen, was passieren würde, wenn ich realistischere Daten (Aktienkurse, Devisen usw.) erfahren und vorhersagen würde.
Recommended Posts