VT2020-OpenAI Microscope-Fiche

= OpenAI =



OpenAi est une association fondée en 2015 par Elon Musk et Sam Altman. Cette association est devenue en 2019 une entreprise à but lucratif non plafonné pour obtenir plus de moyens. L'entreprise a pour but de faire avancer la recherche sur l'intelligence artificielle afin que les machines puissent analyser et comprendre au mieux l'environnement qui les entoure. À terme, l'association aimerait créer une intelligence artificielle à visage humain. Plusieurs entreprises financent ce projet comme par exemple LinkedIn, Microsoft et Amazon Web Services.

Projets
Depuis la création de l'association, de nombreux projets ont vu le jour. En voici quelques uns notables:


 * GYM : Développer et comparer des algorithmes d'apprentissage par renforcement (voir site internet pour en savoir plus).
 * ROBOSUMO : IA en forme d'homme bâton qui apprend seule à marcher, jouer au foot, faire du sumo, etc... Voici une vidéo YouTube qui illustre le projet ROBOSUMO.
 * DACTYL : Main artificielle pilotée par une IA. Elle est aujourd'hui capable de réaliser des Rubik's Cube (voir vidéo).
 * JUKEBOX : IA pour créer de la musique.
 * GPT-3 : Voir la fiche sur le sujet.
 * OPEN FIVE et GYM RETRO : IA permettant de jouer aux jeux vidéos. OPEN FIVE joue à des jeux récents tandis que GYM RETRO est spécialisée dans le retrogaming.
 * DEBATE GAME : Jeu de débat en ligne où il faut deviner quelle IA dit la vérité lors d'un débat.

Beaucoup d'autres projets ont bien évidemment vu le jour, dont notamment Microscope présenté ci-dessous.

= Microscope =

OpenAI Microscope est un outil sorti au printemps 2020 qui permet de visualiser graphiquement chaque couche significative et chaque neurone de chaque couche d'un réseau de neurones. Grâce à cet outil, on peut explorer un réseau de neurone facilement afin de mieux comprendre son fonctionnement.

Définitions
Quelques définitions sont nécessaires avant de comprendre plus en détail le fonctionnement de Microscope.

Réseau de neurones
Un réseau de neurones est un système informatique qui s'inspire du cerveau humain pour apprendre.

Voici l'architecture d'un réseau de neurones qui peut être représentée comme un graphe orienté:

Ici, sur l'image ci-contre, notre réseau est simple et ne comporte que 4 couches : une couche d'entrées en rouge, deux couches cachées en bleu, et une couche de sortie en vert. Le principe d'un réseau de neurones est le même qu'il y ait 4 couches ou 200 couches.

Les noeuds du graphe représentent les neurones. On constate que chaque neurone de chaque couche est relié à tous les neurones de la couche suivante.

