pipeline status Coverage report Gem Version

Objet

J'entends de plus en plus parler de l'intelligence artificielle et des avancées sidérantes des GAFA et autres NATU dans ce domaine et ça m’intéresse beaucoup. Je souhaite en apprendre plus mais si l'Internet est plein d'informations, il faut tout de même savoir la chercher. Il y a de nombreux articles en Anglais, peu en Français et les concepts ne sont pas simple de prime abord. Je souhaite donc apporter ma pierre à l'édifice en partageant ce que j'apprends. C'est un projet à but non lucratif, ouvert à tous sous licence MIT dont le seul but est l'apprentissage par l'expérience. Le répertoire d'exercices se trouve ici

Description

On regroupe habituellement sous le terme d'intelligence artificielle un ensemble de notions s'inspirant de la cognition humaine ou du cerveau biologique, et destiné s à assister ou suppléer l'individu dans le traitement des informations massives.

En janvier 2017, le secrétaire d’État chargé de l'Industrie, du Numérique et de l'Innovation et le secrétaire d’État chargé de l'Enseignement supérieur et de la Recherche ont lancé la démarche #franceIA qui avait pour objectif d'étudier les opportunités de l'IA. Cette étude se structure autour de trois piliers qui ont été déclinés en dix thèmes clés et traités par dix groupes de travail et sept sous-groupes. Leur rapport de synthèse est disponible ici.

L'intelligence artificielle traite les sujets suivants :

Pourquoi un tutoriel en français ?

Il ne faut pas se mentir, la langue universelle de la technique est bel et bien l'anglais aujourd'hui. Mon code est en anglais ainsi que ses commentaires. C'est une obligation si l'on veut pouvoir partager avec le plus grand monde possible ; étant un grand défenseur de l'open-source, le partage du code est ce qui le rend plus fort, plus sûr.

Si les Français se trouvent assez bien représentés en ce qui touche à l'Intelligence Artificielle comme le dit le rapport du gouvernement, les articles en Français sur Internet sont vieux, vide de sens des fois, trop compliqués souvent ; mais surtout jamais sexy ! L'IA semble, pour le commun des mortels, intouchable, stratosphérique et même considéré à surtout éviter ! Hors il y a un enjeu national de taille. Nous avons raté le passage à l'Internet parce que nous pensions être les maitres du monde avec notre minitel ; il s'agit là de ne pas loupé la marche !

Si les infrastructures françaises sont à la ramasse (quasi inaccessibles), nos ingénieurs se vendent bien ; mais pas chez nous ! Si nous étudions l'IA, en parlons ; si nous écrivons des articles dessus, c'est en anglais ! Hors dans les enjeux de l'IA, on compte l'économie, la santé, l'industrie qui ont des dimensions humaines fortes ; si on alimente les IA avec seulement des données et des concepts en anglais, on peut oublier le mode de pensée à la française qui pourtant historiquement a une bonne réputation.

Et l'IA va rapidement devenir un outil d'aide à la prise de décision dans les entreprises et dans la société. C'est déjà le cas pour vos recherches sur Internet, vos itinéraires en voitures, la gestion de vos données sur les clouds etc. Lorsque vous répondez à un captcha afin de savoir si vous êtes bien un humain, vous pensez vraiment que Google ne vous utilise pas pour former une IA ? Si Skynet vous dit quelque chose, je vous laisse comprendre l'importance d'une indépendance de l'IA ou tout du moins d'une IA alliée (française ou européenne).

Mon idée

Comme le soulève le rapport de synthèse de France IA de 2017, la France manque cruellement de tutoriels et de cours abordables en ce qui concerne l'IA ; mon idée est d'en créer un qui soit reproduisible, accessible, ludique et agréable.

Si j'ai appris une chose au fil de mes années d’expériences de développeur, c'est qu'il ne faut pas réinventer la roue ! Si on a une idée, quelqu'un dans le monde l'a très probablement déjà eu, et il vaut mieux réutiliser son travail. La difficulté est de le trouver et d'en avoir les droits. Par exemple, Facebook met à disposition des outils pour jouer avec son IA wit qui permet, entre autre, de créer des chat-bot mais l'IA et ses données se trouve chez eux. Autrement dit, pendant que vous entrainez votre bot, vous entrainez surtout le leur. Il n'y a à ma connaissance que l'OpenIA d'Elon Musk qui se veut universelle et pour l'humanité plus que pour l'entreprise et le profit. Si le profit est bon, il ne doit être qu'un résultat et non un objectif !

