Réaliser des POC avec une quantité de données limitée ? Prioriser la qualité des données et connaître 3 solutions courantes

|

|

Le besoin
La solution
Ils peuvent vous aider

Le besoin

Réaliser des projets pilotes en IA avec une quantité de données limitée

Je suis Directeur de Production en transformation numérique dans une entreprise de vente en ligne et nous mettons en place, avec un éditeur de logiciels fournissant des solutions d'Intelligence Artificielle, un Projet Pilote (ou POC, pour Proof of Concept, en anglais) pour transformer et optimiser notre processus industriel (workflow). La tâche que nous visons pour le moment concerne notamment l'analyse sentimentale des commentaires de clients qui est, pour le moment, effectuée par des agents humains de manière assez qualitative. Nous réalisons ensemble ce POC afin d'identifier les principaux risques techniques, les gains potentiels et explorer l'orientation fonctionnelle de notre projet. Nous ne disposons pas de données volumineuses. L'objectif principal est d'effectuer une première évaluation sur l'impact de telles solutions sur notre workflow global et d'investir des moyens plus importants qu'au cas où la direction serait convaincue par l'intérêt d'un workflow entièrement automatisé.

L'essor récent des techniques en NLP fournit-il des solutions appropriées à ce cas de figure ?

La solution

Que peut m'apporter les récentes techniques en NLP en cas de volume de données limitées

Données, élément central des solutions d'IA

Qui dit IA dit données. Collecter des données constitue un défi considérable, notamment sur le plan législatif, et les annoter représente un coût supplémentaire sur le plan financier et temporel. S'il est vrai que le nombre d'entreprises prêtes à adopter des solutions d'IA est constamment en hausse (une étude de Deloitte en 2020 révèle que sur environ 3 000 responsables informatiques et commerciaux dans l'industrie, 67% ont déclaré que leur entreprise avait déjà mis en place de telles solutions et 97 % prévoyaient d'en utiliser au cours de l'année suivante), l'étude de 2019 réalisée par Dimensional Research montre que 96% des entreprises interviewées ont déjà fait face à des problèmes de données au cours de la réalisation des projets d'IA. Les deux défis majeurs constituent la présence de biais dans la distribution des données et le manque de données. En outre, 72% des entreprises interviewées affirment qu'au moins 10 000 items sont nécessaires pour que le modèle final atteigne une performance satisfaisante. Or, si l'on optait pour une simple plateforme de crowdsourcing, l'annotation de 100 000 items peut dépasser facilement 70 000€, ce qui représente un coût conséquent pour des petites et moyennes entreprises, sans tenir compte des frais indispensables consacrés à l'utilisation des serveurs Cloud.

 

Mesure la qualité d'une solution d'IA

Cela peut sembler un truisme, mais il n'existe pas de consensus absolu sur la définition de la performance satisfaisante ni sur la manière de mesurer cette performance. La finalité même des projets d'IA peut aussi varier considérablement, en fonction des objectifs de chaque entreprise. Dans le cas de figure présent, votre objectif principal est d'effectuer une première évaluation d'une solution d'IA et il n'est nullement nécessaire d'atteindre une performance maximale. Ce cas de figure est en réalité très fréquent, l'automatisation d'un processus réalisé entièrement par des opérateurs humains ne se fait rarement en une seule fois, elle se déroule généralement par petites étapes, chaque étape reposant elle-même sur des expériences, des tâtonnements, ou autrement dit, des projets pilotes.

Approches basées sur les données (data-centric AI) et approches basées sur les modèles (model-centric AI)

En règle générale, le développement d'une solution d'IA se déroule au minimum en 3 phrases :

  1. Le recueil des données.
  2. L'annotation des données. Il peut s'agir d'annoter des textes en sentiments (positif, négatif et neutre par exemple), ou encore d'identifier des entités nommées dans un texte comme la date et les organismes, etc.
  3. L'entraînement d'un modèle dont la fonction varie suivant la tâche exacte (analyse de sentiments dans le cas de figure présent).

