Gierige Methode. So wählen Sie einfach die Bewegung mit dem höchsten Ausgabewert des neuronalen Netzwerks aus. Logs sind die Werte, bevor die Aktivierungsfunktion der Ausgangsstufe des neuronalen Netzwerks durchlaufen wird.
def greedy(logits): #Gibt den Index des Elements mit dem Maximalwert unter den im Argument angegebenen Elementen der Liste zurück
#Logs sind die Werte vor dem Übergeben der Aktivierungsfunktion im neuronalen Netzwerk.
return np.argmax(logits)
Es scheint, dass sich die Wahrscheinlichkeit in Abhängigkeit vom Temperaturkoeffizienten ändert.
def boltzmann(logits, temperature):
logits /= temperature # a /=b ist a= a /Bedeutung von b
logits -= logits.max() # a -=b ist a= a -Bedeutung von b. Es wird ein negativer Wert sein. Der Maximalwert ist 0.
probabilities = np.exp(logits) # x =<0 exp Funktion
probabilities /= probabilities.sum()
return np.random.choice(len(logits), p=probabilities) # choice(i, p=b)Ist 0 bis i-Gibt zufällig Zahlen bis zu 1 mit einer Wahrscheinlichkeit von b zurück
Flussdiagramm
Als einfaches Beispiel wird die Verarbeitung bis zum exp-Ausgang bei 5 Ausgängen gezeigt (Ausgang 1 ist -0,2, Ausgang 2 ist 0,3, Ausgang 3 ist 0,5, Ausgang 4 ist 0, Ausgang 5 ist -0,6). Die Temperatur beträgt 1.
Wenn die Temperatur eingestellt wird, wird die Größe jedes Ausgangs umso näher, je kleiner die Temperatur ist. Mit anderen Worten, je kleiner die Temperatur ist, desto gleichmäßiger ist die Wahrscheinlichkeit der Bewegung.
In Kapitel 8 wird der Prozess der Zufälligkeit am Ende durchgeführt. Je höher die Wahrscheinlichkeit bei Zufälligkeit ist, desto einfacher ist die Auswahl. Dieser Vorgang wird in Kapitel 12 nicht durchgeführt. Ich verstehe es nicht gut, aber ist es für den Gebrauch geeignet?
return np.random.choice(len(logits), p=probabilities) # choice(i, p=b)Ist 0 bis i-Gibt zufällig Zahlen bis zu 1 mit einer Wahrscheinlichkeit von b zurück
Recommended Posts