La créativité des LLM

LLM, ChatGPT, recherche, créativité, softmax, modèles de définition de l'intelligence

En discutant avec Servanne Monjour il y a quelques jours, j’ai sorti une phrase du type: “j’en ai marre de ces gens qui donnent leur opinion sur chatGPT et qui ne savent même pas ce qu’est une softmax”. Servanne m’a dit que j’étais un élitiste (de m*, a-t-elle pensé, mais elle ne l’a pas dit parce qu’elle est trop gentille). Et elle ma dit qu’au lieu de dire ces conneries j’aurais dû me poser la question de comment faire pour que certaines connaissances soient transmises : comment faire en sorte que le niveau moyen de littératie numérique augmente. (C’est un peu ce que j’essaie de faire cette année avec mon séminaire sur les LLM).

Me voici donc à faire un billet de blog sur la softmax – et le concept d’originalité – ou de créativité?

La softmax est une fonction très utilisée comme fonction d’activation dans différentes approches algorithmiques. En gros, c’est la dernière fonction qu’on applique à un calcul pour déterminer la prédiction finale. Elle permet, par ailleurs, d’implémenter la notion de “température” qui peut être interprétée comme un niveau d’“originalité” ou de “créativité” de l’algorithme.

C’est un cas d’étude parfait pour illustrer mon idée de “modèles de définition de l’intelligence” (cf. aussi ici). Mon point est le suivant: il est inutile de se demander si les “machines” sont ou pas “intelligentes”. Il faut au contraire essayer de donner des définitions précises des différents comportements intelligents et ensuite voir comment ces définitions peuvent être implémentées dans des algorithmes.

Pour le cas de l’originalité: il est complètement débile de se demander si chatGPT, ou une autre application basée sur un LLM, est ou pas “créatif” ou “original”. Il faut d’abord se demander “qu’est-ce que j’entends exactement par “originalité”?” Si la réponse est bien formalisée, elle pourra être implémentée dans une approche algorithmique.

La “température” utilisée dans une softmax me semble être une excellente définition d’originalité. Je ne dis pas que c’est la seule possible, loin de là, mais c’est une “bonne” définition, car elle est claire et non ambigüe.

Mais d’abord, essayons de comprendre comment fonctionne la softmax. Je commence par vous donner la formule mathématique et je vous promets que si vous lisez jusqu’au bout cette formule sera claire même pour les personnes qui n’ont aucune compétence mathématique. L’idée que je veux défendre est que seulement après avoir bien compris cette formule on pourra s’exprimer sur le concept de “créativité”.

Voici la fonction:

\[\sigma(z_i) = \frac{e^{z_{i}}}{\sum_{j=1}^K e^{z_{j}}} \ \ \ for\ i=1,2,\dots,K\]

Pour la comprendre, je vais proposer un exemple très simplifié du fonctionnement d’un LLM. Admettons d’avoir les 10 phrases suivantes:

  1. J’aime les roses
  2. J’aime les roses rouges
  3. J’aime les roses blanches
  4. J’aime les fonctions
  5. J’aime les fonctions mathématiques
  6. J’aime les chiens
  7. J’aime les filles qui font vieille France
  8. J’aime les filles des cinémas
  9. J’aime les filles de l’assistance
  10. J’aime les filles dans l’embarras

(vous m’excuserez l’hommage à Jacques Dutronc)

Admettons que je veuille apprendre, à partir de ce corpus, quel mot doit venir après les mots “j’aime les”. C’est ce que font les LLM: ce sont des modèles qui “apprennent” à prédire le mot qui va suivre une série de mots. Dis de manière un peu plus précise:

Un LLM est un modèle qui apprend la probabilité d’un token t étant donné le token t-1. Soit:

\[P(e_t | e_{t-1})\]

Ici j’ai donc mes 10 phrases. Je peux compter combien de fois chaque terme apparaît dans mon corpus. Je vais avoir les valeurs suivantes:

roses = 3
fonctions = 2
chiens = 1
filles = 4

Or la question est: comment transformer ces valeurs en probabilités?