L'approche basée sur les modèles a été pendant longtemps l'approche dominante au sein de la communauté de l'apprentissage automatique. Cette approche est caractérisée souvent par un jeu de données statique (appelé aussi benchmark) sur la base duquel les ingénieurs testent et règlent différents modèles dans l'espoir de produire la meilleure performance possible. Dans cette optique, la qualité des données se trouve souvent relégué au second plan, à cause de quoi il est difficile d'évaluer la fiabilité des résultats obtenus. Par ailleurs, le gain de performance devient de plus en plus marginal à force de se concentrer uniquement sur les modèles.

L'approche basée sur les données se propose d'aborder l'apprentissage automatique sous un autre angle qu'est celui de la qualité des données. Le processus d'annotation des données est mis en valeur, avec notamment la prise en conscience de l'important rôle des experts du domaine dans la rédaction du guide d'annotation (c'est-à-dire des règles qui vont présider au travail des annotateurs).

D'abord la qualité, ensuite la quantité, et puis les modèles

Selon une récente présentation donnée par Andrew Ng, l'une des figures importantes en IA, enrichir les données, tant en termes de quantité que de qualité est généralement bien plus efficace que des approches basées sur modèles (model-centric AI) visant à améliorant uniquement l'algorithme d'apprentissage.

La figure ci-dessous montre qu'ajouter plus de données de qualité (approche data-centric) conduit à une plus grande amélioration de performance par rapport à une approche model-centric qui consiste en général à tester, comparer ou ajuster différents modèles. La figure illustre cette différence pour la détection automatique par un processus d'apprentissage :

  1. Des imperfections sur des tôles d'acier (Steel defect detection).
  2. Des panneaux solaires (Solar panel).
  3. D'autre type de surface (Surface inspection).
data-centric AI
Le gain de performance apporté par une approche basée sur les              données (data-centric) vs. une approche basée sur l'ajustement              des modèles (model-centric) dans 3 cas de figure différents, de              deeplearning.ai

Mais si l'on a peu de données ?

La quantité de données constitue dans notre cas une contrainte intrinsèque et nous voudrions, avec un budget bien contrôlé, n'annoter qu'une petite quantité de données. Les 3 principes suivants sont particulièrement importants :

  1. Cohérence : L'annotation (par exemple, catégoriser un commentaire comme positif ou négatif) doit être cohérente dans le sens où tous les annotateurs doivent suivre le même schéma d'annotation. Ce principe est particulièrement pertinent dans la phase de la rédaction du guide d'annotation. Vu que les charges d'annotation sont souvent distribuées entre plusieurs personnes, il est important que les instructions d'annotation soient rédigées afin que chaque annotateur travaille selon un schéma clair et cohérent. Dans le cadre des annotations linguistiques par exemple, il est crucial que l'équipe technique se mette d'accord sur la définition des notions linguistiques telles que la proposition, les phrases nominales, etc. Notons que cette phase est généralement réalisée avec le concours des annotateurs puisque ce sont ces derniers qui travaillent sur les lignes de front et qui, en conséquence, connaissent le mieux les écueils spécifiques à chaque tâche. Le retour des annotateurs est donc extrêmement important et révélateur de la qualité et de la compréhensibilité du guide d'annotation.
  2. Représentativité :  Les données collectées et annotées doivent être représentatives. Si l'on veut collecter des textes représentatifs d'une certaine communauté Twitter, il est par exemple important de veiller à l'équilibre hommes-femmes parce que sinon on risque d'entraîner un modèle basant plutôt ses décisions sur des traits linguistiques propres à un sexe particulier.
  3. Qualité : L'annotation des données doit contenir le moins de biais possible. Si l'on veut entraîner un modèle capable de détecter un discours de haine, il est important d'insister pendant la formation des annotateurs sur la non-pertinence des traits linguistiques tels que le langage familier, l'argot quotidien propre à certaines communautés, etc.

Zero-shot learning, few-shot learning et fine-tuning

Tout en gardant en tête l'importance de la qualité des données, 3 techniques dans le domaine du NLP sont particulièrement pertinentes lorsque les données d'entraînement sont de taille limitée, chacune correspondant à un cas de figure spécifique.

