Vectorisez

Hervé Rincent

Hervé Rincent

25 mai 2021

La tech au départ, c'est une affaire de 0 et de 1.

Du binaire.

Puis on les juxtapose pour décrire des nombres entiers ou des codes de lettres. Un "A" majuscule, c'est le code 65. Le "B" c'est 66.

Ces codes sont des valeurs discrètes. Rien à voir avec le fait qu'elles préfèrent ne pas faire parler d'elles. Une valeur discrète désigne une information à choisir dans une liste prédéfinie.

Vous avez sans doute remarqué combien les valeurs discrètes dominent nos outils numériques.

Faire son choix

L'utilisateur d'un SaaS en ligne est inscrit ou non-inscrit. Aucun d'entre eux n'est inscrit à 22.3%.

Et sur un site de e-commerce,  les tee-shirts sont classés par couleurs, appartenant à une liste prédéfinie : rouge, blanc, vert, noir, ....

Inscrit ou non. Rouge ou Blanc.

Il vous faut choisir. Pas d'intermédiaire possible. Pas de nuance.

A l'origine, c'est une restriction d'origine technique. Un microprocesseur ne connaît pas l'imprécision ni l'indécision. C'est la machine originelle d'Alan Turing qui gère des états et des transitions pour aller d'un état à un autre.

Depuis 80 ans, c'est le règne de la logique. On s'est habitué à vivre avec ce contexte binaire des machines, à s'accommoder de la tyrannie du tout-ou-rien (parfois habilement dissimulée derrière des listes interminables).

Pourtant, l'IA est en train de bousculer tout ça.

La revanche des statistiques

L'intelligence artificielle, c'est un peu la renaissance de l'approximatif.

Revenons à notre e-commerce qui vend des tee-shirts en ligne. Remplaçons l'attribut "couleur" par un vecteur.

Parce qu'une couleur, c'est en réalité une combinaison de 3 chiffres : la quantité de rouge, de vert et de bleu. La carte graphique qui pilote un écran ne connaît pas "bleu ciel" ou "vert canard". Elle utilise cette combinaison de 3 chiffres pour restituer la bonne couleur à l'écran.

Avant, pour nos tee-shirts, on avait quelques choix possibles. Maintenant, on en a 255 x 255 x 255 = 16,581, 375. Les célèbres "16 millions de couleurs".

16 millions c'est beaucoup. Même si c'est toujours une valeur discrète, ça ressemble un peu à l'infini.

Observez comme ce changement d'échelle rend le choix de couleur plus "humain".

Parce qu'au lieu de se voir imposer les choix possibles dans la liste des 4 couleurs basiques, VOUS indiquez une couleur que vous avez envie de porter.

Ce n'est plus le logiciel qui impose le choix d'une valeur discrète, c'est l'utilisateur qui demande à la machine de lui proposer un tee-shirt qui "s'approche" de la couleur qu'il a choisit.

Le client se déplace dans la palette de couleurs, à la recherche de sa préférence du moment. Et en fonction de son emplacement, le système lui présente les tee-shirts dont les couleurs (les vraies) sont les plus proches.

L'utilisateur consulte les produits à peu près de la couleur qu'il veut. Ou ceux qui ressemblent à un modèle qu'il aime bien (pour l'avoir déjà acheté p.exemple).

C'est le sacre de l'approximatif. Adieu valeurs discrètes, laissez place aux valeurs continues.

Des vecteurs et des matchings

Cette façon de représenter des données change notre rapport à la technologie et au code qui l'anime.

On code des matchings. Des Tinders partout. Des Google search qui se résument à une input Box. Un assistant vocal qui attend la question.

Et que matche-t-on ? Des vecteurs. Nos nombreux états ou attributs discrets laissent leur place à des vecteurs.

Au lieu de représenter un profil utilisateur par un nom, prénom, un age, un genre et un code postal, on le modélise par un seul vecteur qui résume toutes ces caractéristiques.

Cette façon de représenter les données perd de l'exactitude. On ne saura plus dénombrer précisément le nombre d'utilisateurs dont le code postal est égal à 50100, ou ceux qui ont passé + de 4 commandes sur les 30 derniers jours.

Mais en contrepartie, on y gagne de l'anonymat et de l'intelligence. Une segmentation qui se réalise d'elle même. Une interaction plus humaine, dans laquelle l'utilisateur exprime plus naturellement et plus librement ses choix, sans être contraint par un menu.

Comparer l'incomparable

En transformant un ensemble d'informations en un vecteur, on peut aussi le confronter à un autre vecteur qui représente des informations d'un autre type.

Vectorisez des choux, vectorisez des carottes, et il devient possible de comparer des choux et des carottes.

C'est la démarche utilisée par OpenAI CLIP pour comparer un texte et une image. Vous soumettez au modèle une image et plusieurs descriptions possibles, et il trouve la meilleure correspondance.

Comment ça fonctionne ?

  1. transformer une image en un vecteur,
  2. transformer une phrase en un autre vecteur,
  3. entraîner un modèle d'IA supervisé pour projeter les 2 vecteurs dans un même espace vectoriel, de sorte que celui qui représente la phrase soit le plus similaire possible à celui qui représente l'image associée à la phrase.

Alors il devient facile de faire un moteur de recherche d'images :

A partir de là, on entrevoit pleins de nouveaux cas d'usages ! Rien n'empêche de comparer des couleurs de tee-shirts avec des profils d'utilisateurs ou des données météo.

A vous de jouer

Ne vous contentez pas de coder des listes, des options, des attributs ou des états.

Codez des vecteurs, et regardez ce qu'ils dessinent. Regroupez-les. Comparez-les.

Le CPU et le stockage n'ont jamais été aussi bon marché qu'actuellement. C'est le moment d'injecter de l'approximation, de la liberté et peut-être une part de hasard dans notre code.

Références :


Continuer la lecture

Ne pas confondre Client et Utilisateur

1 juin 2021

5 min read

Ne pas confondre Client et Utilisateur

Lire l'article
Ca suffit comme ça

18 mai 2021

4 min read

Ca suffit comme ça

Lire l'article
Inscription à la newsletter

Recevez chaque semaine un article pour réfléchir à votre prochain projet tech/data

gratuit, sans spam, désinscription en 1 clic

Merci ! Regardez dans botre boite mail. Un lien de confirmation n'attend plus que votre clic.
Arghh il semble compliqué de vous ajouter à la liste de diffusion. Et si vous m'envoyiez un mail directement à contact@camilab.co ?