L'échantillonnage top-p, également connu sous le nom d'échantillonnage par noyau, est une stratégie de décodage stochastique utilisée pour générer des séquences à partir de modèles probabilistes autorégressifs, notamment dans la génération de langage naturel. Il a été initialement proposé par Ari Holtzman, Yejin Choi et leurs collègues en 2019 pour résoudre le problème du texte répétitif et non-sensique produit par les méthodes de décodage déterministes comme la recherche par faisceau. La technique a depuis été appliquée dans d'autres domaines scientifiques, tels que l'ingénierie des protéines et la géophysique.
Dans l'échantillonnage top-p, un seuil de probabilité p est défini, et l'élément suivant d'une séquence est échantillonné uniquement à partir du plus petit ensemble possible de candidats à haute probabilité dont la probabilité cumulative dépasse p. Cette méthode adapte la taille du pool de candidats en fonction de la certitude du modèle, ce qui la rend plus flexible que l'échantillonnage top-k, qui échantillonne à partir d'un nombre fixe de candidats. En raison de son efficacité, l'échantillonnage top-p est largement utilisé dans de nombreuses applications de modèles de langage de grande taille.
Technique
À chaque étape du processus de génération de texte, un modèle de langage calcule une distribution de probabilité sur l'ensemble de son vocabulaire pour le prochain jeton. Bien qu'il soit possible de simplement choisir le jeton avec la plus haute probabilité (recherche gloutonne) ou un ensemble limité de séquences à haute probabilité (recherche par faisceau), ces méthodes déterministes produisent souvent un texte terne, répétitif ou non-sensique. L'échantillonnage top-p introduit du hasard pour éviter ces problèmes tout en maintenant la qualité.
L'idée centrale est d'échantillonner à partir d'un ensemble plus petit et plus crédible de jetons à chaque étape, appelé le noyau. Ce noyau contient les jetons suivants les plus probables dont la probabilité combinée, ou cumulative, dépasse juste le seuil p. En échantillonnant uniquement à partir de ce groupe de taille dynamique, le modèle peut s'adapter à différentes situations. Lorsque le modèle est confiant quant au prochain jeton (par exemple, un jeton a une probabilité très élevée), le noyau sera petit. Lorsque le modèle est incertain (les probabilités sont plus uniformément réparties), le noyau sera plus grand, permettant plus de diversité.
Le processus à chaque étape est le suivant :
- Le modèle calcule les probabilités pour tous les jetons suivants possibles.
- Les jetons sont triés par leur probabilité en ordre décroissant.
- Le noyau est formé en sélectionnant les jetons du haut de la liste jusqu'à ce que leur probabilité cumulative dépasse le seuil prédéfini, p.
- Les probabilités des jetons dans ce noyau sont ensuite redimensionnées pour qu'elles totalisent 1. Tous les jetons en dehors du noyau sont écartés (probabilité de 0).
- Le prochain jeton final est échantillonné aléatoirement à partir de cette nouvelle distribution plus petite.
Formellement, le noyau, \(V^{(p)} \subseteq V\), est défini comme le plus petit ensemble de jetons satisfaisant :
\[\sum_{x \in V^{(p)}} P(x|x_1, \dots, x_{t-1}) \geq p\]
Dans cette formule, \(P(x|x_1, \dots, x_{t-1})\) représente la probabilité d'un jeton \(x\) étant donné les jetons précédents \(x_1, \dots, x_{t-1}\).
Exemple
Imaginez qu'à une certaine étape, un modèle de langage ait un vocabulaire de cinq mots : [the, a, cat, dog, eats] et produise les probabilités suivantes :
- the : 0,5
- a : 0,2
- cat : 0,1
- dog : 0,1
- eats : 0,1
Si nous définissons \(p = 0,8\) :
- Les jetons sont triés par probabilité : [the, a, cat, dog, eats].
- La probabilité cumulative est calculée :
- the : 0,5
- the + a : 0,5 + 0,2 = 0,7
- the + a + cat : 0,7 + 0,1 = 0,8
- Le noyau est le plus petit ensemble avec une probabilité cumulative ≥ 0,8, qui est \(V^{(0,8)} = \{\text{the, a, cat}\}\).
- Les probabilités pour cet ensemble sont redimensionnées pour totaliser 1 :
- P(the) = 0,5 / 0,8 = 0,625
- P(a) = 0,2 / 0,8 = 0,25
- P(cat) = 0,1 / 0,8 = 0,125
- Le prochain jeton est ensuite échantillonné à partir de cette nouvelle distribution, ce qui signifie que dog et eats ont 0 % de chance d'être choisis.
Échantillonnage top-k
L'échantillonnage top-k est une technique similaire où le pool de jetons candidats est restreint aux \(k\) jetons les plus probables. Le principal avantage du top-p est son adaptabilité. Lorsque le modèle est très certain du prochain jeton (une distribution pointue), le noyau \(V^{(p)}\) peut être très petit. Lorsque le modèle est incertain (une distribution plate), le noyau peut être beaucoup plus grand, permettant plus de diversité. En revanche, le top-k échantillonne toujours à partir d'un nombre fixe de jetons, ce qui peut être trop restrictif ou trop large selon le contexte.
Applications
Bien que l'échantillonnage top-p soit surtout connu comme stratégie de décodage pour les grands modèles de langage, la technique a également été adaptée pour d'autres domaines scientifiques impliquant la génération ou l'analyse de données séquentielles à partir de modèles probabilistes.
Génération de langage naturel
Dans son domaine d'origine de la génération de langage naturel, l'échantillonnage top-p est apprécié pour sa capacité à produire un texte plus diversifié et cohérent par rapport aux méthodes déterministes. Il a été démontré qu'il est bénéfique dans des tâches comme la génération automatique de questions, où la diversité des échantillons est importante pour créer des données d'entraînement efficaces pour les modèles de réponse aux questions.
Conception de médicaments et de protéines
L'échantillonnage top-p est utilisé en biologie computationnelle pour générer de nouvelles séquences moléculaires et protéiques à partir de modèles de langage spécialisés. Dans la conception de médicaments de novo, les modèles de langage chimique entraînés sur des structures moléculaires utilisent l'échantillonnage par noyau pour générer des bibliothèques ciblées de nouveaux candidats médicaments valides. De même, les modèles de langage protéique exploitent l'échantillonnage top-p pour proposer de nouvelles séquences protéiques avec des propriétés souhaitées, aidant ainsi aux efforts d'ingénierie des protéines.
Géophysique
En géophysique, l'échantillonnage top-p a été appliqué pour générer des séquences d'événements géologiques ou modéliser des structures souterraines. Par exemple, il peut être utilisé dans l'inversion sismique ou la caractérisation de réservoirs pour échantillonner à partir de modèles probabilistes qui prédisent les propriétés souterraines, aidant à quantifier l'incertitude dans les interprétations géologiques.
Implémentation et utilisation
En pratique, l'échantillonnage top-p est souvent combiné avec d'autres stratégies de décodage, comme l'ajustement de température, pour affiner le hasard et la qualité du texte généré. L'ajustement de température modifie la netteté de la distribution de probabilité avant d'appliquer le top-p, permettant un contrôle supplémentaire sur la diversité. De nombreux frameworks et bibliothèques de apprentissage automatique offrent un support intégré pour l'échantillonnage top-p, facilitant son intégration dans les pipelines existants.
L'échantillonnage top-p est une fonctionnalité standard dans les API des grandes entreprises d'IA, y compris OpenAI, Anthropic et Google DeepMind, ainsi que dans les bibliothèques open source comme Transformers de Hugging Face. Il est généralement spécifié comme un paramètre (par exemple, top_p) dans les fonctions de génération de texte, avec des valeurs courantes allant de 0,9 à 0,95 pour une sortie équilibrée.
Le choix de p affecte considérablement la sortie. Un p plus bas (par exemple, 0,5) rend le modèle plus conservateur, se concentrant sur les jetons à haute probabilité, tandis qu'un p plus élevé (par exemple, 0,99) permet plus de diversité mais peut augmenter le risque d'incohérence. Les chercheurs et praticiens ajustent souvent p en fonction de la tâche spécifique et des caractéristiques de sortie souhaitées.
Voir aussi
- Échantillonnage top-k
- Échantillonnage par température
- Recherche par faisceau
- Décodage glouton