Je pense donc me baser sur des concepts, rechercher du code les gérants plus ou moins et tenter de recréer une IA disponible pour tous (disponible sous la gem ai-nlp).

Je dois faire un choix sur le type d'IA que je souhaite créer. Je suis un littéraire, et la plupart des cours et informations que je trouve sur l'IA sont basés sur des mathématiques ; alors j'ai décidé d'accer mon IA sur les éléments suivants :

Cette IA doit donc apprendre à comprendre un texte humain. Une interface web doit afficher de manière graphique la somme de connaissances qu'elle acquière, contenir une zone permettant à l'humain de communiquer avec l'IA et une zone dans laquelle elle répond.

Technologies et concepts

Au tout début, mon IA ne comprendra rien à rien ! Il va falloir mettre en place un système d'apprentissage !

Mais qu'est-ce que l'apprentissage ? Il s'agit d'analyser, du regrouper, de stocker l'information afin de pouvoir l'exploiter.

L'Analyse

L’analyse sémantique représente l’ensemble des procédés visant à analyser le sens des mots et des phrases, elle est le plus souvent utilisée comme préambule au traitement automatique des langues.

Si je veux que l'IA comprenne le langage humain, je dois tout d'abord trouver comment réaliser les actions suivantes :

Le langage informatique

Je suis un grand fan de Ruby, c'est un langage dont la philosophie est basée sur le paradigme objet ; il est donc réflexif et dynamiquement typé. je pense qu'il est capable d'apporter des avantages à mon projet grâce à sa réflexivité ; c'est à dire qu'un programme Ruby est capable d'examiner, et éventuellement modifier, ses propres structures internes de haut niveau lors de son exécution !

Il y a, à mon avis, une belle opportunité à exploiter pour tout ce qui concerne les lemmes.

Le Regroupement

Le clustering : Il s'agit, pour un logiciel, de diviser un groupe hétérogène de données, en sous-groupes de manière que les données considérées comme les plus similaires soient associées au sein d'un groupe homogène et qu'au contraire les données considérées comme différentes se retrouvent dans d'autres groupes distincts ; l'objectif étant de permettre une extraction de connaissance organisée à partir de ces données.

Une fois mes éléments de phrase correctement identifiés, je dois réussir à les regrouper. Il est possible de les regrouper par sens (homonymes, synonymes, racines, préfixes, suffixes, lemmes) par type (nom, verbe, adjectif, etc.)

Ce regroupement est donc crucial, c'est lui qui va me permettre de stocker au bon endroit mes données. Je dois être capable de faire ces regroupements de façon non supervisés dans certains cas et supervisé dans d'autres.

Non supervisés

Je peux donc automatiquement regrouper, classifier des éléments que j'ai découpé à l'aide de ma base de données. Mais si par exemple aucune donnée ne me permet de faire un regroupement non supervisé, je dois interagir avec l'utilisateur ; je dois lui demander de m'aider à classer cet élément.

Supervisés

L'IA doit être en mesure d’interagir avec l'utilisateur et de lui demander de l'aide pour classifier les éléments qu'il aura découpé.

L'utilisateur doit permettre de préciser :

  • le type
  • le sens
  • l'origine (lemme)

Le stockage

Le stockage doit permettre une récupération des données qui permette une bonne exploitation de ces dernières.

L'exploitation

Tout ceci est magnifique, mais si l'IA arrive maintenant à découper et faire des regroupements d'information, il lui faut pourvoir les exploiter. L'avantage d'un moteur de recherche comme QWANT ou Google, par exemple, c'est qu'il sait que sa seule action est de fournir des données qu'il a collecté et regroupé à la demande ; il n'a pas vraiment besoin de comprendre ce qu'il stocke.

Une IA plus évoluée comme SIRI par contre, est censée répondre à diverses actions comme ajouter un évènements à l'agenda, donner le temps qu'il fera demain ou encore trouver le chemin d'un magasin proche de notre position. Il faut donc qu'il comprenne le type de demande qui est faite.

Références

Deep Learning

NLP

Programmes/API

Ruby