Pourquoi l’annotation est beaucoup plus compliquée qu’il n’y paraît ?

Je vais vous donner quatre raisons.

Première raison: le plus dur à trouver créer une IA, c’est la donnée annotée.

Pour faire de l’intelligence artificielle on a besoin de 3 composantes:

Puissance de calcul

Elle est aujourd’hui largement disponible, facilement scalable et relativement pas cher avec le cloud et le GPU. Et la puissance de calcul se développe de manière exponentielle. Sur votre iPhone vous avez plus de puissance de calcul que tout le porgramme Apollo !

Algorithmes

L’état est en gros disponible sur github grâce au publications de Google et Facebook. Vous pouvez aujourd’hui monter une stack de traduction qui embarque les dernières architectures Transformer de Google. Le développement de l’open source, bénéficiant de l’effet réseau d’internet, est aussi exponentiel. Les algorithmes de deep learning étant au passage toujours plus gourmand en donnée d’apprentissage.

Données labellisées

Et il y a a beaucoup. Depuis la révolution numérique, à peu près tout l’information du monde est enregistrée au format numérique. Mais cette donnée, il faut l’annoter. C’est ce que fait Facebook aujourd’hui quand il vous propose de commenter une image ou d’identifier un ami sur une photo. Chaque jour on upload plus d’un milliard d’image sur Facebook et on l’annote. Nous produisons une base de donnée d’apprentissage énorme pour Facebook si bien qu’ils on pu développer des modèles capable d’identifier des personnes de dos. Mais dans la plupart des entreprises, la donnée est silotée et pas structurée.

Deuxième raison: il y a peu d’outils pour industrialiser l’annotation de données

C’est ce à quoi sert Kili Technology 🙂

Chez BNPP, pour résoudre ce problème de manque de donnée d’apprentissage, nous avons monté des interfaces d’annotations. Mais en faisant cela on a été confronté aux problématiques suivantes:

UX des interfaces d’annotation

  • Comment développer, à coût raisonnable des interfaces qui soient à la fois confortables et accessibles pour les gens du business et pour les data-scientists?
  • Par exemple, pour annoter des cellules cancéreuses, j’ai besoin d’une annotation au pixel près. Si je n’ai pas de trackpad à disposition et que je dois faire mon annotation à la souris depuis un PC, quelle est l’UX offrant la plus grande efficacité ?
  • En tant que quelqu’un du métier, je veux une interface graphique au niveau, sexy, ergonomique, intuitive et qui s’intègre éventuellement à mes outils métiers. En tant que data scientist, je veux pouvoir piloter mon annotation depuis mon IDE python, avec une API ou même idéalement depuis un module python. Comment réconcilier les deux ?
  • Comment avoir des interfaces versatiles pour adresser toutes les problématiques de ML; texte, image, voix, OCR et chaque interface étant customisable pour combiner pour un projet fait de plusieurs tâches de ML différentes sous tâches d’annotation, la plupart des projets n’étant pas une simple tâche d’annotation?

Maîtrise de la qualité de la donnée annotée

  • Par exemple, en Speech to Text, est-ce que je dois annoter avec ou sans la ponctuation? Est-ce que je peux annoter avec ou sans les fautes d’orthographe?
  • Comment est-ce que je contrôle que les annotateurs que je fais monter sur ma tâche aient bien compris ce que j’en attends et qu’ils le mettent bien en oeuvre ? Comment est-ce que je fais pour vérifier la qualité du travail de mes annotateurs lorsque je n’ai aucune indication sur la bonne réponse à attendre de l’annotation ?
  • Sur des projet complexes, avec une subjectivité forte, par exemple le ressenti sur une vidéo, on va vouloir mettre un consensus élevé par exemple 100% avec 5 annotateurs. En revanche, quand il y a juste un enjeux de maîtrise de base de la qualité, on va plutôt vouloir mettre 10% de consensus avec 2 personnes. On veut ainsi pouvoir mesurer un score de consensus entre les annotateurs.

Nombre d’annotateurs

Par exemple un client du retail travaille sur un projet visant à proposer une expérience client similaire à celle d’Amazon Go. Pour faire cela, il faut annoter plus d’un million d’image et donc pour cela il faut pouvoir embarquer du monde et mesurer leur performance et la qualité du rendu. Et pour vous donner un ordre de grandeur, avec un outil de base pas très performant, 10k images, c’est 3 mois pour 1 personne. Donc pour un projet comme celui-là il faut beaucoup d’annotateurs et donc il faut les coordonner. Comment est-ce que je fais pour gérer des droits d’accès à la donnée ?

Troisième raison: l’annotation reste très longue !

Même si on est bon sur les interfaces et la coordination des annotateurs, c’est quand même assez long. Et donc il faut l’accélérer de manière intelligente en tirant le meilleur de ce que peut faire l’homme et la machine. La machine étant très forte sur les tâches répétitives où l’homme se fatigue vite et l’homme étant bon pour distinguer et assimiler de nouvelles nuances.

On va typiquement vouloir faire du

Apprentissage online

C’est à dire commencer à faire apprendre un modèle en cours d’annotation pour préannoter la data

Apprentissage active

C’est à dire par quels assets commencer à annoter. Typiquement si vous faites du deep learning, vous voulez un maximum de diversité en dès le début de votre entraînement. Comment faire pour gérer une fil de priorisation optimale qui n’est à première vue pas forcément l’ordre alphabétique des fichiers à annoter ? 

Apprentissage faiblement supervisé

Comment faire pour utiliser des règles métiers pour pré annoter massivement ? Par exemple si je dois annoter des noms de produits dans du texte et que je peux par ailleurs extraire de mon référentiel produit un dictionnaire de noms?

Quatrième raison: avec de la donnée parfaite, les performances ne sont jamais à 100% !

Même si on arrive à produire un dataset annoté en quantité et en qualité suffisante pour entraîner un bon modèle et avoir des résultats acceptables, on n’obtient jamais 100% de performance.

En effet, tout cela permet de faire l’entraînement initial. On va extraire la donnée de vos systèmes et l’annoter pour créer le dataset.

  • Cela permet d’obtenir un modèle, mais qui est loin des 100% de performance attendu sur par le métier. 
  • Et la performance va avoir tendance à se dégrader au cours du temps (model drift) avec l’arrivée de nouveaux exemples.
  • Et les gens du métier n’acceptent jamais de prendre le risque d’automatiser une tâche sans avoir la garantie d’avoir 100% de performance.

Imaginez si vous faites de la saisie automatique d’ordres clients lus dans des mails directement dans le CRM et que cela lance la chaine de production d’une balle de métal de 12 tonnes…

Sur des emails de commande clients, par exemple on arrive bien à plus de 95% de performance sur la classification et plus de 80% de performance sur la reconnaissance d’entités nommées. Ce qui est déjà très bien. Mais pour ne saisir que de la donnée avec 100% de fiabilité dans les systèmes, afin de garantir l’intégrité des commandes, il est indispensable d’orchestrer la supervision humaine en production.

Il faut être capable de garder l’humain dans la boucle, de capturer le feedback pour continuer à faire apprendre les modèles en production grâce à de l’annotation.

Il est clef de garder les humains dans la boucle quand on veut mettre en prod de l’AI. #Human in the loop.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.