Zero-shot learning

La première technique, nommée zero-shot learning, s'applique à un cas extrême où l'on ne dispose d'aucune donnée, ou, en tout cas, d'aucune donnée annotée.

Initialement, le terme zero-shot learning désigne la capacité d'un modèle à reconnaître une classe non définie pendant l'entraînement. Dans le contexte de la reconnaissance d'images par exemple, le modèle serait capable d'identifier un dromadaire en ayant été entraîné uniquement sur des images contenant des chameaux. On peut faire l'analogie entre ce tour de main technique et un enfant qui n'aura aucun mal à identifier qu'un animal est un dromadaire, même s'il n'en a jamais vu, à l'aide de la simple indication qu'un dromadaire ressemble à un chameau mais n'a qu'une seule bosse. Cependant, dans le contexte du NLP, il est aujourd'hui courant d'utiliser ce terme dans une acception plus générale. On parle de zero-shot learning dès lors qu'un modèle est capable d'effectuer une tâche sur laquelle il n'est pas entraîné.

Il y a deux approches assez nuancées d'utiliser le zero-shot learning dans le contexte du NLP. On peut soit utiliser directement un modèle de langue pré-entraîné tel que CamemBERT, soit ajuster (fine-tuner) un modèle sur une tâche spécifique.

Utiliser directement un modèle de langue pré-entraîné

Certains modèles pré-entraînés sur des données plus ou moins génériques sont capables d'effectuer des tâches de classification. Prenons CamemBERT comme un exemple. Ce modèle, sans plus d'entraînement, est capable de déterminer la probabilité d'un mot en fonction du contexte. En fournissant une liste de de mots correspondant aux résultats d'une tâche à accomplir, il est possible d'utiliser ce modèle pour faire de l'analyse sentimentale ou, plus généralement, de la catégorisation de documents. L'exemple ci-dessous montre deux cas de figure où la première liste de mots permettra d'analyser automatique le sentiment d'un texte et la deuxième de prédire le thème d'un texte.

  • Ce film est horrible. Le commentaire précédent est [mot à prédire].           Liste de mots : [positif, négatif, neutre]
  • Emmanuel Macron est en visite à Monaco. La phrase précédente parle de [mot à prédire].         Liste de mots : [politique, santé, sport]

Ajuster un modèle pour une tâche spécifique

Dans le deuxième cas, un modèle de langue déjà ajusté sur une autre tâche peut être utilisé pour d'autres tâches, en déclinant la tâche à effectuer. L'idée dernière cette approche est que les corpus d'une tâche peuvent être exploités afin de réaliser une autre tâche de nature assez différente. À titre d'exemple, on peut utiliser CamemBERT comme point de départ et l'ajuster sur un corpus d'inférence textuelle (Natural Language Inference, NLI). Cette dernière tâche prend comme entrée une paire de textes (prémisse et hypothèse) et produit une étiquette [valide] (entailment), [contradictoire] (contradiction) ou [neutre] (neutral) comme output, comme illustre les exemples ci-dessous.

  • Jean ne sort jamais quand il pleut, il peut aujourd'hui (prémisse) Jean ne sort pas aujourd'hui (hypothèse)  ----> Valide
  • Jean ne sort jamais quand il pleut, il pleut aujourd'hui (prémisse) Jean sort aujourd'hui (hypothèse) ---> Contradictoire
  • Jean ne sort jamais quand il pleut, il pleut aujourd'hui (prémisse) Jean mange du riz aujourd'hui (hypothèse) ---> Neutre

Une fois que le modèle est entraîné sur des données d'inférence textuelle, il suffit de décliner la tâche d'analyse de sentiments comme une tâche d'inférence.

  • Ce film est horrible (prémisse) Le commentaire précédent est positif (hypothèse)    ----->   Contradictoire (donc négatif)

Few-shot learning

