Selon le fichier README d'Entropix, Entropix utilise une méthode d'échantillonnage basée sur l'entropie. Cet article explique les techniques d'échantillonnage spécifiques basées sur l'entropie et la varentropie.
Commençons par expliquer l'entropie et la varentropie, car ce sont des facteurs clés pour déterminer la stratégie d'échantillonnage.
En théorie de l'information, l'entropie est une mesure de l'incertitude d'une variable aléatoire. L'entropie d'une variable aléatoire X est définie par l'équation suivante :
L'entropie est maximisée lorsque la distribution de probabilité est uniforme. À l’inverse, lorsqu’un état spécifique est beaucoup plus probable que d’autres, l’entropie diminue.
La varentropie, étroitement liée à l'entropie, représente la variabilité du contenu de l'information. Compte tenu du contenu informationnel I(X), de l'entropie H(X) et de la variance pour une variable aléatoire X, la varentropie V E(X) est définie comme suit :
La varentropie devient grande lorsque les probabilités p(x_i) varient considérablement. Il devient petit lorsque les probabilités sont uniformes, soit lorsque la distribution a une entropie maximale, soit lorsqu'une valeur a une probabilité de 1 et que toutes les autres ont une probabilité de 0.
Ensuite, explorons comment les stratégies d'échantillonnage changent en fonction des valeurs d'entropie et de varentropie.
Dans ce scénario, un jeton particulier a une probabilité de prédiction beaucoup plus élevée que les autres. Puisque le prochain jeton est presque certain, Argmax est utilisé.
if entLien de code
2. Faible entropie, varentropie élevée → Branche
Cela se produit lorsqu'il existe une certaine confiance, mais que plusieurs options viables existent. Dans ce cas, la stratégie Branche est utilisée pour échantillonner parmi plusieurs choix et sélectionner le meilleur résultat.
elif ent 5.0: temp_adj = 1.2 0.3 * interaction_strength top_k_adj = max(5, int(top_k * (1 0.5 * (1 - agreement)))) return _sample(logits, temperature=min(1.5, temperature * temp_adj), top_p=top_p, top_k=top_k_adj, min_p=min_p, generator=generator)Lien de code
Bien que cette stratégie soit appelée « Branche », le code actuel semble ajuster la plage d'échantillonnage et sélectionner un seul chemin. (Si quelqu'un a plus d'informations, des éclaircissements supplémentaires seraient appréciés.)
3. Entropie élevée, varentropie faible → CoT ou insérer un jeton de pause
Lorsque les probabilités de prédiction du jeton suivant sont assez uniformes, indiquant que le contexte suivant n'est pas certain, un jeton de clarification est inséré pour résoudre l'ambiguïté.
elif ent > 3.0 and ventLien de code
4. Haute entropie, haute varentropie → Rééchantillonner
Dans ce cas, il existe plusieurs contextes et les probabilités de prédiction du prochain jeton sont faibles. Une stratégie de rééchantillonnage est utilisée avec un réglage de température plus élevé et un top-p plus bas.
elif ent > 5.0 and vent > 5.0: temp_adj = 2.0 0.5 * attn_vent top_p_adj = max(0.5, top_p - 0.2 * attn_ent) return _sample(logits, temperature=max(2.0, temperature * temp_adj), top_p=top_p_adj, top_k=top_k, min_p=min_p, generator=generator)Lien de code
Cas intermédiaires
Si aucune des conditions ci-dessus n'est remplie, un échantillonnage adaptatif est effectué. Plusieurs échantillons sont prélevés et le meilleur score d'échantillonnage est calculé en fonction des informations d'entropie, de varentropie et d'attention.
else: return adaptive_sample( logits, metrics, gen_tokens, n_samples=5, base_temp=temperature, base_top_p=top_p, base_top_k=top_k, generator=generator )Lien de code
Références
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3