Wenn ich "Detaillierte Erklärung Deep Learning Tensorflfow / Keras Zeitreihendatenverarbeitung" las, das um den Mai dieses Jahres veröffentlicht wurde, generieren Sie Zufallszahlen. Der Teil kam heraus.
Es wurde gesagt, dass der Startwert jedes Mal dieselbe Zufallszahl generiert, aber ich habe die Beschreibung hier nicht verstanden, also habe ich sie kurz überprüft.
Die durch die Zufallsfunktion erzeugte Zufallszahl ist eine Pseudozufallszahl. [Pseudo Random-Wikipedia](https://ja.wikipedia.org/wiki/Pseudo Random) Erstens ist eine Pseudozufallszahl ein numerischer Wert, der wie eine unregelmäßige Zufallszahl aussieht, aber durch eine bestimmte deterministische Berechnung (fester Algorithmus?) Als zufällig berechnet wird.
Dies bedeutet, dass der numerische Wert, der als Anfangszustand bei der Berechnung der Pseudozufallszahl festgelegt wird, der Startwert ist.
Durch Setzen dieses Startwerts auf denselben numerischen Wert wird jedes Mal dieselbe Pseudozufallszahl generiert, daher habe ich viele Male versucht, Pseudozufallszahlen mit festem Startwert zu generieren.
rand_generation.py
import bumpy as np
rng = np.random.RandomState(100)
for i in range(10):
print(rng.randn(5)) #randn :Aus der Standardnormalverteilung entnommen
Generierungsergebnis: [-1.74976547 0.3426804 1.1530358 -0.25243604 0.98132079] [ 0.51421884 0.22117967 -1.07004333 -0.18949583 0.25500144] [-0.45802699 0.43516349 -0.58359505 0.81684707 0.67272081] [-0.10441114 -0.53128038 1.02973269 -0.43813562 -1.11831825] [ 1.61898166 1.54160517 -0.25187914 -0.84243574 0.18451869] [ 0.9370822 0.73100034 1.36155613 -0.32623806 0.05567601] [ 0.22239961 -1.443217 -0.75635231 0.81645401 0.75044476] [-0.45594693 1.18962227 -1.69061683 -1.35639905 -1.23243451] [-0.54443916 -0.66817174 0.00731456 -0.61293874 1.29974807] [-1.73309562 -0.9833101 0.35750775 -1.6135785 1.47071387]
Oh, ich dachte, dass es jedes Mal eine andere Zufallszahl sein würde, wenn es generiert wird, aber es scheint, dass die zweite und nachfolgende Generation basierend auf der zuvor generierten Zufallszahl neu generiert werden. https://teratail.com/questions/15388 (Ich habe dies als Referenz verwendet.)
Im obigen Skript wird der Startwert auf 100 gesetzt und eine Pseudozufallszahlenliste der Länge 5 wird 10 Mal generiert (dh die Zufallszahl wird 50 Mal generiert?). Sie ist also jedes Mal anders.
Wenn ich dasselbe Skript erneut ausführte, wurde dieselbe Zufallszahl generiert.
Durch Verwendung des gleichen Startwerts erzeugt derselbe Algorithmus immer die gleiche erste Pseudozufallszahl. ↓ Eine zweite Pseudozufallszahl wird basierend auf der ersten Pseudozufallszahl erzeugt. Wenn also die erste immer gleich ist, ist die zweite immer gleich ...
Es bedeutet zu wiederholen. Die Tatsache, dass jedes Mal dieselbe Pseudozufallszahl erzeugt wird, bedeutet, dass dieselbe Pseudozufallszahlenfolge ab dem Zeitpunkt erzeugt wird, zu dem der Startwert gesetzt wird. (Wenn Sie darüber nachdenken, ist es keine Zufallszahl mehr, wenn immer dieselbe Zufallszahl generiert wird.)
Selbst beim maschinellen Lernen wissen Sie möglicherweise nicht, ob es sich um den Leistungsunterschied handelt, wenn Sie die Leistung anhand zufälliger numerischer Werte bewerten möchten, wenn Sie jedes Mal unterschiedliche Zufallszahlen verwenden, da es sich um einen Unterschied in den Zufallszahlen oder das Ergebnis einer Verbesserung der Parameter usw. handelt. Es scheint, dass es verschiedene Verwendungszwecke gibt.
Übrigens, wenn Sie keinen Startwert festlegen, können Sie anscheinend garantieren, dass der Startwert jedes Mal anders ist, indem Sie die Systemzeit als Startwert verwenden. War es so ein Durcheinander? https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.RandomState.html (Ich habe dies als Referenz verwendet.)
Bedeutet dies, dass die n-1. Pseudozufallszahl der Keim ist, wenn die n-te Pseudozufallszahl erzeugt wird?
Recommended Posts