Choisissez la liste de variable compte tenu de la probabilité de chaque variable
Je suis en train d'essayer de coder un programme qui utilise le softmax fonction d'activation dans le milieu.
Droit maintenant, j'ai une liste de probabilités comme ceci:
P[0.10,0.25,0.60,0.05]
La somme de toutes les variables de P est toujours 1.
Je voulais un moyen de choisir l'indice de la liste compte tenu de la probabilité attachée à elle.
Ou, en d'autres termes, une fonction qui est retourné
0 - 10% of the time
1 - 25% of the time
2 - 60% of the time
3 - 5% of the time
J'ai absolument aucune idée de par où commencer sur ce. Toute aide serait appréciée. 🙂
Vous devez vous connecter pour publier un commentaire.
Vous pouvez facilement réaliser cela avec numpy. Il a un choix fonction qui accepte le paramètre de probabilités.
En gros, faire un distribution de probabilité cumulative (CDF) tableau. Fondamentalement, la valeur de la CDF pour un indice donné est égale à la somme de toutes les valeurs de P égale ou inférieure à celle de l'indice. Puis de générer un nombre aléatoire entre 0 et 1, et faire une recherche binaire (ou linéaire de recherche si vous le souhaitez). Voici un code simple pour elle.
bien sûr, vous pouvez générer un tas de hasard indices avec quelque chose comme
rendement
(résultats, et doit varier). Bien sûr, la recherche binaire est plutôt inutile pour si peu de possibles indices, mais fortement recommandé pour les distributions avec le plus possible les indices.
Hmm intéressant, comment au sujet de...
Générer un nombre entre 0 et 1.
Parcourir la liste soustrayant la probabilité de chaque élément de votre numéro.
Choisir un élément qui, après soustraction, a pris votre nombre à 0 ou en dessous.
C'est simple, O(n) et devrait fonctionner 🙂
Ce que vous cherchez est un pondérée de génération aléatoire, et même s'il n'est pas intégré, il y a beaucoup de standard de recettes de ce.
Ce problème est équivalent à un échantillonnage à partir d'un catégorique de la distribution. Cette distribution est souvent confondue avec la distribution multinomiale qui modélise le résultat de plusieurs échantillons à partir de la catégorie de distribution.
Dans numpy, il est facile de l'échantillon à partir de la distribution multinomiale à l'aide de numpy.aléatoire.multinomiale, mais que certaines catégorique version de cela n'existe pas. Cependant, il peut être accompli par l'échantillonnage à partir de la distribution multinomiale avec un seul essai puis retour à la non-zéro élément de la sortie.