THREAD : Le fonctionnement de DALL·E 2 (niveau lycée+) 🧵
Aujourd'hui, je vais vous fais découvrir en 6 minutes le fonctionnement de l'IA qui a révolutionné le machine learning en 2022. C'est parti ! ⤵️
Les réseaux de neurones peuvent paraître super mystiques avec un nom qui fait peur, mais en fait il s'agit simplement d'un enchaînement de plein d'opérations mathématiques simples qui peuvent "apprendre" à effectuer une tâche : par exemple, reconnaître des objets dans une image.
L'entraînement typique d'un réseau de neurones se fait en lui montrant énormément (jusqu'à plusieurs milliards) d'exemples en entrée et des réponses attendues en sortie. À la manière du cerveau humain, il va modifier ses connexions internes pour apprendre ce qu'on attend de lui.
Avant de pouvoir étudier DALL·E 2, il faut d'abord se pencher sur son "ancêtre", CLIP.
CLIP est un réseau de neurones inventé en 2021 pour une tâche complexe : la reconnaissance d'images en mode "zero-shot". Le zero-shot, c'est la spécialité d'OpenAI.
D'habitude, pour apprendre une tâche spécifique, le réseau de neurones a besoin du dataset correspondant. Par exemple pour la reconnaissance de chiffres manuscrits, on peut utiliser le dataset MNIST qui contient 60.000 images d'entraînement :
La particularité de CLIP, c'est qu'il n'a même pas besoin de ce genre d'entraînement !
Il est en fait pré-entraîné sur un dataset gigantesque et très diversifié, donc il peut s'en sortir sur plein de tâches de reconnaissance d'images sans voir de données spécifiques à la tâche.
Les modèles zero-shot sont ultra puissants : par exemple, là où un modèle classique saura détecter au maximum quelques milliers d'objets différents (sur lequel il aura subi un entraînement préalable), CLIP peut en reconnaître une infinité.
Pour entraîner CLIP, les chercheurs·es du labo OpenAI ont crawlé internet pour télécharger 400 millions d'images sous licence libre, sur Flickr notamment.
La description de chaque photo est aussi récupérée, pour avoir un grand nombre de correspondances image/texte.
À partir de cet immense dataset, on entraîne deux réseaux de neurones appelés encodeurs, qui vont chacun calculer une sorte de hash. L'un des deux travaille sur les images, l'autre sur le texte.
Ce hash est appelé "embedding", c'est un tableau de nombres.
Les valeurs de ces nombres n'ont pas vraiment de sens pour les humains. Mais pour l'IA qui va les créer, leur composition traduit très bien le sens d'une image ou d'une phrase.
En quelque sorte, CLIP invente sa propre langue optimisée pour décrire des images !
Pour être utiles, il faut donc que les deux réseaux de neurones respectent des contraintes sur les embeddings :
👉 Si l'image correspond au texte, leurs embeddings doivent être quasi-identiques
👉 Si elle ne correspond pas, leurs embeddings doivent être très différents
L'entraînement est effectué simultanément sur les deux réseaux pour que les deux contraintes ci-dessus soient respectées.
La structure du langage commun aux deux encodeurs, aussi appelé "espace latent", va se former naturellement.
Je vous disais en début de thread que l'entraînement se fait traditionnellement en montrant au réseau des exemples d'entrées+sorties, ici c'est donc un peu différent : on présente deux entrées à CLIP, et on lui dit "débrouille-toi pour que leurs embeddings correspondent".
Pour utiliser moins de puissance de calcul, on groupe les images par lots de 32768, puis on calcule leurs embeddings ainsi que ceux de leurs descriptions.
En les comparant deux à deux, on obtient plus d'un milliard de paires d'entraînement image/texte (positives et négatives).
Bon. On a maintenant deux réseaux de neurones encodeurs, qui savent ensemble dire quelle image correspond à quelle description. Mais à quoi ça sert en fait ?
Une fois entraîné, la capacité de CLIP peut être utilisée pour classifier des images jamais vues auparavant.
Pour cela, on commence par calculer l'embedding de l'image que l'on cherche à classifier.
Ensuite, on calcule tous les embeddings des textes correspondant aux classes possibles, et on regarde lequel est le plus similaire à celui de l'image.
Comme CLIP aura de grandes chances d'avoir vu des exemples similaires pendant son entraînement, il devrait pouvoir reconnaître l'objet parmi la liste des propositions alors même qu'on ne lui a jamais présenté d'exemples explicites au préalable !
Maintenant, c'est quoi le rapport entre CLIP et DALL·E 2 ?
Vous allez voir que le pouvoir des encodeurs de CLIP ne s'arrête pas là, et qu'ils sont aussi au cœur du fonctionnement de DALL·E 2 !
Ce qui fait toute la puissance de DALL·E 2, c'est l'introduction d'un troisième réseau de neurones : un décodeur appelé unCLIP, qui arrive à reconstituer une image à partir de son embedding.
L'entraînement de celui-ci est plus complexe, c'est un modèle de diffusion guidé. Je ne vais pas entrer dans les détails aujourd'hui, mais ce sont des modèles très puissants pour générer des images réalistes. Si vous connaissez les GAN, c'est pareil mais en mieux 😁
Alors bien évidemment, unCLIP ne reproduit pas un résultat parfait (sinon, on a inventé un algorithme de compression théoriquement impossible) : le réseau peut seulement produire une image plausible parmi tant d'autres.
Mais comme la représentation des embeddings contient quand même de l'information sémantique condensée (dans la langue inventée par CLIP durant son entraînement), on peut reconstituer l'image à partir de son embedding en gardant son aspect et sa structure.
En voyant cette imperfection comme une manière de créer de la diversité, on peut d'ailleurs utiliser unCLIP pour générer des variations sur une image.
Et si on répète le processus en boucle, on peut créer de magnifiques animations abstraites comme l'a fait Alan Resnick :
On peut aussi s'en servir pour mélanger deux images qui n'ont rien à voir !
Est-ce que vous vous êtes déjà demandés à quoi pouvait ressembler une image composée à 30% de corgis et à 70% d'une peinture de Van Gogh ? Probablement pas, mais voici la réponse au cas où :
Mais ce qui a fait la célébrité de cette IA, c'est bien évidemment sa capacité à générer des images correspondant à n'importe quel texte.
Pour ça, il suffit à DALL·E 2 d'encoder le texte fourni, puis de décoder l'embedding résultant pour en faire une image réaliste.
Maintenant, à vous de jouer !
DALL·E 2 est encore en beta privée sur le site d'OpenAI, en attendant sa sortie publique vous pouvez vous amuser sur crAIyon.com. Son modèle est moins puissant mais c'est déjà impressionnant.
Envoyez-moi vos meilleures créations 🙂
C'est la fin de ce thread, bravo d'avoir tenu jusqu'au bout ! J'espère que ces quelques tweets vous ont aidé à comprendre ces deux modèles à la pointe de la recherche en machine learning.
Pour moi, c'était l'un des exercices de vulgarisation les plus difficiles de ma vie 😄
Avant de partir, n'hésitez pas à partager et me suivre sur Twitter pour lire mes threads réguliers de vulgarisation tech (c'est moi qui ai piraté l'appli Elyze, débunké le quiz électoral de Zemmour et obtenu le pass sanitaire de Jean Castex 😇) et jeter un oeil à @Guardia_School.
Cette semaine, la société OpenAI a déployé une mise à jour de son célèbre réseau de neurones DALL·E pour améliorer la diversité des images générées par celui-ci, mais... ils ont triché !
Dans ce thread, on va parler des biais algorithmiques dans l'intelligence artificielle. 🧵
Vous connaissez sûrement DALL·E, cette IA révolutionnaire capable de générer des images correspondant à n'importe quelle phrase.
Quelques exemples :
L'étude des biais occupe depuis quelques années une place très importante dans la recherche en intelligence artificielle et dans ses applications.
Mais c'est quoi exactement un biais algorithmique ?
Il y a un an, je gagnais pour mon équipe la médaille d’or sur l’épreuve de Machine Learning lors de l’@EuCyberCup.
Dans ce thread on va parler de quelques outils fondamentaux d'IA, puis je vous explique comment j'ai obtenu un score parfait sur ce challenge.
Tout d'abord, le principe du challenge : à partir d'un très grand volume de logs sur le réseau d'une entreprise (factice) de 2500 employés, nous devions retrouver les utilisateurs malveillants en détectant leurs comportements suspects.
Ce genre d'application de l'IA à la cybersécurité est hyper intéressant dans le monde réel, car l'automatisation décuple la performance de traitement et les sources d'information tout en permettant une détection et un traitement des attaques quasi-instantanément.
Samedi, une grosse annonce a été faite lors de la PyCon : un nouveau framework PyScript permet d'exécuter du code Python directement dans le navigateur !
Techno révolutionnaire ou hype démesurée ? Je vous propose mon analyse en quelques tweets ⤵️
À l'heure actuelle, même si cet interpréteur ne s'appuie pas sur de l'émulation JavaScript (contrairement aux précédentes tentatives de Python front-end), il faut quand même charger le package PyScript de ~20MB (+ les imports) sur toutes les pages.
C'est pas ma plus grande crainte, parce que si PyScript gagne de la popularité, il deviendra certainement intégré aux navigateurs comme JS l'a été depuis ses débuts.
LIVE TWEET - Championnats d'Europe de programmation
Pendant tout le weekend aura lieu la compétition #SWERC à Milan, je suis présent en tant que coach de 3 équipes françaises.
Je vais essayer de vous expliquer le principe et vous tenir au courant des résultats en direct.
La cérémonie d'ouverture commence par un mini concert, je prendrai le temps de vous expliquer les règles du challenge tout à l'heure
Près de 60.000 participants cette année au niveau mondial représentant 3406 universités (oui c'est un championnat réservé aux étudiant/es, c'est pour ça que je peux plus participer en tant que joueur 😁)
THREAD : Enquête sur les manipulations politiques du système d'aide au vote mis en place par les équipes d'Eric Zemmour à quelques jours de la présidentielle.
Attention, c'est pas beau à voir.
Le site mon-candidat.fr a été mis en ligne en début de semaine, et propose de déterminer votre candidat idéal en seulement 10 questions.
Aucun lien manifeste avec un parti politique n'est affiché, mais il s'agit bien d'un site appartenant au parti Reconquête de Zemmour.
Cette affiliation semble être volontairement dissimulée, que ce soit dans le questionnaire ou dans le démarchage de masse effectué pour rediriger des électeurs sur le site, comme on peut le voir sur ce SMS reçu hier par @MrsSensha :