Pourquoi l'IA ne peut-elle pas compter le nombre de « R » dans le mot « fraise » ?
Les grands modèles de langage, notamment ChatGPT d’OpenAI, ont révolutionné la façon dont nous interagissons avec des machines capables de comprendre et de générer du texte de type humain. Mais ces modèles ont eux-mêmes leurs propres caractères étranges. La bizarrerie la plus agaçante qui ait circulé sur tous les réseaux sociaux récemment est l’incapacité de ce grand modèle de langage à compter correctement le nombre d’une certaine lettre dans un mot. Un exemple très populaire est le mot « fraise », dans lequel l’IA ne parvient très souvent pas à compter correctement le nombre de fois où « r » est apparu. Mais pourquoi fait-elle cela ? La réponse se trouve au cœur même de la façon dont ces modèles traitent et génèrent le langage.
L’une des principales raisons pour lesquelles l’IA trébuche sur des questions telles que le comptage des lettres est la façon dont elle traite les mots. Les modèles de langage, tels que GPT-3 et GPT-4, ne traitent pas les mots comme une séquence de lettres individuelles. Au lieu de cela, ils décomposent le texte en unités plus petites appelées « tokens ». Les tokens peuvent être aussi courts qu’un caractère ou aussi longs qu’un mot entier, selon la conception du modèle en question et le mot particulier concerné.
Par exemple, le mot « fraise » serait probablement divisé en deux tokens, des représentations de fragments de mots partiels que le modèle connaît grâce à l'entraînement. Le problème est que ces derniers ne correspondent généralement pas aux lettres du mot. En effet, dans des exemples comme « fraise », l'IA peut ne pas voir la décomposition du mot en lettres entières et simples, mais deux tokens, comme les identifiants de token 496 et 675. Lorsque, plus tard, il lui sera demandé de compter des lettres particulières, ce modèle ne trouvera pas de moyen simple de faire correspondre les tokens au nombre d'occurrences d'une lettre particulière.
Fondamentalement, les modèles de langage prédisent quel sera le mot ou le token suivant dans une séquence, en fonction du contexte donné par les mots ou les tokens précédents. Cela fonctionne particulièrement pour générer un texte qui est non seulement cohérent mais également conscient de son contexte. Cependant, cela ne convient pas vraiment aux objectifs pour lesquels vous devez compter quelque chose avec précision ou raisonner sur des caractères individuels.
Si vous demandez à l'IA de compter le nombre d'occurrences de la lettre « r » dans le mot « fraise », elle ne disposera pas d'une représentation aussi précise du mot à partir de laquelle le nombre et la position de chaque occurrence de cette lettre pourraient être déduits. Au lieu de cela, elle répond en fonction de ce qu'elle a appris sur la formation de prédictions à partir de la structure de la requête. Bien sûr, cela peut être inexact, car les données qu'elle a apprises ne concernent pas le comptage des lettres et peuvent même ne pas inclure le type de matériel nécessaire pour tracer le « r » dans notre exemple de mot.
Un autre point important est que les modèles de langage en soi, utilisés dans la plupart des chatbots, ne sont pas adaptés au comptage ou à l’arithmétique explicites. D’une autre manière, les modèles de langage purs ne sont guère plus que des dictionnaires avancés ou des algorithmes de texte prédictif qui effectuent des tâches pondérées par des probabilités basées sur les modèles qu’ils apprennent, mais qui ont du mal avec les tâches qui nécessitent un raisonnement logique strict, comme le comptage. Si l’on demande à l’IA d’épeler un mot ou de le décomposer en lettres individuelles, elle y parviendra plus souvent, car cela correspond davantage à la tâche pour laquelle elle a été formée : la génération de texte.
Malgré ces limitations, il est possible d'améliorer les performances de l'IA dans de telles tâches. On peut les améliorer en demandant à l'IA d'utiliser toutes sortes de langages de programmation, comme Python, pour effectuer le comptage. Par exemple, vous pouvez essayer de donner à l'IA une instruction pour écrire une fonction Python qui compte le nombre de « r » dans « fraise », et elle y parviendra probablement. Nous utilisons cette approche car elle exploite la capacité de l'IA à comprendre et à générer du code, qui peut être exécuté pour effectuer la tâche correctement.
En outre, des générations plus récentes de modèles de langage sont combinées avec d'autres outils et algorithmes qui rendent ces modèles plus puissants pour des tâches plus structurées, qui incluent également le comptage et l'arithmétique.
L’intégration du raisonnement symbolique ou la combinaison des LLM avec des moteurs de raisonnement externes permettrait de créer un système d’IA capable de surmonter ces lacunes.
Le problème du comptage des lettres dans les mots, comme « fraise », met en évidence un problème beaucoup plus vaste et plus général à cet égard : la « stupidité collective » de ces modèles entraînés. Ces modèles, même s’ils ont été entraînés sur de très grands ensembles de données et peuvent donc générer du texte à des niveaux très sophistiqués, commettront parfois des erreurs très stupides qu’un petit enfant éviterait facilement. Cela se produit parce que la « connaissance » du modèle doit être constituée de reconnaissance de formes et d’associations statistiques, plutôt que de sa compréhension du monde réel ou de son inférence logique.
Même si elle reçoit des instructions détaillées ou est mise en situation de vérification mutuelle entre plusieurs modèles, l’IA peut toujours obstinément s’en tenir à des réponses erronées. Ce comportement montre de manière très détaillée à quel point il est important de ne pas surestimer les capacités des systèmes d’IA au-delà de leurs points forts, mais d’apprécier pleinement ce qu’ils peuvent et ne peuvent pas faire.
L’incapacité de l’IA à compter le nombre de « r » dans une « fraise » n’est pas un simple défaut trivial ; elle reflète plutôt l’architecture sous-jacente et la philosophie de conception des modèles de langage. Ces modèles sont très puissants pour générer du texte de type humain, comprendre le contexte et imiter la conversation, mais ne sont pas directement conçus pour des tâches qui nécessitent spécifiquement une attention aux détails au niveau des caractères.
L'IA s'améliorant en permanence, les futurs modèles seront probablement plus capables d'accomplir de telles tâches grâce à des processus améliorés de tokenisation, à l'intégration d'outils de raisonnement supplémentaires, voire à des moyens entièrement différents de comprendre et de manipuler le langage. D'ici là, il convient d'aborder l'IA en comprenant ses limites, en utilisant des solutions de contournement appropriées et en reconnaissant que si elle peut simuler la compréhension, elle ne « comprend » pas encore vraiment comme le font les humains.