Dans cet exemple très simple, on pourrait simplement faire une proportion sur 100%, mais dans le cas réel des LLM, les valeurs finales seront très complexes – il ne s’agit pas directement du nombre d’occurrences. On pourra avoir des chiffres négatifs et des chiffres très élevés, des nombres réel etc.

La softmax est une fonction qui permet de transformer n’importe quelle liste de chiffres en probabilités. La somme de tous les chiffres transformés donnera donc 1.

Regardons de prêt ce petit miracle.

Nos chiffres sont: [3,2,1,4] Ces chiffres sont nos \((z_1,...z_K)\) donc K = 4. Plus en détail (pour les nuls):

\(z_1 = 3\) \(z_2 = 2\) \(z_3 = 1\) \(z_4 = 4\)

La softmax est la fonction \(\sigma(z_i)\) c’est à dire c’est une fonction qui va prendre en entrée, un à la fois, les valeurs de notre liste, donc, concrètement nous voulons les résultats de:

\[\sigma(3) = ?\] \[\sigma(2) = ?\] \[\sigma(1) = ?\] \[\sigma(4) = ?\]

Nous nous attendons à que la somme de ces 4 valeurs nous donne 1 (comme ça on aura les pourcentages, en multipliant par 100, évidemment: 0.4 = 40%).

Prenons maintenant le côté droit de l’équation pour expliquer les calculs qu’il faut faire.

\[\frac{e^{z_{i}}}{\sum_{j=1}^K e^{z_{j}}}\]

Le numérateur de la fraction est constitué par la fonction exponentielle qui a pour base \(e\), le nombre d’Euler et pour exposant \(z_i\) à savoir le chiffre auquel nous sommes en train d’appliquer l’équation. La fonction exponentielle est une fonction merveilleuse qui a la caractéristique d’être égale à sa dérivée: son changement est identique à sa valeur. C’est la magie du nombre \(e\) qui a quelque chose de très fascinant (dont je ne peux pas parler ici): on le retrouve souvent en nature, c’est une constante qui fait presque croire à une perfection cachée de l’univers… mais bon, ça c’est un autre délire.

Le dénominateur est \(\sum_{j=1}^K e^{z_{j}}\), à savoir la somme de tous les résultats de la fonction exponentielle appliquée aux chiffres que nous voulons traiter.

Donc concrètement dans notre cas, le dénominateur sera:

\[e^3 + e^2 + e^1 + e^4 = 84,791024884\]

Je rappelle que \(e = 2,71828...\). (Donald Knuth numérote les différentes versions de Metafont en suivant les décimales de e, pour l’anecdote).

Maintenant nous pouvons faire notre calcul:

\[\sigma(3) = \frac{e^3}{84,791024884} = 0,23\] \[\sigma(2) = \frac{e^2}{84,791024884} = 0,10\] \[\sigma(1) = \frac{e^1}{84,791024884} = 0,03\] \[\sigma(4) = \frac{e^4}{84,791024884} = 0,64\]

La somme de ces trois chiffres est 1.

Nous avons donc les probabilités suivantes:

Ces probabilités sont ensuite utilisées par le modèle pour proposer le mot qui va suivre “J’aime les…”. Sur la base de ces probabilités le modèle proposera le 23% du temps “roses”, le 10% “fonctions”, le 3% “chiens” et le 64% “filles”. C’est ce qu’on entend par comportement “stochastique”. Le résultat proposé par le modèle est aléatoire, dans le sens que le modèle choisit de manière aléatoire entre les possibilités qu’il a, mais son choix est pondéré par la distribution des probabilités. Dit autrement: imaginez qu’on a la suite de mots “J’aime les…” et qu’on met devant le modèle un panier avec 100 petits billets. Dans chaque billet il y a un mot. Dans 23 billets il y a écrit “roses”, dans 10 “fonctions”, dans 3 “chiens” et dans les autres 64 “filles”. Le modèle pioche et donne le mot qu’il a trouvé. Voici le sens du mot “stochastique”: aléatoire mais par rapport à une distribution de probabilités. C’est au hasard que le mot est pris, mais le mot “filles” sera plus probable que “chiens” car il est plus fréquent.