La deuxième technique, nommée few-shot learning, convient au cas où l'on ne dispose que d'un jeu de données annotées de taille très limitée (100-200 items par exemple). Cette approche ressemble au zero-shot à cette différence près que l'apprentissage est basé sur un input plus riche grâce à des phrases d'amorce (prompt en anglais) qui ont pour but de mieux orienter les prédictions du modèle. Voici les mêmes exemples que ceux utilisés dans la section consacrée au zero-shot learning, avec l'ajout des phrases d'amorce.

  • Ce plat est immangeable. Le commentaire précédent est négatif. [phrase d'amorce fournie pour orienter le choix du bon mot dans la liste proposée] Ce film est horrible. Le commentaire précédent est [mot à prédire].   Liste de mots : [positif, négatif, neutre]
  • Jean ne sort jamais quand il pleut, il pleut aujourd'hui. Jean sort aujourd'hui. ---> Contradictoire [phrase d'amorce]. Ce film est horrible. Le commentaire précédent est positif.  ----->   Contradictoire (donc négatif)

Dans cet exemple,une seule phrase d'amorce d'amorce est utilisée. Dans la pratique, il est courant d'en utiliser plusieurs pour permettre au modèle de mieux saisir le sémantisme des différentes classes (positif, négatif, neutre ou valide, contradictoire, neutre dans le cas d'inférence).

Ajustement de modèle [Fine-tuning]

La troisième technique, appelée fine-tuning en anglais, est pertinente lorsque le corpus annoté est de petite taille mais exploitable (plus de 500 items par exemple) pour ajuster un modèle pré-entraîné. Dans le cas du zero-shot learning, le modèle a été utilisé tel qu'il est et seules les données ont été modifiées afin que le modèle soit utilisable pour une nouvelle tâche. On peut faire l'analogie avec la situation dans laquelle on aplatit un sol irrégulier afin de disposer des chaises dessus.

Cependant, le modèle en question (Camembert) a été entraîné pour prédire un mot en fonction de son contexte, une tâche assez éloignée de l'analyse de sentiments. Lorsque les données d'entraînement atteignent une certaine quantité, il est possible d'ajuster les poids de ce modèle afin qu'ils soient plus adaptés à l'analyse de sentiments que la prédiction de mots, ce qui conduit souvent à de meilleures performances. Si l'on reprend la même analogie, c'est comme si, au lieu d'aplatir le sol, on ajuste la forme des chaises afin qu'elles puissent tenir de manière plus stable sur une surface irrégulière.

Enfin, il est à noter qu'il est aussi possible d'augmenter artificiellement les données. L'une des méthodes les plus simples consiste à remplacer automatiquement des mots d'une phrase par des synonymes. Il est aussi courant d'injecter des erreurs orthographiques/grammaticales dans les textes (en supprimant aléatoirement des lettres par exemple) car les textes sur Internet, notamment les commentaires de clients, contiennent régulièrement des erreurs. L'augmentation de données automatique permettra donc d'enrichir les données avec un coût minimal et, à terme, d'améliorer à la fois la performance et la robustesse des modèles dans des scénarios réels.

 

 

Points d'attention

Le manque de données annotées est souvent un obstacle majeur à la réalisation des projets de NLP et des projets d'IA en général. Le fine-tuning de modèles pré-entraînés disponibles sur étagère est aujourd'hui la stratégie la plus courante dans le cas où un petit corpus annoté est disponible, des techniques de zero-shot learning permettent, quant à elles, de faire face à l'absence totale de données annotées. Le few-shot learning constitue un compromis et convient lorsque les données sont de taille très limitée mais annotées de manière soignée.

Il est important de rappeler que dans le présent article, seule la tâche de classification de textes est donnée comme exemple. Les performances du zero-shot learning ainsi que du few-shot learning varient considérablement d'une tâche à l'autre et la sélection d'une bonne phrase d'amorce (prompt) est essentielle. Il s'agit donc d'un véritable travail d'ingénierie et lorsque les conditions le permettent, il est préférable d'opter pour le fine-tuning qui produit généralement de meilleurs résultats.

Par Xiaoou Wang
Ingénieur-Chercheur en Traitement automatique des Langues, fondateur de https://aiprototypes.com/.