Intelligence artificielle et langue Française : un pas de géant en 2018
Le Deep Learning est une technologie à la mode qui promet des révolutions dans tous les domaines.
Et en effet, depuis 2012, cette technologie continue de repousser les limites de ce que peuvent faire les ordinateurs, au point de dépasser certaines performances humaines.
Mais attention aux effets de buzz : le Deep Learning excelle seulement dans certains domaines. Les principaux étant :
- La vision par ordinateur (images / vidéos) : depuis 2012 le domaine a été totalement transformé par le Deep Learning qui surpasse facilement les anciennes méthodes sur de nombreuses tâches (ex : classification, positionnement des objets).
- Les modèles prédictifs (ex : prédire les ventes, les anomalies, les fraudes) : depuis 2016 (notamment avec les entity embedding), le Deep Learning rattrape et peut dépasser les performances des autres modèles de Machine Learning (ex : GradientBoosting, régressions) tout en nécessitant beaucoup moins de travail manuel sur les données.
- Les jeux : depuis 2016 et la victoire d’AlphaGo, le Deep Learning permet de repousser les limites de l’intelligence artificielle dans les jeux avec l’apprentissage par renforcement.
Cet article s’intéresse à une autre catégorie : celle du traitement du langage (Natural language processing).
Depuis 2013, les méthodes utilisées étaient assez similaires pour la plupart des tâches, avec des performances qui évoluaient doucement.
En 2018, un pas de géant a été réalisé, et les performances de traitement du langage ont explosées.
Mais quel est ce nouveau modèle et quels sont les cas d’usage ?
Le traitement du langage naturel
Traiter le langage naturel a de nombreuses applications, par exemple :
- Analyse sentimentale : un commentaire est-il positif ou négatif ? Quelle est la perception externe de mon entreprise ?
- Traduction entre langues.
- Génération de texte : synthèse automatique, réponse à des questions (chatbot), etc.
- Classification de documents : Recrutement (pré-analyse des CV), diagnostic, reporting, etc.
- Transcription.
L’approche dominante depuis 2013 : les “vecteurs de mots”
L’approche des vecteurs de mots (word2vec) consiste à associer chaque mot à un vecteur (un ensemble de nombres), chaque vecteur portant une représentation sémantique du mot.
Associer un vecteur à chaque mot permet de les projeter dans un espace vectoriel. Et deux mots ayant un sens proche seront représentés par des points proches dans cet espace.
Cette approche est puissante et permet d’effectuer des transformations intéressantes.
Par exemple, comme illustré ci-dessous, en calculant la distance entre les mots Homme et Femme et en appliquant cette distance au mot Roi, on obtient en résultat le mot Reine.
Ces vecteurs sont pré-calculés à partir de gros corpus de texte et sont ensuite utilisés comme première couche pour construire des modèles et applications par dessus. Le nouveau modèle n’aura donc pas à apprendre à partir de zéro le sens des mots.
Modèle profond pré-entraîné : la révolution de 2018
En 2018, une nouvelle approche est apparue. D’abord timidement, puis au regard de résultats impressionnants (bien supérieurs aux autres approches), de nombreux articles scientifiques et modèles ont été publiés. Et les GAFA ont pu largement augmenter la performance de leurs algorithmes liés aux langages.
Une méthode inspirée de l’état de l’art en vision par ordinateur
La nouvelle approche est similaire à celle utilisée dans le domaine de la vision par ordinateur depuis des années : entraîner un modèle complet à réaliser une tâche avec beaucoup de données. Puis, se servir de ce modèle pré-entraîné pour réaliser d’autres tâches, en bénéficiant de l’apprentissage précédent. C’est ce que l’on appelle le transfert d’apprentissage.
Dans le monde de la vision, il est désormais rare d’entraîner un nouveau modèle à partir de zéro (hors recherche). L’approche classique est plutôt d’utiliser un modèle pré-entraîné sur le jeu de données ImageNet contenant plus de 14 millions d’images annotées en plus de 20000 catégories. Et ensuite de rajouter des couches à ce modèle pour appliquer une autre fonction (ex: repérer les positions des objets, classifier les images, etc.).
Mais n’est-ce pas similaire à l’approche des vecteurs de mots ? Il faut comprendre qu’un réseau de neurone est composé de différentes couches. Les premières couches représentent des structures “simples” (ex : angles, lignes) et les couches suivantes se basent sur ces structures simples pour représenter des structures plus complexes.
Pour schématiser : en traitement du langage, la première couche peut représenter les mots. Les couches intermédiaires peuvent représenter les phrases et paragraphes. Et les dernières couches concerner le sens global du texte.
Avec les vecteurs de mots, seule la première couche (contenant le sens des mots) est pré-entraînée. Les autres couches doivent apprendre de zéro, ce qui nécessite beaucoup de données et de calculs.
La nouvelle approche est de pré-entraîner toutes les couches d’un modèle profond à réaliser une tâche simple, comme prédire le prochain mot. Ainsi, on dispose de données à volonté (par exemple, de tout Wikipédia) et le modèle peut développer une représentation complexe du langage.
Une fois ce modèle pré-entraîné, il est possible de le réutiliser pour d’autres tâches en rajoutant des couches par dessus, par exemple pour classifier les textes en différentes catégories. Le modèle bénéficiera de sa compréhension du langage et n’aura à apprendre que la partie classification, ce qui est plus efficace et demande moins de données.
Utiliser un modèle de langage pré-entraîné sur le Français
Tout au long de l’année dernière (2018), plusieurs modèles fonctionnant ainsi ont été créés, les principaux étant :
- ULMFiT en janvier 2018.
- ELMo en février 2018.
- Transformer d’OpenAI en juin 2018.
- BERT de Google en octobre 2018.
Pour le Français, à l’heure actuelle il est possible de télécharger les modèles pré-entraînés suivants :
- Modèle BERT : sur le github de Google. C’est un modèle complexe et gourmand, qui donne pour l’instant les meilleurs résultats sur des tâches complexes.
- Modèle ULMFiT : j’ai pré-entraîné le modèle en utilisant 100 millions de mots de Wikipedia FR. Vous pouvez trouver le modèle pré-entrainé sur mon github, avec un exemple d’utilisation pour classifier des critiques de films. Ce modèle est beaucoup plus léger que BERT et permet d’avoir d’excellents résultats sur des tâches de classification et d’analyse de sentiments.
Et au regard du rythme d’évolution dans ce domaine, l’année 2019 promet encore de belles avancées !