Jusqu’ici on n’a pas parlé de créativité. Si la softmax était ce que nous venons de décrire, elle représenterait plus ou moins la moyenne normalisée de la langue telle qu’elle est observée dans le corpus. Donc pas beaucoup d’originalité… le modèle se comporterait en faisant une moyenne des usages qu’il a “vus” dans le corpus.

Mais on a un petit twist mathématique à ajouter. On ajoute une petite valeur au numérateur, un \(\beta\):

\[\sigma(z_i) = \frac{e^{\beta z_{i}}}{\sum_{j=1}^K e^{\beta z_{j}}} \ \ \ for\ i=1,2,\dots,K\]

On ajoute donc une valeur (\(\beta\)) pour multiplier l’exposant de la fonction exponentielle. C’est ce qu’on appelle “température”. Ou mieux, la température est le réciproque de \(\beta\) (\(\beta = \frac{1}{T}\) et donc \(T = \frac{1}{\beta}\)).

(Pourquoi on l’appelle “température”? C’est une métaphore prise de la physique: plus élevée est la température, plus le système est désorganisé. L’originalité serait donc, en quelque sorte, un résultat de l’augmentation de l’entropie d’un système…)

L’effet est très intéressant: si on augmente la température (et donc si on diminue \(\beta\)), la différence entre les pourcentages sera diminuée. La probabilité sera donc distribuée de manière plus homogène - intuitivement, les écarts entre le terme le plus probable, dans notre exemple “filles” et le terme le moins probable, “chiens” sera plus petit.

Faisons les calculs en mettant la température à 5 et donc \(\beta = \frac{1}{5} = 0,2\)

Notre 4 chiffres seront transformés comme suit:

Notre dénominateur sera donc:

\[e^{0,6} + e^{0,4} + e^{0,2} + e^{0,8} = 6,760887185\]

Et si on fait les calculs avec ces nouveaux chiffres (il est intuitif que l’exposant étant plus petit, le résultat sera inférieur, donc l’écart inférieur):

\[\sigma(3) = \frac{e^{0,6}}{6,760887185} = 0,27\] \[\sigma(2) = \frac{e^{0,4}}{6,760887185} = 0,22\] \[\sigma(1) = \frac{e^{0,2}}{6,760887185} = 0,18\] \[\sigma(4) = \frac{e^{0,8}}{6,760887185} = 0,33\]

Les nouvelles probabilités:

De cette manière une occurrence peu probable dans le corpus (“chiens” qui apparaissait juste 1 fois) devient beaucoup plus probable pour le modèle. Quand il “piochera” dans le panier, donc, il trouvera des choses qui sont moins probables en absolu – et qui donc ne correspondront pas à la reproduction de la moyenne observée dans le corpus. Le modèle aura, donc, un comportement inattendu.

(Je fais ici l’exemple avec un modèle de langue, mais le même traitement peut être appliqué, par exemple, à un modèle texte vers image qui générera des images plus inattendues si on augmente la température dans la softmax qui est utilisée pour prévoir les différents pixels.)

On pourra objecter que de cette manière l’algorithme ne pourra jamais donner quelque chose de “complètement nouveau”. Les choix seront limités à ce que le modèle a pu déjà trouver dans le corpus. Les combinaisons seront peut-être plus rares, mais toujours déjà existantes quelque part dans le corpus. La température pourra faire ressortir des occurrences plus rares, mais jamais des occurrences absolument inédites – à savoir qui n’ont jamais eu lieu dans le corpus. Mais cette limite est dépassée grâce à des mécanismes de smoothing. Pour faire simple: par défaut on ne donne à aucun mot une probabilité égale à 0. On donne toujours un score minimal. (Une probabilité 0, avec une softmax, correspondrait à un score de départ de \(-\infty\)). Par ailleurs, puisque les tokens des LLM ne sont pas des “mots”, mais des groupes de lettres (induits à partir d’un byte-pair encoding… autre sujet intéressant, j’en parlerai une autre fois), le LLM pourra aussi construire des nouveaux mots.