Dans le cerveau humain, une information arrive à un neurone, le neurone est stimulé ou non par cette information. Il interprète cette information et transmet ou non un résultat au neurone suivant. Dans les réseaux de neurones, c'est la même chose! Une information arrive à un neurone. Ce neurone calcule son "interêt" pour cette information en fonction de sa stimulation. Ensuite chaque arête du graphe possède un poids qui va permettre grâce à un sytème probabiliste de determiner quel est le neurone suivant à recevoir l'information. Ce système de graphe pondéré et orienté est utilisé afin de représenter au mieux le cerveau animal. En effet grâce à ce système, seulement certains neurones sont stimulés (les plus utiles au traitement de l'information) et non tous à la fois à l'instar du cerveau humain.

ImageNet
ImageNet est une banque d'images 200x200px toutes labelisées. ImageNet compte 1000 classes d'images différentes et est souvent utilisé pour l'apprentissage de réseaux de neurones de reconnaissance d'images. ImageNet contient donc un très gros volume de données (environ 100000 images). Les classes d'images sont tous types d'objets, d'animaux, de véhicules, etc.

Places365
Places365 est une banque d'images 200x200px toutes labelisées. Places365 compte 1000 classes d'images différentes et est souvent utilisé pour l'apprentissage de réseaux de neurones de reconnaissance d'images. Places365 contient donc un très gros volume de données (environ 100000 images). Les classes d'images sont principalement des lieux remarquables, la nature (montagnes, mer, jungle...), de l'architecture.

= Modèles compatibles = Microscope fonctionne sur 8 réseaux de neurones différents, tous basés sur la reconnaissance d'images:
 * Inception v1 : apprentissage basé sur ImageNet, en 22 couches, sorti en 2014.
 * Inception v1 (Places) : apprentissage basé sur Places365, même architecture que Inception v1 mais spécialisé dans la reconnaissance de lieux, sorti en 2014.
 * Inception v3 : apprentissage basé sur ImageNet, plus performant et efficace qu'Inception v1, sorti en 2015.
 * Inception v4 : appretissage basé sur ImageNet, encore plus performant et efficace qu'Inception v3, sorti en 2016.
 * VGG 19 : Réseau assez simple basé sur Inception en version simplifiée.
 * ResNet v2 50
 * AlexNet : Modèle le plus connu et le plus étudié basé sur ImageNet.
 * AlexNet (Places) : Même architecture que le réseau AlexNet mais avec un apprentissage basé sur Places365

Ces modèles de reconnaissance d'images se différencient grâce à leurs caractéristiques d'apprentissage (différentes tailles de couches de convolution, différentes fonctions utilisées, différents poids ...) mais font partis des modèles les plus performants à l'heure actuelle. Microscope s'intéresse donc au fonctionnement de ses réseaux de neuronnes en essayant de comprendre ce qu'apprend concrètement un modèle.

= Visualisations =

Nous allons maintenant observer quelques visualisations depuis Microscope. Microscope nous éclaire sur la façon dont est traitée une analyse d'image à travers un réseau de neurones.

Architecture en couches
Comme vu précedemment, un modèle est constitué de couches. Ces couches permettent l'analyse d'une image à différents niveaux. Plus les couches sont élévées, plus les visualisations des neurones sont complexes.

Dans les couches les plus basses on observe des neurones s'interessant particulièrement aux contours:



Ces neuronnes ne permettent pas à ce stade de deviner par quel "objet" en particulier ils sont stimulés.

Dans une couche un peu plus élevée, on commence à observer des textures:



Encore dans une couche plus élevée, on remarque des patterns dans les visualisations, bien qu'on ne distingue encore aucune représentation réelle:



Dans les couches les plus élevées, on commence à observer dans la visualisation ce par quoi l'objet peut être stimulé. Par exemple, dans la photo ci-dessous, on peut observer des têtes de chiens dans la visualisation du neurone.



Car Detector
Les visualisations des neurones d'une couche s'appuyent sur les visualisations des neuronnes des couches précédentes.

Par exemple ici, dans une classe du modèle inception v1, nous trouvons un neurone stimulé par une roue de voiture et un autre stimulé par des fenêtres de voiture:



Ensuite dans une couche supérieure, on trouve le neurone permettant la détection de voiture dans une image:



On peut donc constater que le neurone de détection de voiture s'est formé grâce aux neurones de détéction de fenêtre et de roues.

= Utilité =

Nous allons maintenant voir en quoi Microscope est utile.

1. Microscope permet au grand public de visualiser un réseau de neurones.

2. Il est bien plus facile de se représenter le fonctionnement des neuronnes grâce à un résultat graphique. De même que cette technique permet d'éviter toute confusion sur le modèle ou le neurone qui est en train d'être discuté.

3. Cet outil permet de comprendre comment apprend un réseau de neurones, et comment il fonctionne.

4. On peut maintenant interpreter graphiquement les choix fait par une IA pour arriver à son but.

= Sources =

Blog d'OpenAI

OpenAI Microscope

Article OpenAI Microscope

Article de Google Brain, Feature Visualization

Article sur Microscope et Lucid library

Video how neural network see the world?

Video sur Feature Visualization et OpenAI Microscope

Page Wikipedia d'OpenAI

= Veille Technologique 2020 =
 * Année : VT2020
 * Sujet : OpenAI Microscope
 * Démonstration
 * Slides : [[Media:Project_flogo.pdf|Slides]]
 * Auteur : Élisa BEAUGRAND