C’est probablement même pire que ça en fait. Même la notion de langue, elle n’existe souvent pas dans les LLM (ça peut exister sur des surcouches par dessus par contre, pour justement ajouter dans le prompt des indications de langue, et ainsi maximiser les chances que la réponse soit générée dans la bonne langue).
Dans son modèle, les token qui correspondent à « merci » sont tout simplement sémantiquement très proches de ceux correspondant à « thank you ». Ce qui est logique, puisque on est bien sur la même sémantique. Et comme dans son corpus d’apprentissage y avait sans doute beaucoup plus d’images avec « thank you » qu’avec « merci », ce qu’elle génère va tendre vers « thank you ».
Pour la petite anecdote, cette absence de notion de langue était même à l’origine d’une attaque contre les filtres de certains services de génération d’image.
Le principe de ces filtres était généralement d’avoir une liste de mots clés interdits et de bloquer les prompts contenant ces mots clés. Simple et efficace.
Sauf que, avec le système de découpage du prompt en token pour le modèle de génération, on peut construire des mots qui pour le modèle ont le même « sens » que le mot d’origine, mais qui mixe des tokens de ce mot dans plusieurs langues. Et ainsi, ça passe à travers le filtre par liste noire de mots, tout en ayant le même « sens » pour le modèle. Parce que le modèle ne sait pas si un mot existe ou pas.
Par exemple, si la liste noire veut interdire la génération d’images de perroquet, dans la liste noire, il y aura perroquet, parrot, papagei, etc… Pour le modèle, par contre, des mots comme perrogei, papoquet, parragei ou perrot auront par contre un « sens » très proche de celui de perroquet. Et mèneront très probablement à la génération d’images de perroquets, tout en passant sans aucun problème à travers le filtre basique par liste noire.
Dans l’autre sens, on peut avoir le même genre d’aberrations dans les réponses produites (dans le cas d’un LLM), si on laisse une trop grande part d’aléas au modèle dans son choix du prochain token. Avec une part d’aléa raisonnable, après des token correspondant à des mots en français et le token « per », la probabilité de « roquet » pour la suite sera nettement supérieure à celle de « rot », et « rot » sera exclu d’office des tokens possibles si on configure le modèle pour piocher parmis les token dont la probabilité est au moins 90% (chiffre arbitraire, pour l’exemple) de celle du token le plus probable. Si par contre on configure le LLM pour aller jusqu’aux token ayant 50% (idem), il se peut que cette fois « rot » rentre dans le lot des tokens autorisés. Et hop, le LLM va se mettre à parler de « perrot » de temps en temps (pas systématiquement non plus, puisqu’il choisit plus ou moins aléatoirement parmi la liste de tokens ayant une probabilité suffisante, et souvent de façon pondérée en fonction des probabilités, donc entre « roquet » et « rot », il continuera quand même à choisir plus souvent « roquet »).