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 insensé produit par des méthodes de décodage déterministes comme la recherche par faisceau. Depuis, cette technique a été appliquée dans des domaines 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é cumulée dépasse p. Cette méthode adapte la taille du réservoir 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 grand modèle de langage.
Technique
À chaque étape de la 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 probabilité la plus élevée (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 insensé. 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 cumulée, 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 probabilité en ordre décroissant.
- Le noyau est formé en sélectionnant les jetons depuis le haut de la liste jusqu'à ce que leur probabilité cumulée dépasse le seuil prédéfini, p.
- Les probabilités des jetons dans ce noyau sont ensuite redimensionnées pour qu'elles somment à 1. Tous les jetons en dehors du noyau sont écartés (probabilité de 0).
- Le jeton suivant final est échantillonné aléatoirement à partir de cette nouvelle distribution plus petite.
Formellement, le noyau, V^(p) ⊆ V, est défini comme le plus petit ensemble de jetons satisfaisant : la somme de P(x | x_1, ..., x_{t-1}) pour tous les x dans V^(p) est supérieure ou égale à p. Ici, P(x | x_1, ..., x_{t-1}) représente la probabilité d'un jeton x étant donné les jetons précédents x_1, ..., 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 on fixe p = 0,8 :
- Les jetons sont triés par probabilité : [the, a, cat, dog, eats].
- La probabilité cumulée 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é cumulée ≥ 0,8, soit V^(0,8) = {the, a, cat}.
- Les probabilités de cet ensemble sont redimensionnées pour sommer à 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.
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é cumulée 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é cumulée ≥ 0,8, soit {the, a, cat}.
- Les probabilités de cet ensemble sont redimensionnées pour sommer à 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, donc dog et eats ont une chance de 0 % d'être choisis.
Échantillonnage top-k
L'échantillonnage top-k est une technique similaire où le réservoir de jetons candidats est restreint aux k jetons les plus probables. Le principal avantage de top-p est son adaptabilité. Lorsque le modèle est très confiant quant au 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, 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, cette technique a également été adaptée dans 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, 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é utile dans des tâches comme la génération automatique de questions, où la diversité est cruciale pour créer des ensembles d'entraînement efficaces pour les modèles de réponse aux questions.
Conception de médicaments et ingénierie des protéines
L'échantillonnage top-p est utilisé en biologie computationnelle pour générer de nouvelles séquences moléculaires ou protéiques à partir de modèles de langage spécialisés. Dans la conception de médicaments, des modèles de langage entraînés sur des structures moléculaires utilisent l'échantillonnage par noyau pour proposer de nouveaux candidats médicaments valides. De même, en ingénierie des protéines, des modèles entraînés sur des séquences protéiques emploient cette méthode pour explorer des variantes avec des propriétés souhaitées, élargissant ainsi l'espace de recherche au-delà des variantes naturelles.
Géophysique
En géophysique, l'échantillonnage top-p a été utilisé pour générer des données sismiques synthétiques ou modéliser des structures souterraines. En échantillonnant des séquences géologiques à partir de modèles probabilistes, les chercheurs peuvent créer des scénarios diversifiés et plausibles, ce qui aide à quantifier l'incertitude et à interpréter les relevés sismiques.
Considérations d'implémentation
L'échantillonnage top-p nécessite de trier la distribution de probabilité à chaque étape de génération, ce qui ajoute un coût computationnel par rapport au décodage glouton. Cependant, pour de nombreuses applications, les avantages en termes de qualité de sortie justifient ce coût. Des implémentations efficaces utilisent des opérations vectorisées et des masques pour accélérer le processus, et la technique est intégrée par défaut dans de nombreux frameworks de génération de texte.
Relation avec d'autres méthodes
L'échantillonnage top-p est l'une des plusieurs stratégies de décodage stochastique. Il complète d'autres techniques comme l'ajustement de température, qui modifie la netteté de la distribution de probabilité avant l'échantillonnage, et l'échantillonnage top-k. En pratique, top-p et température sont souvent combinés pour équilibrer diversité et cohérence dans le texte généré. Une température plus basse rend la distribution plus pointue, ce qui réduit la taille du noyau sélectionné par top-p, tandis qu'une température plus élevée l'élargit, augmentant la diversité.
Considérations d'implémentation
En pratique, l'échantillonnage top-p nécessite de trier la distribution de probabilité à chaque étape de génération, ce qui ajoute un coût de calcul par rapport au décodage glouton. Cependant, pour de nombreuses applications, la qualité du résultat justifie ce coût. Des implémentations efficaces dans des frameworks comme TensorFlow et PyTorch optimisent ce processus en utilisant des opérations de tri et de masquage. Le seuil p est un hyperparamètre qui peut être ajusté ; des valeurs courantes vont de 0,9 à 0,95 pour de nombreuses tâches de génération de langage, mais la valeur optimale dépend de l'application spécifique et du modèle utilisé.
Impact et Adoption
Depuis sa proposition en 2019, l'échantillonnage top-p est devenu une technique standard dans le décodage de nombreux grands modèles de langage, y compris ceux développés par des organisations comme OpenAI, Anthropic et Google DeepMind. Il est souvent la méthode d'échantillonnage par défaut dans les API et les bibliothèques de génération de texte, car il offre un bon équilibre entre qualité et diversité. L'adoption généralisée de cette technique a contribué à améliorer la fluidité et la créativité des textes générés, tout en réduisant les répétitions et les incohérences qui étaient courantes avec les approches déterministes.