Il me semble que le modèle formel de la softmax avec \(\beta\) est un bon modèle de définition de la créativité. J’insiste: un bon modèle et pas le bon modèle. La question est de savoir si on a ici une définition possible et bien structurée de créativité et non d’en donner une essence absolue. C’est pour cette raison qu’ici je décide de ne pas faire de différence entre “originalité” et “créativité”. On peut se dire que \(\frac{1}{\beta}\) représente une bonne manière de comprendre l’originalité et la créativité en tant que “comportement qui dévie d’une distribution de probabilités normale”. La créativité serait donc, selon cette définition, la capacité à choisir des phrases dont la probabilité est inférieure à une moyenne gaussienne standard. Pour une personne habituée à être exposée au corpus d’entrainement – dit autrement, pour un parlant de la langue naturelle – cette déviation donne une impression d’inattendu: je me serais attendu ici le mot “filles” et j’ai le mot “chiens” (ou un mot qui ne fait même pas partie des occurrences du corpus, par exemple “tortues”, ou un mot crée par la composition de tokens, par exemple “filurbilans”), cela me surprend, je trouve cela étonnant. Et je considère que le modèle a produit quelque chose d’original dans ce sens.

Est-ce que la créativité et l’originalité sont cela? Est-ce que celle-ci est la seule définition possible de créativité ou d’originalité? Y a-t-il une différence entre créativité et originalité? Ces questions sont tout simplement bêtes. La créativité et l’originalité peuvent être définies de plein de manières différentes, évidemment. Mon point est: si vous avez une définition claire et non ambigüe de ces termes, cette définition peut être implémentée dans un modèle formel et ensuite un algorithme peut réaliser un comportement qui sera “créatif” ou “original” selon votre définition.

Mais ne me faites pas le petit jeu consistant à dire: “mais non, la créativité est plus que ça!” Si vous n’êtes pas capables de définir formellement ce plus, alors cela veut tout simplement dire que vos idées ne sont pas claires. Vous êtes juste en train de tricher en disant que la machine ne sait pas faire une chose dont vous ne savez finalement pas ce qu’elle est. Dans ce cas, vous ne mettez pas le doigt sur une limite de l’algorithme, mais sur une limite de votre capacité de donner une définition. Si vous arrivez à donner une définition claire, on pourra l’implémenter dans un modèle formel. Ça ne sera peut-être pas une softmax avec \(\beta\), mais on trouvera une équation pour la décrire.

Dans son fameux texte Computing Machinery and Intelligence, Turing se moquait des objections qui se basent sur l’argument de l’originalité:

A variant of Lady Lovelace’s objection states that a machine can “never do anything really new”. This may be parried for a moment with the saw, “There is nothing new under the sun”. Who can be certain that “original work” that he has done was not simply the growth of the seed planted in him by teaching, or the effect of following well-known general principles. A better variant of the objection says that a machine can never “take us by surprise”. This statement is a more direct challenge and can be met directly. Machines take me by surprise with great frequency. This is largely because I do not do sufficient calculation to decide what to expect them to do, or rather because, although I do a calculation, I do it in a hurried, slipshod fashion, taking risks. Perhaps I say to myself, “I suppose the voltage here ought to be the same as there: anyway let’s assume it is”. Naturally I am often wrong, and the result is a surprise for me for by the time the experiment is done, these assumptions have been forgotten. These admissions lay me open to lectures on the subject of my vicious ways, but do not throw any doubt on my credibility when I testify to the surprises I experience. https://www.jstor.org/stable/2251299

Turing dit d’une autre façon ce que j’essaye de dire: le problème n’est pas de savoir si une “machine” est capable d’originalité, mais plutôt de savoir définir ce qu’est l’originalité…

Les algorithmes ont donc l’avantage – si on les étudie de prêt – de nous obliger à clarifier nos idées, les rendre non ambigües et formelles. Et, à mon sens, c’est là le travail de recherche typique des sciences humaines: donner des définitions claires et non ambigües des concepts.

LLM, ChatGPT, recherche, créativité, softmax, modèles de définition de l'intelligence