Techniques de détection de l’incertitude des LLM
(thariq.io)- Entropix est un projet qui cherche à améliorer la qualité de l’inférence en lisant l’incertitude d’un LLM au moment où il choisit le token suivant, puis en changeant la méthode d’échantillonnage selon l’état
- Les critères de décision sont l’entropie et la varentropie (varentropy) de la distribution des logits ; la combinaison de ces deux valeurs permet de répartir l’état de confiance du modèle en 4 catégories
- Quand la confiance est élevée, l’échantillonnage argmax convient, mais lorsqu’il existe plusieurs candidats sérieux, on peut comparer les chemins via des embranchements (branching)
- Un état d’entropie élevée peut signifier que le modèle ne sait vraiment pas, ou que les options sont en pratique équivalentes ; il faut alors des réponses comme l’insertion de tokens de réflexion (thinking tokens), l’ajustement de la température ou des embranchements
- Il n’existe pas encore d’évaluation à grande échelle, donc l’effet reste incertain, mais l’échantillonnage au moment de l’inférence est un domaine où l’open source peut tenter des améliorations expérimentales sans gros budget
Le problème visé par Entropix
- Entropix est un projet développé par XJDR, qui vise à améliorer l’inférence en changeant de stratégie d’échantillonnage lorsque le modèle est incertain
- Il n’existe pas encore d’évaluation à grande échelle d’Entropix, donc l’ampleur du gain réel de performance n’est pas claire
- Cela dit, l’échantillonnage fondé sur l’incertitude fournit une méthode expérimentale et un modèle mental pour regarder autrement l’inférence des LLM
Où l’incertitude des LLM apparaît-elle ?
- L’échantillonnage est le processus qui détermine quel token choisir parmi les logits, c’est-à-dire la distribution des tokens possibles pour un LLM
- Le degré de confiance du modèle se voit dans la distribution des logits pour le token suivant
- Si la confiance est élevée, la probabilité se concentre nettement sur quelques tokens
- Si la confiance est faible, les candidats possibles pour le token suivant sont plus largement répartis
- L’incertitude n’est pas toujours un mauvais signal, et elle peut avoir plusieurs causes
- Lorsque les tokens sont des synonymes, comme
goodetgreat, ou sont en pratique équivalents - Lorsqu’il existe des chemins de branchement, par exemple si un programme peut être écrit en Java ou en C
- Lorsque le modèle ne sait pas quoi faire, ou rencontre une entrée hors distribution (out of distribution) qu’il n’a pas vue dans ses données d’entraînement
- Lorsque les tokens sont des synonymes, comme
Entropie et varentropie
- Entropix mesure l’incertitude au moyen de l’entropie (entropy) et de la varentropie (varentropy) des logits
- L’entropie indique à quel point les logits prédits diffèrent les uns des autres, et montre l’incertitude associée au résultat le plus probable
- Avec une faible entropie, le modèle est assez confiant sur certains logits
- Avec une forte entropie, la distribution des logits devient plus uniforme et la confiance diminue
- La varentropie est un indicateur qui montre la forme (shape) de l’incertitude
- Une varentropie élevée signifie que certaines valeurs diffèrent fortement des autres
- Les deux indicateurs reposent sur le concept de surprisal (auto-information)
- Le surprisal mesure à quel point un événement est inattendu compte tenu de sa probabilité
- Si la probabilité d’un événement
xestP(x), son surprisal estI(x) = -log₂(P(x)) - Si
P(x) = 1/8, le surprisal est de 3 bits ; siP(x) = 1/2, il est de 1 bit
- L’entropie est l’espérance du surprisal sur tous les résultats possibles
- La varentropie est calculée comme la variance du surprisal, et indique à quel point certains résultats sont plus surprenants que le surprisal moyen
Les 4 états d’incertitude
- En combinant entropie et varentropie, on peut diviser l’état du modèle en 4 catégories
- Faible entropie · faible varentropie : une distribution pointue où un résultat a une probabilité très élevée
- Faible entropie · forte varentropie : une distribution avec quelques pics distincts
- Forte entropie · faible varentropie : une distribution uniforme ou presque uniforme
- Forte entropie · forte varentropie : une distribution largement étalée, mais non uniforme
Échantillonnage adaptatif selon l’état
-
Faible entropie · faible varentropie
- C’est l’état idéal : le modèle est relativement sûr non seulement de son premier choix, mais aussi de l’alternative si ce choix était erroné
- La liste des candidats est souvent bien ordonnée, ce qui rend adapté l’échantillonnage argmax, qui choisit le token le plus probable
-
Faible entropie · forte varentropie
- Le modèle attribue une probabilité très élevée à quelques choix
- Cet état est difficile à interpréter : il peut représenter tout un nouveau chemin de sortie, ou une situation où plusieurs formulations sont toutes possibles, comme avec des synonymes
- Une réponse possible est le branchement (branching) : prédire les deux logits, suivre chacun des chemins, puis comparer les résultats après un certain point
- Si les résultats des branches ont des niveaux de confiance similaires mais des contenus différents, on peut transformer cela en question à poser à l’utilisateur
-
Forte entropie · faible varentropie
- Le modèle peut être dans un état de faible confiance, ou dans une situation où toutes les options sont interchangeables
- Entropix propose alors d’insérer comme token suivant un token de réflexion, afin d’amener le modèle vers un état de confiance plus élevée
- Un exemple est un token comme
Wait.. - Le token de réflexion est inséré dans la sortie comme un signal indiquant que le modèle doit passer plus de temps de calcul à réfléchir avant de répondre
- Par exemple, si le modèle s’apprête à prédire
The capital of Germany is Parissans en être sûr, l’insertion deWaitpeut conduire à une suite commeThe capital of Germany is Paris… Wait, no, it’s actually Berlin
-
Forte entropie · forte varentropie
- Il n’y a pas de candidat clairement dominant, mais le modèle est plus confiant dans certaines sorties que dans d’autres
- Comme les meilleurs choix peuvent tous être acceptables, par exemple s’ils sont synonymes, on peut faire un choix aléatoire avec une température (temperature) plus élevée
- Comme dans les états précédents, il est aussi possible de créer des branches ou d’insérer un token de réflexion
Différence entre branchement et tokens de réflexion
- Les deux méthodes cherchent à utiliser davantage de calcul d’inférence dans les états incertains
- La prédiction par branchement suit plusieurs logits pour voir vers quels autres tokens ils mènent
- On l’appelle souvent MCTS (Monte Carlo Tree Search)
- Elle a souvent été tentée avec les LLM, mais les résultats ont été mitigés
- Le principal compromis est que chaque branche ne peut pas tirer parti du calcul effectué par les autres
- Les tokens de réflexion permettent d’obtenir du calcul supplémentaire dans un état incertain, sans le consacrer à explorer des branches qui pourront être jetées
- L’insertion de
Wait…amène l’IA à reconnaître qu’elle a pu se tromper
- L’insertion de
- La question de savoir laquelle des deux approches est meilleure — branchement ou tokens de réflexion — reste une question de recherche ouverte
Signaux fondés sur l’attention
- Entropix utilise aussi en partie d’autres mesures d’entropie lorsqu’il ajuste la température
- Attention Entropy indique si une tête d’attention suit un token précis ou répartit son attention sur de nombreux tokens dans le contexte
- Attention Agreement montre si plusieurs têtes d’attention se concentrent sur le même token ou regardent des tokens différents
- Si l’entropie des têtes est faible et que l’agreement est élevé, cela peut constituer un signal supplémentaire indiquant qu’on peut échantillonner le token le plus probable
- Si l’agreement est faible, différentes têtes peuvent contribuer à des prédictions différentes, ce qui peut justifier d’envisager un branchement
Pourquoi c’est important
- L’idée d’Entropix est facile à comprendre et n’est pas entièrement nouvelle, mais elle pousse à repenser l’amélioration de l’inférence des LLM au niveau de l’échantillonnage
- Même si les évaluations n’ont pas encore confirmé de gain important, ces techniques au moment de l’inférence sont relativement faciles à expérimenter
- Elles pourraient devenir une piste prometteuse pour permettre à des hackers open source de tenter d’améliorer l’inférence sans gros budget
1 commentaires
Avis sur Hacker News
Il dit qu’on lui a posé deux fois la question : « Monsieur Babbage, si l’on entre de mauvais chiffres dans la machine, obtient-on les bonnes réponses ? »
Charles Babbage ajoutait qu’il n’arrivait pas vraiment à comprendre quel embrouillement de pensée pouvait produire une telle question
Ce genre de techniques d’échantillonnage fait partie des rares cas où l’on peut encore améliorer des modèles récents avec du matériel grand public
Ça ne durera probablement pas, et au final on verra sans doute apparaître des échantillonneurs entraînables, mais pour l’instant ça vaut le coup de bricoler avec : https://github.com/codelion/optillm
Les auteurs d’optillm semblent penser que le calcul supplémentaire d’Entropics ne donne pas de meilleurs résultats qu’un simple décodage en chaîne de pensée. Je ne sais pas s’ils ont aussi vérifié l’efficacité : https://x.com/asankhaya/status/1846736390152949966
Beaucoup de problèmes des LLM semblent venir de la fuite sémantique, comme dans l’article GSM Symbolic, ou d’une attention détournée par des informations non pertinentes ; il y a peut-être donc aussi une marge d’amélioration côté attention
J’ai d’ailleurs écrit quelques billets à ce sujet : https://zzbbyy.substack.com/p/semantic-leakage-quick-notes, https://zzbbyy.substack.com/p/llms-and-reasoning, https://zzbbyy.substack.com/p/o1-inference-time-turing-machi...
Certains affirment que ça marche mieux, mais il n’y a pas de benchmark rigoureux pour le démontrer. On entend surtout des choses du genre « le texte est meilleur » ou « le style est plus frais » ; sur ce point, je trouve que LeCun a raison à 100 %. Évaluer un modèle généraliste en disant qu’il est bon en « poésie » ou en « prose », c’est presque la définition même d’un biais, et c’est se tirer soi-même une balle dans le pied avec des anecdotes personnelles
J’aimerais voir les résultats appliqués au code ou aux maths. Par exemple, j’aimerais un benchmark soigneux avant/après pour savoir si l’échantillonneur fonctionne mieux sur des problèmes de maths d’olympiade
Ou bien cela pourrait être une faiblesse plus fondamentale du mécanisme d’attention. Des alternatives commencent d’ailleurs à apparaître
Je ne sais pas bien si ce projet repose sur des articles académiques, c’est-à-dire s’il utilise des techniques publiées pour juger l’incertitude des LLM
Parmi les travaux récents, celui-ci semble assez pertinent : https://learnandburn.ai/p/how-to-tell-if-an-llm-is-just-gues...
On y utilise l’idée d’entropie sémantique, plus sophistiquée que la simple entropie standard des logits de tokens, et mieux adaptée pour quantifier statistiquement si un LLM est en train de deviner ou s’il a un fort niveau de confiance. L’article original est un papier publié dans Nature par des auteurs d’Oxford
Il existe aussi un travail [1] qui généralise davantage cette approche, en effectuant un clustering souple à partir d’une notion d’équivalence sémantique entre les sorties échantillonnées
Il faut quand même rester prudent. Nous avons récemment publié un article [2] qui benchmarke de façon globale les meilleures méthodes récentes d’estimation d’incertitude pour les LLM, et dans de nombreux cas les approches sensibles à la sémantique fonctionnaient très bien, mais sur d’autres tâches des baselines simples comme l’entropie moyenne de la distribution des tokens faisaient aussi bien, voire mieux, que des techniques plus complexes
Nous développons également une bibliothèque open source Python [3] qui implémente des méthodes récentes d’estimation d’incertitude applicables aux LLM, et qui facilite à la fois le benchmark des méthodes d’estimation et l’estimation de l’incertitude des sorties de modèles en production
[1] https://arxiv.org/abs/2307.01379
[2] https://arxiv.org/abs/2406.15627
[3] https://github.com/IINemo/lm-polygraph
J’ai suivi ça d’assez près, et j’ai trouvé intéressant qu’un petit modèle puisse être plus efficace avec cet échantillonneur. Si le sujet vous intéresse, ça vaut la peine de lire ses posts, et ce type d’échantillonnage donne l’impression d’être quelque chose de vraiment important
Comme je l’ai écrit dans un autre commentaire, l’auteur semble avoir une incompréhension de fond, et la note en haut de l’article laisse penser que c’est peut-être pour cela qu’il n’a pas obtenu de résultats vraiment pratiques
Ce n’est pas pour le blâmer ni pour le décourager. Il a peut-être mis le doigt sur quelque chose, et ce type d’approche originale vaut la peine d’être essayé. Mais, pour les raisons évoquées plus haut, s’il n’y avait pas d’effet positif il aurait été difficile d’en faire un papier ; il n’est donc pas surprenant non plus qu’il n’existe pas de publication académique sur cette approche
Quand l’entropie est élevée, le modèle devrait avoir une porte de sortie
Il faudrait déclencher un signal indiquant que la certitude de la réponse globale est faible, accumuler un score de certitude pendant la génération, puis permettre à l’utilisateur de vérifier à la fin si la réponse était vraiment de très mauvaise qualité en termes de certitude. Une telle réponse devrait pouvoir être écartée ou remplacée par « je ne sais pas »
Quand on compare plusieurs méthodes de quantification de l’incertitude d’un modèle dans ce domaine, on effectue souvent une validation par refus. En gros, on continue de refuser les points de données dont l’incertitude est élevée, puis on observe à quel point la qualité moyenne des sorties restantes augmente. Une bonne estimation de l’incertitude devrait être fortement corrélée à la qualité de la sortie, donc la qualité moyenne des sorties à faible incertitude devrait être plus élevée
Un benchmark récent [1] sur les approches d’estimation de l’incertitude des LLM a justement utilisé cette méthode, et une bibliothèque open source [2] permettant ce type de benchmark est également en cours de développement. On peut aussi produire un score d’incertitude pour une sortie donnée d’un modèle, ce qui permet de l’intégrer à des applications en contexte industriel
[1] https://arxiv.org/abs/2406.15627
[2] https://github.com/IINemo/lm-polygraph
Donc, même si une entropie élevée est souvent un signal de « manque de confiance », le modèle peut aussi très souvent se tromper avec assurance. Par conséquent, utiliser l’entropie des logits comme indicateur de fiabilité peut facilement induire fortement en erreur
Je ne suis pas spécialiste des LLM ; c’est un avis fondé sur ma compréhension des classificateurs en général. Je me demande si cette considération cesse de s’appliquer quand on a suffisamment de données
Il est tout à fait possible de faire des expériences en poussant fortement vers des réponses de refus, et je recommande de l’essayer directement. Le dépôt smollm-entropix [1] implémente l’ensemble sous forme de notebook Jupyter, ce qui facilite les tests de ces idées
[1]: https://github.com/SinatrasC/entropix-smollm
Les grands GPT modernes produisent les logits d’un énorme classificateur sur l’ensemble du vocabulaire de jetons
Ils vivent dans un certain espace, et on peut non seulement supposer qu’ils suivent une variété dotée de propriétés de convexité non triviales, mais aussi le calculer empiriquement. Le problème consistant à déterminer quel LLM a écrit un texte donné, y compris lorsqu’on lui a demandé d’adopter un certain style, est proche d’un problème bien défini, voire pratiquement résolu
Ce n’était pas seulement un sujet de recherche, c’était aussi un domaine où les progrès étaient rapides et impressionnants, puis à un moment donné on l’a simplement éteint
Devenir le meilleur dans ce domaine représente une activité énorme. Et c’est typiquement le genre de chose qu’une startup devrait faire. Il est difficile pour les acteurs établis et fortunés d’en devenir des concurrents, non parce qu’ils ignorent ce marché, mais parce qu’ils ne souhaitent pas activement qu’il existe
Cette manière d’expliquer ressemble presque à un algorithme de parcours de labyrinthe. Ici, le temps de calcul correspondrait à « jusqu’à quelle profondeur suivre un chemin pour tester si c’est une solution possible »
Je me demande s’il y a d’autres similarités. Par exemple, existe-t-il des algorithmes de résolution de labyrinthe applicables aux LLM ?
Pour être honnête, cela va dans la direction opposée à la Bitter Lesson(http://www.incompleteideas.net/IncIdeas/BitterLesson.html). Cette leçon venait aussi du fait qu’on traitait de manière excessivement sophistiquée la recherche dans les échecs et les labyrinthes. Mais à l’échelle actuelle des LLM, ce type d’amélioration pourrait avoir de la valeur
Chaque fois que je lis ce genre d’optimisations potentielles, j’ai du mal à comprendre comment des gens peuvent faire confiance aux LLM et les utiliser avec si peu de supervision
Est-ce qu’ils croient vraiment que des produits « IA » qui utilisent des LLM sont assez compétents pour contrôler un ordinateur ou écrire du code correct ? Par conception, est-ce que tout n’est pas de la « hallucination » ou de la supposition ? Est-ce qu’on peut vraiment surmonter ça ?
Ce sont des programmes qui envoient des opérations à des machines, consultent les résultats/erreurs/sorties, enregistrent ça dans des fichiers .csv puis les transforment en fichiers Excel bien formatés. Ils fournissent aussi un guide de démarrage montrant comment les techniciens doivent brancher les choses pour certains tests
Je ne suis pas programmeur, et il n’y a pas non plus de programmeur dans notre entreprise. Pourtant, il a écrit du code qui fonctionnait exactement comme demandé. Quand le code coinçait pendant le développement, je le remettais dans ChatGPT pour qu’il corrige le problème, et au final tout a été résolu. Ça a pris environ une journée ; si je l’avais fait moi-même, il m’aurait fallu un mois, et en sous-traitance ça aurait coûté 10 000 dollars et une semaine
Les LLM sont peut-être mauvais pour des projets de programmation haut de gamme à très hauts salaires. Mais pour les gens qui ont besoin de faire quelque chose avec un ordinateur sans parvenir à franchir la barrière de la langue qui consiste à dire à l’ordinateur quoi faire, c’est une bénédiction
Il est bien plus robuste et correct que le code que j’écris habituellement. Ça fait 20 ans que je programme
Ce n’est qu’une autre bulle. Comme Client/Server, Industry 4.0, Machine Learning, Microservices, Cloud, Crypto
Est-ce que quelqu’un a déjà essayé de voir ce qui se passe si on empêche totalement le modèle de devenir incertain ?
Par exemple, un échantillonneur qui revient en arrière et choisit un autre token chaque fois que la certitude passe sous un seuil. Au final, chaque token individuel aurait alors une certitude au-dessus de ce seuil
Ça n’éliminerait sans doute pas complètement les sorties indésirables, mais ce serait intéressant
Ou alors il pourrait dire « je ne sais pas » avec une certitude totale
Il existe des dizaines de milliards de stratégies d’échantillonnage pour les modèles de langage
Le problème, c’est qu’il est très difficile de montrer empiriquement qu’une stratégie d’échantillonnage donnée est meilleure que l’échantillonnage standard top-k ou top-p. Minimiser la perplexité ne suffit pas à prouver la supériorité d’une méthode particulière. La stratégie proposée dans le billet de blog a le même problème. En théorie, elle semble plausible, mais en pratique c’est une innovation non validée
Il est difficile de dire clairement ce que veut dire « meilleur », et comme il est coûteux de collecter des choses comme des données de préférence, la preuve est difficile à obtenir
Après avoir vu beaucoup d’échantillons, on peut malgré tout dire au bon sens que « pour optimiser X, cette méthode semble mieux fonctionner »
Les limites des réponses des LLM ont bien plus de dimensions que la seule « incertitude »
Il y a par exemple « la question/la phrase n’a pas de sens », « il n’y a pas assez d’informations pour répondre », « le consensus des experts dit que personne ne peut vraiment savoir », etc.
Les humains ont tendance à réduire les raisons pour lesquelles il est difficile de répondre à une question donnée à un simple problème d’incertitude, et donc à considérer qu’une réponse de LLM n’a qu’un niveau unique d’incertitude. Mais c’est de l’anthropomorphisme
Les images d’IA, et avant elles les photos, ont montré des façons nouvelles et inimaginées pour une image d’être fausse, c’est-à-dire d’avoir l’air vraie tout en étant fausse. Les interactions langagières avec l’IA font la même chose de manière plus subtile
Jusqu’ici, on l’a surtout fait avec de l’apprentissage par renforcement, mais ça semble aussi valoir la peine d’explorer des approches qui capturent et traitent ça au moment de l’inférence. C’est aussi bien plus accessible en open source. Ce type d’apprentissage par renforcement, c’est quelque chose que seuls les grands laboratoires de ML peuvent faire
J’ai l’impression que l’anthropomorphisme fait partie de la stratégie marketing des LLM
On peut aussi décomposer l’incertitude en plusieurs « saveurs ». La décomposition la plus simple et la plus souvent discutée est celle entre incertitude aléatoire et incertitude épistémique. L’incertitude épistémique, ou incertitude liée au modèle, désigne généralement les cas où le modèle reçoit un type d’entrée qu’il n’a jamais vu auparavant et produit une mauvaise sortie, une situation dans laquelle il est difficile d’espérer qu’il réagisse correctement. À l’inverse, l’incertitude aléatoire est inhérente aux données elles-mêmes ; on peut penser à l’ambiguïté naturelle de la tâche ou à un étiquetage bruité
Dans le domaine de l’estimation de l’incertitude, on s’intéresse beaucoup au développement de méthodes pour quantifier ces différents types d’incertitude, et selon la méthode, la sensibilité peut être plus forte à l’une ou à l’autre