Méthode gourmande. Comment sélectionner simplement la main avec la valeur de sortie la plus élevée du réseau neuronal. les logits sont les valeurs avant de passer par la fonction d'activation de l'étage de sortie du réseau neuronal.
def greedy(logits): #Renvoie l'index de l'élément avec la valeur maximale parmi les éléments de la liste spécifiés dans l'argument
#les logits sont les valeurs avant de passer la fonction d'activation dans le réseau neuronal.
return np.argmax(logits)
Il semble que la probabilité change en fonction du coefficient de température.
def boltzmann(logits, temperature):
logits /= temperature # a /=b est un= a /Signification de b
logits -= logits.max() # a -=b est un= a -Signification de b. Ce sera une valeur négative. La valeur maximale est 0.
probabilities = np.exp(logits) # x =<0 fonction exp
probabilities /= probabilities.sum()
return np.random.choice(len(logits), p=probabilities) # choice(i, p=b)Est de 0 à i-Renvoie des nombres jusqu'à 1 au hasard avec une probabilité de b
Représentation schématique
À titre d'exemple simple, le traitement jusqu'à la sortie exp lorsqu'il y a 5 sorties (la sortie 1 est -0,2, la sortie 2 est 0,3, la sortie 3 est 0,5, la sortie 4 est 0, la sortie 5 est -0,6). La température est de 1.
Lorsque la température est réglée, plus la température est petite, plus l'amplitude de chaque sortie se rapproche. En d'autres termes, plus la température est basse, plus la probabilité du déplacement est égale.
Dans le chapitre 8, le processus de donner l'aléatoire se fait à la fin. Plus la probabilité d'avoir un caractère aléatoire est élevée, plus il est facile d'être sélectionné. Ce processus n'est pas fait au chapitre 12. Je ne le comprends pas bien, mais convient-il à l'usage?
return np.random.choice(len(logits), p=probabilities) # choice(i, p=b)Est de 0 à i-Renvoie des nombres jusqu'à 1 au hasard avec une probabilité de b
Recommended Posts