×

우리는 LingQ를 개선하기 위해서 쿠키를 사용합니다. 사이트를 방문함으로써 당신은 동의합니다 쿠키 정책.


image

Science Étonnante, (#31) Le deep learning - YouTube

(#31) Le deep learning - YouTube

Bonjour à tous ! Aujourd'hui on va parler du deep learning.

Le deep learning c'est un domaine de l'intelligence artificielle

qui a littéralement explosé ces dernières années.

Vous en avez déjà peut être entendu parler si vous avez vu ma vidéo sur le Go,

ou bien si vous avez vu, il y a quelques mois, ces images un peu psychédéliques qui ont été publiées par Google

et qui représentaient soit-disant un algorithme de deep learning en train de rêver.

Alors aujourd'hui on va voir ce que c'est que le deep learning

et comment ça se positionne par rapport aux autres champs de l'intelligence artificielle.

L'intelligence artificielle on en parle depuis plus de 50 ans maintenant

et l'histoire du domaine est un peu tumultueuse.

Ça a commencé par une période de grand enthousiasme

où on s'imaginait qu'on arriverait très vite à faire des choses assez incroyables.

Puis ça a été suivi par une période un peu plus sombre de désillusion

où on a finalement constaté qu'on avait un peu sous-estimé les difficultés.

Je ne vais pas vous refaire l'histoire du domaine

mais ce qu'il faut savoir, c'est que dans les années 90, après cette période de désillusion,

Il y a eu une renaissance de l'intelligence artificielle,

sous la forme de ce que l'on appelle le machine learning,

ou "l'apprentissage automatique" en bon français.

Le machine learning c'est un domaine qui étudie

comment des algorithmes peuvent apprendre en étudiant des exemples

et on va voir exactement ce que ça veut dire.

Le deep learning dans tout ça, ou "l'apprentissage profond"

c'est juste une manière particulière de faire du machine learning

et je vais vous expliquer en quoi elle est originale

et pourquoi elle a explosé ces derniers temps.

Pour comprendre comment des ordinateurs et des algorithmes peuvent apprendre à faire des choses

on va partir d'un exemple très très simple.

Imaginons que vous soyez un botaniste

et que vous vous intéressiez à une certaine espèce d'arbre.

Vous vous promenez en forêt et vous faites des observations

et sur chaque arbre que vous croisez

vous relevez sa auteur et le diamètre de son tronc.

Puis vous consignez toutes vos observations dans un tableau de données.

Voilà le tableau, chaque ligne représente un arbre différent

dont vous avez mesuré le diamètre et la hauteur.

Une chose simple que l'on peut faire quand on a des données comme ça

c'est de les représenter graphiquement.

On met le diamètre en abscisse, la hauteur en ordonnée

et chaque point va représenter un arbre différent que vous avez mesuré.

Voilà ce qu'on obtient.

Vous avec vos yeux et votre cerveau d'être humain,

vous voyez qu'il y a un truc notable dans ces données.

Tous les points sont, en gros, à peu près alignés

et on a très envie de faire passer une droite.

Faire passer une droite comme ça c'est vraiment une bonne idée parce que ça nous permet de généraliser,

c'est-à-dire qu'on a un certain nombre d'observations sur des cas particuliers,

qui sont les arbres qu'on a mesurés,

et on en tire une relation générale qui est cette droite.

Et grâce à ce lien qu'on a découvert dans les données,

on va pouvoir faire de la prédiction.

La prédiction ça veut dire que si je prends un nouvel arbre

de la même espèce qu'on n'a pas encore mesuré

et que je vous donne son diamètre,

vous pouvez grâce à cette droite estimer sa hauteur.

Le terme de "prédiction" est peut être un peu mal choisi

parce qu'il ne s'agit pas de prédire l'avenir,

il s'agit plutôt de deviner une valeur qu'on ne possède pas.

Donc je résume la démarche : on prend des données qui sont des observations particulières,

on découvre un lien dans ces données

et ce lien nous permet de généraliser, de faire des prédictions.

Ici, on a tous les ingrédients de ce qu'est le machine learning.

Le machine learning, c'est essayer de faire la même chose avec des algorithmes.

En supposant qu'on prenne ces mêmes données et qu'on les donne à un ordinateur,

on peut très bien imaginer un algorithme qui va chercher comme nous

à faire passer une droite parmi les points.

Une droite est définie par deux choses : Une pente : a et une ordonnée à l'origine : b

Vous savez, c'est le classique : y = ax + b.

On peut imaginer un algorithme qui fasse varier a et b

jusqu'à trouver une droite qui colle bien au nuage des points.

Souvent l'image qu'on prend c'est d'imaginer que a et b, les paramètres de la droite,

c'est un peu comme deux boutons que l'algorithme peut faire tourner

jusqu'à trouver la meilleure droite possible.

Et une fois qu'on a fait ça, on ne touche plus à nos deux boutons et on a une droite

qui permet à l'algorithme de généraliser, d'extrapoler à des cas qu'il n'a jamais vu.

Il suffit d'utiliser l'équation de la droite.

Et voilà, le machine learning, en gros, c'est ça.

On a des données, ici sous la forme d'une entrée X et d'une sortie Y,

on les présente à un algorithme qui a des boutons et qui les tourne

jusqu'à ce qu'il ait compris le lien entre X et Y.

Ça, c'est tout ce qu'on appelle la phase d'apprentissage.

Et puis, une fois que c'est fait, on peut faire des prédictions

et ça, c'est le but ultime d'un algorithme de machine learning,

être capable de faire des prédictions, des extrapolations.

Evidemment, ici, j'ai pris un exemple super basique.

En entrée on n'a qu'un seul nombre X qui est le diamètre de l'arbre,

en sortie, un seul nombre Y qui est sa taille

et en plus le lien entre les deux est très simple, puisque c'est une simple droite.

Mais dans les vrais problèmes de machine learning,

on peut avoir des relations qui sont beaucoup plus compliquées

et surtout, on peut avoir beaucoup plus qu'une seule donnée en entrée.

Pour le voir, on va prendre quelques exemples d'applications du machine learning.

Vous avez certainement déjà remarqué que votre fil Facebook ne vous montre pas

toutes les nouvelles de vos amis ou des pages auxquelles vous êtes abonnés.

Il en choisit seulement certaines et il vous les présente dans un certain ordre.

Derrière, il y a un algorithme de machine learning qui essaie de comprendre

quelles sont les nouvelles qui ont le plus de chance de vous intéresser.

Cet algorithme prend en entrée tout un tas de caractéristiques de la nouvelle,

qui l'a postée ? quand ? de quoi elle parle ? sa nature, etc...

Et il essaie de prédire si ça va vous intéresser ou pas.

Un autre exemple d'utilisation du machine learning, c'est la détection de fraudes sur internet.

Chaque fois que vous utilisez votre carte de crédit sur internet,

il y a un algorithme quelque part qui tourne

pour essayer d'estimer si c'est bien vous ou si c'est une fraude.

Pour ça, il utilise des données d'entrée qui sont la nature de la transaction,

sa localisation, son montant et tout un tas d'autres données du même genre.

Encore un autre exemple d'utilisation du machine learning

dont on va particulièrement parler aujourd'hui, c'est la reconnaissance d'images.

La reconnaissance d'images, ça consiste à essayer de faire un algorithme

qui prend en donnée d'entrée une image,

et dont le but est d'essayer de deviner, en sortie, ce que représente l'image.

Vous voyez peut être sur ces quelques exemples que ma droite ax+b avec ses deux boutons

va être largement insuffisante.

Il nous faut quelque chose qui soit capable de prendre plein de données d'entrée

et surtout de capturer des relations bien plus complexes que ça entre les entrées et la sortie.

C'est là qu'interviennent les réseaux de neurones.

Un neurone c'est quelque chose qui va jouer le même rôle que ma droite tout à l'heure,

c'est à dire que c'est une fonction mathématique

qui va mettre en relation des entrées X avec une sortie Y.

Alors évidemment, c'est important de préciser que ce dont on parle là c'est un neurone artificiel,

c'est à dire que c'est une construction mathématique

qui imite grossièrement le fonctionnement d'un vrai neurone.

Les vrais neurones biologiques ce sont des cellules

qu'on trouve dans notre système nerveux et qui sont connectées les unes aux autres.

Chaque neurone possède une terminaison qu'on appelle un axone

et par laquelle le neurone peut envoyer un signal à d'autres neurones.

La manière dont fonctionne un neurone, est la suivante :

Le neurone reçoit, ou pas, un signal électrique des autres neurones qui sont connectés à lui

et en fonction de ces signaux, il fait un truc assez binaire.

Soit il n'envoie rien dans son axone,

soit il envoie un signal électrique, et là on dit qu'il "décharge".

L'idée du neurone artificiel qui date déjà d'il y a plusieurs décennies,

c'est de mimer ce comportement par une fonction mathématique.

Voilà le principe, imaginons qu'on ait un neurone artificiel avec trois entrées,

on va les appeler X1, X2 et X3.

On fait la somme de ces trois entrées

en affectant un coefficient à chacune, on appelle ça un poids.

Si la somme obtenue est supérieure à un certain seuil

le neurone va envoyer 1 en sortie, sinon il va envoyer 0.

Un neurone artificiel, vous voyez donc que c'est une fonction mathématique

qui prend des X en entrées et sort un Y en sortie

et cette fonction elle a des boutons qu'on peut tourner, qui sont les poids et le seuil.

Un peu de la même manière qu'on pouvait changer les coefficients a et b sur la droite.

Le problème, c'est qu'un neurone tout seul ne suffit pas pour faire des relations très compliquées.

Ce qui est intéressant c'est que les neurones on peut en associer plein ensemble

et les empiler pour faire des fonctions beaucoup plus compliquées

et c'est ça qu'on appelle des réseaux de neurones.

On devrait plutôt dire des réseaux de neurones artificiels.

En empilant des neurones comme ça on peut fabriquer des fonctions aussi compliquées qu'on veut

avec plein d'entrées et plein de sorties et surtout plein de boutons à tourner,

autant que de poids et de seuils dans le réseau.

Ces réseaux de neurones, l'avantage c'est qu'ils sont très polyvalents,

on peut les adapter à plein de types d'entrées ou de sorties

Mais, dans le fond, on les utilise de la même manière que ma droite, tout à l'heure.

On prend un réseau de neurones,

on lui présente une base de données d'exemples d'entrées et sorties

et on tourne tous ses boutons jusqu'à ce qu'il fasse correctement le lien entre les entrées et les sorties.

Je vous rappelle qu'on appelle ça la phase d'apprentissage.

Et, une fois qu'on a fait ça, notre réseau est entraîné

et il est capable de prédire la sortie si on lui présente une nouvelle entrée.

Ça, c'est la phase de prédiction.

Un des inconvénients des réseaux de neurones par rapport à ma droite de tout à l'heure,

c'est que c'est ce que l'on appelle parfois un modèle "boîte noire".

C'est à dire qu'une fois qu'on a trouvé toutes les bonnes positions des boutons,

on se retrouve avec une fonction qui mathématiquement est un peu compliquée

et c'est un peu difficile de l'interpréter.

Mais bon, en général tant que le réseau de neurones donne la bonne réponse on est content.

Et d'ailleurs il semblerait que l'apprentissage dans le cadre des réseaux de neurones artificiels

ressemble pas mal à ce qui se passe en réalité dans le cerveau.

Quand on apprend des choses, la force des connexions entre nos neurones se modifie,

c'est ce qu'on appelle l'efficacité synaptique

et ça peut se comparer à la manière dont on joue sur les poids dans notre réseau de neurones artificiels.

Encore une fois, le but des réseaux de neurones ce n'est pas de faire un modèle de notre cerveau,

c'est juste une construction mathématique qui s'en inspire.

Tout ça c'était pour la théorie, maintenant on va passer à la pratique.

On l'a dit, quand on veut faire un réseau de neurones, on empile plein de fois cette unité élémentaire qu'on appelle le neurone artificiel.

Une question : combien faut-t-il en mettre dans notre réseau ?

Si on s'inspire de notre cerveau, il y a à peu près 100 milliards de neurones

et comme il peut y avoir plusieurs milliers de synapses pour chaque neurone

ça ne nous met pas loin du million de milliards de connexions.

Très clairement, on ne va pas pouvoir faire ça avec un réseau de neurones artificiels.

Sans aller jusque là, dès qu'on met trop de neurones dans notre réseau,

ça fait beaucoup trop de boutons qu'on peut tourner,

et ça devient très difficile de trouver les bonnes positions des boutons.

Ça veut dire que la phase d'apprentissage devient quasiment impossible.

C'est pour ça qu'en pratique on se limite à une structure très simple avec seulement 3 couches de neurones.

Les neurones d'entrée, qui sont les X,

le ou les neurones de sorties, c'est le Y

et puis une couche intermédiaire de neurones.

Plus on met de neurones dans la couche intermédiaire, plus le réseau est polyvalent et puissant

mais plus il devient compliqué à entraîner, à trouver les bonnes positions des boutons

et si on essaie d'ajouter des couches de plus on se noie assez vite dans la complexité de la phase d'apprentissage.

Pour des problèmes avec un nombre raisonnable de données d'entrée,

comme par exemple de la détection de fraudes sur internet,

ce genre de méthode peut très bien marcher

mais pour faire de la reconnaissance d'images, c'est vite limité.

Si on prend une photo de petite taille : 400x400, ça fait tout de suite 160 000 pixels,

c'est à dire 160 000 nombres à filer en entrée au réseau.

et on se retrouve obligé d'utiliser un réseau extrêmement compliqué

qu'on n'arrivera pas à entraîner.

Donc, en somme, balancer une image brute dans un réseau de neurones ça ne marche pas.

Heureusement il existe une méthode pour s'en sortir, c'est celle de fabriquer

des caractéristiques intermédiaires de l'image.

Imaginons qu'on s'intéresse à un problème qui consiste à reconnaître des véhicules.

Vous voulez fabriquer un algorithme à qui on donne une image

et qui nous dit si cette image représente une voiture, un bus, un train, une moto, etc...

Nous en tant qu'être humain, il existe un certain nombre de caractéristiques

qui nous permettent de faire la différence.

On peut par exemple compter le nombre de roues apparentes,

regarder le rapport largeur hauteur, regarder quelle est la couleur dominante,

la quantité de surfaces vitrées, le nombre de vitres, leurs formes, etc...

La solution pour faire de la reconnaissance d'images dans ce genre de situation

c'est de créer un algorithme intermédiaire qui ne sera pas un réseau de neurones

et dont le but va être d'analyser les images et d'extraire toutes ces caractéristiques intéressantes.

Ce sont ensuite ces caractéristiques qu'on va donner à un réseau de neurones pour faire la reconnaissance.

Cette approche peut fonctionner parce que la quantité de données d'entrée qu'on va filer au réseau

va être bien inférieure à ce qu'on aurait si on avait filé l'image brute en entier.

Les caractéristiques qui résument l'image, il va y en avoir quelques dizaines, maximum quelques centaines

et comme on a résumé image en la réduisant à une liste de caractéristiques essentielles,

on dit parfois qu'on a fait une abstraction de l'image.

Tout ça c'est très bien, mais ça pose quand même un petit problème, c'est que

la qualité de la reconnaissance va fortement dépendre de la manière dont

on a fait ce travail intermédiaire de construction des caractéristiques essentielles de l'image

et pour faire correctement ce travail, il faut savoir de quoi on parle.

Dans mon exemple des véhicules, il faut savoir que ce qui est important

pour différencier un véhicule d'un autre, c'est le nombre de roue, les vitres, etc...

Donc il faut, entre guillemets, un expert du domaine.

C'est donc le concepteur de l'algorithme intermédiaire

qui fait, en quelque sorte, une bonne partie du travail d'intelligence

et c'est pour pallier à ça qu'intervient le deep learning.

On a vu comment fonctionnait le machine learning classique

et on a vu comment on pouvait l'utiliser pour faire de la reconnaissance d'images,

pourvu qu'on ait une étape précédente qui soit une étape de construction

des caractéristiques essentielles de l'image qu'on pourrait ensuite donner à un réseau de neurones.

L'idée un peu folle du deep learning c'est de sauter cette étape.

En gros, on va faire un gros réseau avec plein de couches de neurones

à qui on file l'image brute.

C'est ce qu'on appelle un réseau profond,

d'où l'appellation d'apprentissage profond, ou deep learning en anglais.

Je vous ai dit, a priori cette idée ne peut pas fonctionner,

ça fait beaucoup trop de neurones, ça fait beaucoup trop de boutons à tourner

et la phase d'apprentissage ne marche pas.

Et bien, il y a quand même des gens qui ont voulu essayer.

Un de ces pionniers, c'est un français qui s'appelle Yann Le Cun

et qui a commencé à utiliser ces méthodes dans les années 90.

A l'époque la communauté de l'intelligence artificielle n'était pas du tout convaincue

et préférait s'intéresser à d'autres trucs.

Pendant à peu près deux décennies il n'y a eu qu'une poignée de personnes dans le monde

qui ont continuer à essayer de faire du deep learning.

Sauf qu'en 2012 il y a eu une explosion.

Il faut savoir que tous les ans, il y a une compétition de reconnaissance d'images qui est organisée

où tous les meilleurs algorithmes du monde s'affrontent.

vous pouvez voir ici les pourcentages d'erreurs obtenus par les différents algorithmes de la compétition

en 2010 et en 2011

et plus ce pourcentage est faible, meilleur est l'algorithme.

Et bien en 2012, à la surprise générale, c'est un algorithme de deep learning

qui a largement battu tout le monde

et dès l'année suivante, tout le monde s'est mis à faire du deep learning dans cette compétition.

Evidemment, ce qui est intéressant c'est d'essayer de comprendre pourquoi,

soudainement, un algorithme de deep learning marche mieux que les méthodes habituelles,

alors que pendant 20 ans tout le monde avait pensé que ça ne marcherait jamais.

On l'a dit, dans les méthodes habituelles on a un algorithme qui extrait de l'image

les caractéristiques essentielles, qui résume l'image, qui en donne une abstraction

et ces caractéristiques, normalement, on les file à un réseau qui est peu profond.

Le petit miracle qui se produit avec le deep learning,

c'est que si on a réussi à entraîner le réseau correctement,

on se rend compte que les couches supérieures contiennent ces caractéristiques essentielles,

tous les éléments importants de l'image qui peuvent servir à la reconnaître.

C'est à dire que l'algorithme les a fabriqués lui même, il les a découverts

sans qu'on ait eu besoin de faire le travail pour lui.

Si on reprend l'exemple de la reconnaissance de véhicules,

ça veut dire qu'on n'aurait pas besoin de dire à l'algorithme ce que c'est qu'une roue

et le fait qu'une roue c'est important pour reconnaître un véhicule.

Non, l'algorithme en fait, découvrirait tout seul le concept de roue

et l'importance de la roue pour classifier les véhicules.

Je vous l'ai dit, suite au succès spectaculaire d'un algorithme de deep learning

dans la compétition de reconnaissance d'images de 2012,

tout le monde s'est mis à faire du deep learning

et Yann Le Cun qui était resté entre temps un petit peu dans l'ombre,

est soudainement devenu une des superstars de l'intelligence artificielle.

Evidemment tout le monde s'est mis à embaucher des spécialistes de deep learning,

Google, Amazon, Baidu, etc... et bien sûr Facebook

qui a embauché Le Cun comme directeur de son laboratoire d'intelligence artificielle.

Ce que je n'ai pas encore dit, c'est pourquoi cette méthode

à laquelle personne ne croyait il y a encore quelques années

s'est mise à marcher soudainement.

Et bien, comme souvent, il y a plusieurs raisons.

D'abord les algorithmes ont progressé, comme toujours,

notamment, contrairement à ce que je peux laisser penser, on n'utilise pas n'importe quel réseau profond,

ce n'est pas juste un tas de neurones empilés

et on a des architectures particulières qui fonctionnent bien.

Il y a aussi bien sûr une raison matérielle, c'est la puissance de calcul

et notamment les progrès des processeurs de cartes graphiques, les GPU,

qui sont plus puissants que les processeurs traditionnels quand il s'agit de faire des choses liées à l'image.

Mais la vraie raison du succès des algorithmes de deep learning notamment en reconnaissance d'images,

ça a été la disponibilité des données.

Je vous ai dit, quand on fait un réseau profond on peut se retrouver avec des milliers,

voire des millions de neurones

et donc ça peut faire des millions de boutons qu'il faut tourner

pendant la phase d'apprentissage jusqu'à trouver la bonne relation.

Pour faire ça, il faut des millions d'exemples à montrer au réseau.

En 2009 un laboratoire de Stanford a rendu public une base de données qui s'appelle ImageNet

et qui contient aujourd'hui plus de 15 millions d'images classifiées,

c'est à dire qu'on a des images et en face de chaque image, on a une description de ce que c'est,

c'est à dire, une voiture, un chien, une vague, etc...

Il y a plus de 10000 catégories différentes alors vous pouvez faire le test

et vous pouvez chercher dans ImageNet par exemple, les images qui représentent un chat

et je crois qu'il y en a plusieurs dizaines de milliers.

Donc quand on balance toutes ces images à un algorithme de deep learning

on n'a pas besoin de lui dire quelles sont les caractéristiques essentielles

qui font qu'un chat est un chat.

La forme de la tête, la couleur des yeux, la taille des oreilles, etc...

L'algorithme va les découvrir tout seul.

A l'heure actuelle on peut faire des réseaux profonds qui ont plus d'une centaine de couches

et plusieurs millions de neurones.

On est encore très très loin du cerveau

mais les performances en reconnaissance d'images sont quand même assez spectaculaires.

Vous pouvez voir quelques exemples ici...

Quand on sait que chaque jour sur Facebook c'est près de 800 millions d'images qui sont uploadées,

on comprend bien leur intérêt pour avoir un algorithme qui soit capable de reconnaître rapidement

ce qu'il y a dans une photo.

Alors c'est vrai que des fois, ça rate...

Heureusement, il y a d'autres applications du deep learning que celle d'analyser

les détails graphiques de notre vie privée qu'on partage sur les réseaux sociaux.

Par exemple, il existe des algorithmes qui sont capables d'analyser des scènes sur une image

et de les décrire automatiquement par une phrase.

Ça peut être plutôt utile pour les malvoyants.

Une autre application, c'est la conduite autonome,

vous savez, la voiture qui se conduit toute seule et dont on parle beaucoup en ce moment.

Pour reprendre un exemple qui est donné par Fei Fei Li, qui est une des pionnières de ImageNet,

c'est quand même vachement important pour une voiture autonome

d'être capable de reconnaître un sac en papier qui est froissé sur la route et sur lequel elle pourrait rouler,

d'un rocher qui est posé au milieu de la route et qu'il vaudrait peut-être mieux éviter.

Mais une des applications que je trouve les plus intéressantes du deep learning,

c'est la capacité à fabriquer des images.

Je vous ai dit tout à l'heure, un algorithme de deep learning, un réseau profond,

si vous lui donnez une image brute en entrée,

il va découvrir tout seul comment résumer cette image brute par une série de caractéristiques essentielles.

Là je simplifie beaucoup mais, en gros, on peut essayer de prendre le réseau dans l'autre sens

et de faire en sorte que, si on lui donne en entrée une série de nombres,

il produise une image en sortie

et cette image sera nouvelle, elle sera unique et aura les caractéristiques correspondantes à ce qu'on a entré,

mais ce sera une image inventée de toutes pièces.

Les algorithmes qui sont capables de faire ça, c'est ce qu'on appelle des modèles génératifs.

Par exemple ici, vous voyez un exemple récent qui est assez spectaculaire,

on a utilisé un modèle génératif créé par un algorithme de deep learning

pour créer des chambres à coucher.

Vous avez toute une série de chambres à coucher qui ont été inventées par un algorithme

et ça marche aussi avec des chaises ou avec des personnages de manga.

Mon exemple préféré, c'est celui-ci:

il s'agit de pochettes d'albums qui ont été complètement inventées par un algorithme de deep learning

qui auparavant avait étudié des vraies pochettes d'albums.

L'exemple le plus médiatique, même si ce n'est pas forcément le plus utile,

c'est celui dont j'ai parlé au début, c'est Google DeepDream.

Il s'agit d'un réseau qu'on a entrainé sur tout un tas d'images

et qu'ensuite on a utilisé pour produire des images un peu psychédéliques.

Le principe est un peu le même que quand on s'amuse à essayer de trouver des formes dans les nuages,

vous savez, quand on joue à regarder les nuages,

en gros on peut essayer de se forcer à y voir d'autres trucs que des nuages.

Ici on a donné des images à un réseau profond et on l'a forcé à essayer d'y voir autre chose

et voilà le résultat. C'est sympa non?

Encore une fois, il s'agit d'un exemple un peu anecdotique mais j'espère quand même

vous avoir convaincus qu'il y a plein d'applications fantastiques pour le deep learning

et je suis sûr que d'ici quelques années on trouvera ce genre d'algorithme partout.

Merci d'avoir suivi cette vidéo, si vous voulez aller plus loin je vous en conseille deux autres.

La première c'est celle de Fei Fei Li qui est une des créatrices de ImageNet,

qui à la conférence TED a présenté le problème de la reconnaissance d'images

et ce qu'on peut faire aujourd'hui, c'est assez rapide.

Si vous voulez aller quand même beaucoup plus loin,

vous pouvez aller voir la leçon inaugurale de Yann Le Cun au Collège de France,

ça dure plus longtemps et il va beaucoup plus dans les détails.

Comme d'habitude vous pouvez me retrouver sur les réseaux sociaux, Facebook, Tweeter.

Vous pouvez me soutenir sur Tipeee, merci à tous les tipeurs qui me soutiennent.

Vous pouvez aussi aller jeter un œil à mon bouquin que j'ai sorti chez Flammarion

et pour ceux qui sont intéressés à me rencontrer en vrai,

je serai le 16 Avril à Vulgarizators à Lyon,

donc n'hésitez pas à aller voir et n'hésitez pas à venir assister à toutes les conférences.

Merci et à bientôt!

(#31) Le deep learning - YouTube (#31) Deep Learning - YouTube (#31) Deep learning - YouTube (#31) Aprendizaje profundo - YouTube (#31) Apprendimento profondo - YouTube (#31) Diep leren - YouTube (#31) Uczenie głębokie - YouTube (#31) Aprendizagem profunda - YouTube (#31) Глубокое обучение - YouTube (#31) 深度学习 - YouTube (#31) 深度學習 - YouTube

Bonjour à tous ! Aujourd'hui on va parler du deep learning.

Le deep learning c'est un domaine de l'intelligence artificielle Deep learning is a field of artificial intelligence

qui a littéralement explosé ces dernières années. which has literally exploded in recent years.

Vous en avez déjà peut être entendu parler si vous avez vu ma vidéo sur le Go, You may already have heard of it if you've seen my video on the Go,

ou bien si vous avez vu, il y a quelques mois, ces images un peu psychédéliques qui ont été publiées par Google or if, a few months ago, you saw these psychedelic images published by Google

et qui représentaient soit-disant un algorithme de deep learning en train de rêver. which supposedly represented a deep learning algorithm in the act of dreaming.

Alors aujourd'hui on va voir ce que c'est que le deep learning So today we're going to take a look at deep learning

et comment ça se positionne par rapport aux autres champs de l'intelligence artificielle. and how it fits in with other fields of artificial intelligence.

L'intelligence artificielle on en parle depuis plus de 50 ans maintenant Artificial intelligence has been talked about for over 50 years now.

et l'histoire du domaine est un peu tumultueuse. and the history of the estate is a bit tumultuous.

Ça a commencé par une période de grand enthousiasme It began with a period of great enthusiasm

où on s'imaginait qu'on arriverait très vite à faire des choses assez incroyables. where we imagined we'd be able to do some pretty amazing things very quickly.

Puis ça a été suivi par une période un peu plus sombre de désillusion This was followed by a darker period of disillusionment.

où on a finalement constaté qu'on avait un peu sous-estimé les difficultés. where we finally realized that we had somewhat underestimated the difficulties.

Je ne vais pas vous refaire l'histoire du domaine I won't go through the history of the estate again.

mais ce qu'il faut savoir, c'est que dans les années 90, après cette période de désillusion, but what you need to know is that in the 90s, after this period of disillusionment,

Il y a eu une renaissance de l'intelligence artificielle, There has been a renaissance in artificial intelligence,

sous la forme de ce que l'on appelle le machine learning, in the form of so-called machine learning,

ou "l'apprentissage automatique" en bon français. or "automatic learning" in French.

Le machine learning c'est un domaine qui étudie

comment des algorithmes peuvent apprendre en étudiant des exemples how algorithms can learn by studying examples

et on va voir exactement ce que ça veut dire. and we'll see exactly what that means.

Le deep learning dans tout ça, ou "l'apprentissage profond" The deep learning aspect of all this

c'est juste une manière particulière de faire du machine learning it's just a particular way of doing machine learning

et je vais vous expliquer en quoi elle est originale and I'll tell you why it's original.

et pourquoi elle a explosé ces derniers temps. and why it has exploded in recent times.

Pour comprendre comment des ordinateurs et des algorithmes peuvent apprendre à faire des choses To understand how computers and algorithms can learn to do things

on va partir d'un exemple très très simple. we'll start with a very simple example.

Imaginons que vous soyez un botaniste Let's say you're a botanist

et que vous vous intéressiez à une certaine espèce d'arbre. and you're interested in a certain kind of tree.

Vous vous promenez en forêt et vous faites des observations

et sur chaque arbre que vous croisez and on every tree you come across

vous relevez sa auteur et le diamètre de son tronc. |||author|||||| you note its height and the diameter of its trunk.

Puis vous consignez toutes vos observations dans un tableau de données. Then you record all your observations in a data table.

Voilà le tableau, chaque ligne représente un arbre différent Here is the table, each line representing a different tree

dont vous avez mesuré le diamètre et la hauteur.

Une chose simple que l'on peut faire quand on a des données comme ça A simple thing to do when you have data like this

c'est de les représenter graphiquement. is to represent them graphically.

On met le diamètre en abscisse, la hauteur en ordonnée Put the diameter on the x-axis and the height on the y-axis.

et chaque point va représenter un arbre différent que vous avez mesuré. and each point will represent a different tree you've measured.

Voilà ce qu'on obtient. That's what you get.

Vous avec vos yeux et votre cerveau d'être humain, You with your human eyes and brain,

vous voyez qu'il y a un truc notable dans ces données. you can see that there's something noticeable in this data.

Tous les points sont, en gros, à peu près alignés All points are roughly aligned

et on a très envie de faire passer une droite. and we're very keen to pass on a right.

Faire passer une droite comme ça c'est vraiment une bonne idée parce que ça nous permet de généraliser, Passing a straight line like this is a really good idea because it allows us to generalize,

c'est-à-dire qu'on a un certain nombre d'observations sur des cas particuliers, i.e. we have a certain number of observations on particular cases,

qui sont les arbres qu'on a mesurés, which are the trees we've measured,

et on en tire une relation générale qui est cette droite. and we derive a general relationship which is this line.

Et grâce à ce lien qu'on a découvert dans les données, And thanks to this link we discovered in the data,

on va pouvoir faire de la prédiction.

La prédiction ça veut dire que si je prends un nouvel arbre Prediction means that if I take a new tree

de la même espèce qu'on n'a pas encore mesuré of the same species that has not yet been measured

et que je vous donne son diamètre, and give you its diameter,

vous pouvez grâce à cette droite estimer sa hauteur. you can use this straight line to estimate its height.

Le terme de "prédiction" est peut être un peu mal choisi The term "prediction" may be a bit of a misnomer

parce qu'il ne s'agit pas de prédire l'avenir, because it's not about predicting the future,

il s'agit plutôt de deviner une valeur qu'on ne possède pas. it's more a question of guessing a value that you don't possess.

Donc je résume la démarche : on prend des données qui sont des observations particulières, So I'll summarize the process: we take data that are specific observations,

on découvre un lien dans ces données we discover a link in the data

et ce lien nous permet de généraliser, de faire des prédictions.

Ici, on a tous les ingrédients de ce qu'est le machine learning. Here we have all the ingredients of machine learning.

Le machine learning, c'est essayer de faire la même chose avec des algorithmes.

En supposant qu'on prenne ces mêmes données et qu'on les donne à un ordinateur, Assuming we take this same data and give it to a computer,

on peut très bien imaginer un algorithme qui va chercher comme nous it's easy to imagine an algorithm that searches like we do

à faire passer une droite parmi les points. to pass a straight line through the points.

Une droite est définie par deux choses : Une pente : a et une ordonnée à l'origine : b A straight line is defined by two things: a slope (a) and a y-intercept (b).

Vous savez, c'est le classique : y = ax + b.

On peut imaginer un algorithme qui fasse varier a et b We can imagine an algorithm that varies a and b

jusqu'à trouver une droite qui colle bien au nuage des points. until you find a straight line that fits the point cloud.

Souvent l'image qu'on prend c'est d'imaginer que a et b, les paramètres de la droite, We often imagine that a and b are the parameters of the line,

c'est un peu comme deux boutons que l'algorithme peut faire tourner it's like two buttons that the algorithm can turn

jusqu'à trouver la meilleure droite possible.

Et une fois qu'on a fait ça, on ne touche plus à nos deux boutons et on a une droite And once we've done that, we don't touch our two buttons anymore and we have a straight

qui permet à l'algorithme de généraliser, d'extrapoler à des cas qu'il n'a jamais vu. ||||||to extrapolate||||||| which allows the algorithm to generalize, to extrapolate to cases it has never seen before.

Il suffit d'utiliser l'équation de la droite. Simply use the equation of the line.

Et voilà, le machine learning, en gros, c'est ça. So that's what machine learning is all about.

On a des données, ici sous la forme d'une entrée X et d'une sortie Y, We have data, here in the form of an input X and an output Y,

on les présente à un algorithme qui a des boutons et qui les tourne we present them to an algorithm that has buttons and turns them

jusqu'à ce qu'il ait compris le lien entre X et Y. until he understands the link between X and Y.

Ça, c'est tout ce qu'on appelle la phase d'apprentissage. This is what we call the learning phase.

Et puis, une fois que c'est fait, on peut faire des prédictions

et ça, c'est le but ultime d'un algorithme de machine learning, and that's the ultimate goal of a machine learning algorithm,

être capable de faire des prédictions, des extrapolations. be able to make predictions and extrapolations.

Evidemment, ici, j'ai pris un exemple super basique.

En entrée on n'a qu'un seul nombre X qui est le diamètre de l'arbre,

en sortie, un seul nombre Y qui est sa taille

et en plus le lien entre les deux est très simple, puisque c'est une simple droite.

Mais dans les vrais problèmes de machine learning,

on peut avoir des relations qui sont beaucoup plus compliquées

et surtout, on peut avoir beaucoup plus qu'une seule donnée en entrée.

Pour le voir, on va prendre quelques exemples d'applications du machine learning.

Vous avez certainement déjà remarqué que votre fil Facebook ne vous montre pas

toutes les nouvelles de vos amis ou des pages auxquelles vous êtes abonnés.

Il en choisit seulement certaines et il vous les présente dans un certain ordre.

Derrière, il y a un algorithme de machine learning qui essaie de comprendre

quelles sont les nouvelles qui ont le plus de chance de vous intéresser.

Cet algorithme prend en entrée tout un tas de caractéristiques de la nouvelle,

qui l'a postée ? quand ? de quoi elle parle ? sa nature, etc...

Et il essaie de prédire si ça va vous intéresser ou pas.

Un autre exemple d'utilisation du machine learning, c'est la détection de fraudes sur internet.

Chaque fois que vous utilisez votre carte de crédit sur internet,

il y a un algorithme quelque part qui tourne

pour essayer d'estimer si c'est bien vous ou si c'est une fraude.

Pour ça, il utilise des données d'entrée qui sont la nature de la transaction,

sa localisation, son montant et tout un tas d'autres données du même genre. |||amount|||||||||

Encore un autre exemple d'utilisation du machine learning

dont on va particulièrement parler aujourd'hui, c'est la reconnaissance d'images.

La reconnaissance d'images, ça consiste à essayer de faire un algorithme

qui prend en donnée d'entrée une image,

et dont le but est d'essayer de deviner, en sortie, ce que représente l'image.

Vous voyez peut être sur ces quelques exemples que ma droite ax+b avec ses deux boutons

va être largement insuffisante.

Il nous faut quelque chose qui soit capable de prendre plein de données d'entrée

et surtout de capturer des relations bien plus complexes que ça entre les entrées et la sortie.

C'est là qu'interviennent les réseaux de neurones.

Un neurone c'est quelque chose qui va jouer le même rôle que ma droite tout à l'heure,

c'est à dire que c'est une fonction mathématique

qui va mettre en relation des entrées X avec une sortie Y.

Alors évidemment, c'est important de préciser que ce dont on parle là c'est un neurone artificiel,

c'est à dire que c'est une construction mathématique

qui imite grossièrement le fonctionnement d'un vrai neurone.

Les vrais neurones biologiques ce sont des cellules

qu'on trouve dans notre système nerveux et qui sont connectées les unes aux autres.

Chaque neurone possède une terminaison qu'on appelle un axone

et par laquelle le neurone peut envoyer un signal à d'autres neurones.

La manière dont fonctionne un neurone, est la suivante :

Le neurone reçoit, ou pas, un signal électrique des autres neurones qui sont connectés à lui

et en fonction de ces signaux, il fait un truc assez binaire.

Soit il n'envoie rien dans son axone,

soit il envoie un signal électrique, et là on dit qu'il "décharge".

L'idée du neurone artificiel qui date déjà d'il y a plusieurs décennies,

c'est de mimer ce comportement par une fonction mathématique.

Voilà le principe, imaginons qu'on ait un neurone artificiel avec trois entrées,

on va les appeler X1, X2 et X3.

On fait la somme de ces trois entrées

en affectant un coefficient à chacune, on appelle ça un poids.

Si la somme obtenue est supérieure à un certain seuil

le neurone va envoyer 1 en sortie, sinon il va envoyer 0.

Un neurone artificiel, vous voyez donc que c'est une fonction mathématique

qui prend des X en entrées et sort un Y en sortie

et cette fonction elle a des boutons qu'on peut tourner, qui sont les poids et le seuil.

Un peu de la même manière qu'on pouvait changer les coefficients a et b sur la droite.

Le problème, c'est qu'un neurone tout seul ne suffit pas pour faire des relations très compliquées.

Ce qui est intéressant c'est que les neurones on peut en associer plein ensemble

et les empiler pour faire des fonctions beaucoup plus compliquées

et c'est ça qu'on appelle des réseaux de neurones.

On devrait plutôt dire des réseaux de neurones artificiels.

En empilant des neurones comme ça on peut fabriquer des fonctions aussi compliquées qu'on veut

avec plein d'entrées et plein de sorties et surtout plein de boutons à tourner,

autant que de poids et de seuils dans le réseau.

Ces réseaux de neurones, l'avantage c'est qu'ils sont très polyvalents,

on peut les adapter à plein de types d'entrées ou de sorties

Mais, dans le fond, on les utilise de la même manière que ma droite, tout à l'heure. But, basically, they are used in the same way as my right, just now.

On prend un réseau de neurones,

on lui présente une base de données d'exemples d'entrées et sorties

et on tourne tous ses boutons jusqu'à ce qu'il fasse correctement le lien entre les entrées et les sorties.

Je vous rappelle qu'on appelle ça la phase d'apprentissage.

Et, une fois qu'on a fait ça, notre réseau est entraîné

et il est capable de prédire la sortie si on lui présente une nouvelle entrée.

Ça, c'est la phase de prédiction.

Un des inconvénients des réseaux de neurones par rapport à ma droite de tout à l'heure,

c'est que c'est ce que l'on appelle parfois un modèle "boîte noire".

C'est à dire qu'une fois qu'on a trouvé toutes les bonnes positions des boutons,

on se retrouve avec une fonction qui mathématiquement est un peu compliquée

et c'est un peu difficile de l'interpréter.

Mais bon, en général tant que le réseau de neurones donne la bonne réponse on est content.

Et d'ailleurs il semblerait que l'apprentissage dans le cadre des réseaux de neurones artificiels

ressemble pas mal à ce qui se passe en réalité dans le cerveau.

Quand on apprend des choses, la force des connexions entre nos neurones se modifie,

c'est ce qu'on appelle l'efficacité synaptique

et ça peut se comparer à la manière dont on joue sur les poids dans notre réseau de neurones artificiels.

Encore une fois, le but des réseaux de neurones ce n'est pas de faire un modèle de notre cerveau,

c'est juste une construction mathématique qui s'en inspire.

Tout ça c'était pour la théorie, maintenant on va passer à la pratique.

On l'a dit, quand on veut faire un réseau de neurones, on empile plein de fois cette unité élémentaire qu'on appelle le neurone artificiel.

Une question : combien faut-t-il en mettre dans notre réseau ?

Si on s'inspire de notre cerveau, il y a à peu près 100 milliards de neurones

et comme il peut y avoir plusieurs milliers de synapses pour chaque neurone

ça ne nous met pas loin du million de milliards de connexions.

Très clairement, on ne va pas pouvoir faire ça avec un réseau de neurones artificiels.

Sans aller jusque là, dès qu'on met trop de neurones dans notre réseau,

ça fait beaucoup trop de boutons qu'on peut tourner, That's way too many knobs to turn,

et ça devient très difficile de trouver les bonnes positions des boutons.

Ça veut dire que la phase d'apprentissage devient quasiment impossible.

C'est pour ça qu'en pratique on se limite à une structure très simple avec seulement 3 couches de neurones. This is why in practice we limit ourselves to a very simple structure with only 3 layers of neurons.

Les neurones d'entrée, qui sont les X,

le ou les neurones de sorties, c'est le Y

et puis une couche intermédiaire de neurones.

Plus on met de neurones dans la couche intermédiaire, plus le réseau est polyvalent et puissant

mais plus il devient compliqué à entraîner, à trouver les bonnes positions des boutons

et si on essaie d'ajouter des couches de plus on se noie assez vite dans la complexité de la phase d'apprentissage.

Pour des problèmes avec un nombre raisonnable de données d'entrée,

comme par exemple de la détection de fraudes sur internet,

ce genre de méthode peut très bien marcher

mais pour faire de la reconnaissance d'images, c'est vite limité.

Si on prend une photo de petite taille : 400x400, ça fait tout de suite 160 000 pixels,

c'est à dire 160 000 nombres à filer en entrée au réseau.

et on se retrouve obligé d'utiliser un réseau extrêmement compliqué

qu'on n'arrivera pas à entraîner.

Donc, en somme, balancer une image brute dans un réseau de neurones ça ne marche pas.

Heureusement il existe une méthode pour s'en sortir, c'est celle de fabriquer

des caractéristiques intermédiaires de l'image.

Imaginons qu'on s'intéresse à un problème qui consiste à reconnaître des véhicules.

Vous voulez fabriquer un algorithme à qui on donne une image

et qui nous dit si cette image représente une voiture, un bus, un train, une moto, etc...

Nous en tant qu'être humain, il existe un certain nombre de caractéristiques

qui nous permettent de faire la différence.

On peut par exemple compter le nombre de roues apparentes,

regarder le rapport largeur hauteur, regarder quelle est la couleur dominante,

la quantité de surfaces vitrées, le nombre de vitres, leurs formes, etc...

La solution pour faire de la reconnaissance d'images dans ce genre de situation

c'est de créer un algorithme intermédiaire qui ne sera pas un réseau de neurones

et dont le but va être d'analyser les images et d'extraire toutes ces caractéristiques intéressantes.

Ce sont ensuite ces caractéristiques qu'on va donner à un réseau de neurones pour faire la reconnaissance.

Cette approche peut fonctionner parce que la quantité de données d'entrée qu'on va filer au réseau

va être bien inférieure à ce qu'on aurait si on avait filé l'image brute en entier.

Les caractéristiques qui résument l'image, il va y en avoir quelques dizaines, maximum quelques centaines

et comme on a résumé image en la réduisant à une liste de caractéristiques essentielles,

on dit parfois qu'on a fait une abstraction de l'image.

Tout ça c'est très bien, mais ça pose quand même un petit problème, c'est que

la qualité de la reconnaissance va fortement dépendre de la manière dont

on a fait ce travail intermédiaire de construction des caractéristiques essentielles de l'image

et pour faire correctement ce travail, il faut savoir de quoi on parle.

Dans mon exemple des véhicules, il faut savoir que ce qui est important

pour différencier un véhicule d'un autre, c'est le nombre de roue, les vitres, etc...

Donc il faut, entre guillemets, un expert du domaine.

C'est donc le concepteur de l'algorithme intermédiaire

qui fait, en quelque sorte, une bonne partie du travail d'intelligence

et c'est pour pallier à ça qu'intervient le deep learning. and that's where deep learning comes in.

On a vu comment fonctionnait le machine learning classique

et on a vu comment on pouvait l'utiliser pour faire de la reconnaissance d'images,

pourvu qu'on ait une étape précédente qui soit une étape de construction

des caractéristiques essentielles de l'image qu'on pourrait ensuite donner à un réseau de neurones.

L'idée un peu folle du deep learning c'est de sauter cette étape.

En gros, on va faire un gros réseau avec plein de couches de neurones

à qui on file l'image brute.

C'est ce qu'on appelle un réseau profond,

d'où l'appellation d'apprentissage profond, ou deep learning en anglais.

Je vous ai dit, a priori cette idée ne peut pas fonctionner,

ça fait beaucoup trop de neurones, ça fait beaucoup trop de boutons à tourner

et la phase d'apprentissage ne marche pas.

Et bien, il y a quand même des gens qui ont voulu essayer.

Un de ces pionniers, c'est un français qui s'appelle Yann Le Cun

et qui a commencé à utiliser ces méthodes dans les années 90.

A l'époque la communauté de l'intelligence artificielle n'était pas du tout convaincue

et préférait s'intéresser à d'autres trucs.

Pendant à peu près deux décennies il n'y a eu qu'une poignée de personnes dans le monde

qui ont continuer à essayer de faire du deep learning.

Sauf qu'en 2012 il y a eu une explosion.

Il faut savoir que tous les ans, il y a une compétition de reconnaissance d'images qui est organisée

où tous les meilleurs algorithmes du monde s'affrontent.

vous pouvez voir ici les pourcentages d'erreurs obtenus par les différents algorithmes de la compétition

en 2010 et en 2011

et plus ce pourcentage est faible, meilleur est l'algorithme.

Et bien en 2012, à la surprise générale, c'est un algorithme de deep learning

qui a largement battu tout le monde

et dès l'année suivante, tout le monde s'est mis à faire du deep learning dans cette compétition.

Evidemment, ce qui est intéressant c'est d'essayer de comprendre pourquoi,

soudainement, un algorithme de deep learning marche mieux que les méthodes habituelles,

alors que pendant 20 ans tout le monde avait pensé que ça ne marcherait jamais.

On l'a dit, dans les méthodes habituelles on a un algorithme qui extrait de l'image

les caractéristiques essentielles, qui résume l'image, qui en donne une abstraction

et ces caractéristiques, normalement, on les file à un réseau qui est peu profond.

Le petit miracle qui se produit avec le deep learning,

c'est que si on a réussi à entraîner le réseau correctement,

on se rend compte que les couches supérieures contiennent ces caractéristiques essentielles,

tous les éléments importants de l'image qui peuvent servir à la reconnaître.

C'est à dire que l'algorithme les a fabriqués lui même, il les a découverts

sans qu'on ait eu besoin de faire le travail pour lui.

Si on reprend l'exemple de la reconnaissance de véhicules,

ça veut dire qu'on n'aurait pas besoin de dire à l'algorithme ce que c'est qu'une roue

et le fait qu'une roue c'est important pour reconnaître un véhicule.

Non, l'algorithme en fait, découvrirait tout seul le concept de roue

et l'importance de la roue pour classifier les véhicules.

Je vous l'ai dit, suite au succès spectaculaire d'un algorithme de deep learning

dans la compétition de reconnaissance d'images de 2012,

tout le monde s'est mis à faire du deep learning

et Yann Le Cun qui était resté entre temps un petit peu dans l'ombre,

est soudainement devenu une des superstars de l'intelligence artificielle.

Evidemment tout le monde s'est mis à embaucher des spécialistes de deep learning, ||||||||||||learning

Google, Amazon, Baidu, etc... et bien sûr Facebook

qui a embauché Le Cun comme directeur de son laboratoire d'intelligence artificielle.

Ce que je n'ai pas encore dit, c'est pourquoi cette méthode

à laquelle personne ne croyait il y a encore quelques années

s'est mise à marcher soudainement.

Et bien, comme souvent, il y a plusieurs raisons.

D'abord les algorithmes ont progressé, comme toujours,

notamment, contrairement à ce que je peux laisser penser, on n'utilise pas n'importe quel réseau profond, In particular, contrary to what I might suggest, we don't use just any deep network,

ce n'est pas juste un tas de neurones empilés it's not just a bunch of neurons stacked together

et on a des architectures particulières qui fonctionnent bien.

Il y a aussi bien sûr une raison matérielle, c'est la puissance de calcul

et notamment les progrès des processeurs de cartes graphiques, les GPU,

qui sont plus puissants que les processeurs traditionnels quand il s'agit de faire des choses liées à l'image.

Mais la vraie raison du succès des algorithmes de deep learning notamment en reconnaissance d'images,

ça a été la disponibilité des données.

Je vous ai dit, quand on fait un réseau profond on peut se retrouver avec des milliers,

voire des millions de neurones

et donc ça peut faire des millions de boutons qu'il faut tourner

pendant la phase d'apprentissage jusqu'à trouver la bonne relation.

Pour faire ça, il faut des millions d'exemples à montrer au réseau.

En 2009 un laboratoire de Stanford a rendu public une base de données qui s'appelle ImageNet

et qui contient aujourd'hui plus de 15 millions d'images classifiées,

c'est à dire qu'on a des images et en face de chaque image, on a une description de ce que c'est,

c'est à dire, une voiture, un chien, une vague, etc...

Il y a plus de 10000 catégories différentes alors vous pouvez faire le test

et vous pouvez chercher dans ImageNet par exemple, les images qui représentent un chat

et je crois qu'il y en a plusieurs dizaines de milliers.

Donc quand on balance toutes ces images à un algorithme de deep learning

on n'a pas besoin de lui dire quelles sont les caractéristiques essentielles

qui font qu'un chat est un chat.

La forme de la tête, la couleur des yeux, la taille des oreilles, etc...

L'algorithme va les découvrir tout seul.

A l'heure actuelle on peut faire des réseaux profonds qui ont plus d'une centaine de couches

et plusieurs millions de neurones.

On est encore très très loin du cerveau

mais les performances en reconnaissance d'images sont quand même assez spectaculaires.

Vous pouvez voir quelques exemples ici...

Quand on sait que chaque jour sur Facebook c'est près de 800 millions d'images qui sont uploadées,

on comprend bien leur intérêt pour avoir un algorithme qui soit capable de reconnaître rapidement

ce qu'il y a dans une photo.

Alors c'est vrai que des fois, ça rate...

Heureusement, il y a d'autres applications du deep learning que celle d'analyser

les détails graphiques de notre vie privée qu'on partage sur les réseaux sociaux.

Par exemple, il existe des algorithmes qui sont capables d'analyser des scènes sur une image

et de les décrire automatiquement par une phrase.

Ça peut être plutôt utile pour les malvoyants.

Une autre application, c'est la conduite autonome,

vous savez, la voiture qui se conduit toute seule et dont on parle beaucoup en ce moment.

Pour reprendre un exemple qui est donné par Fei Fei Li, qui est une des pionnières de ImageNet,

c'est quand même vachement important pour une voiture autonome

d'être capable de reconnaître un sac en papier qui est froissé sur la route et sur lequel elle pourrait rouler,

d'un rocher qui est posé au milieu de la route et qu'il vaudrait peut-être mieux éviter.

Mais une des applications que je trouve les plus intéressantes du deep learning,

c'est la capacité à fabriquer des images.

Je vous ai dit tout à l'heure, un algorithme de deep learning, un réseau profond,

si vous lui donnez une image brute en entrée,

il va découvrir tout seul comment résumer cette image brute par une série de caractéristiques essentielles.

Là je simplifie beaucoup mais, en gros, on peut essayer de prendre le réseau dans l'autre sens

et de faire en sorte que, si on lui donne en entrée une série de nombres,

il produise une image en sortie

et cette image sera nouvelle, elle sera unique et aura les caractéristiques correspondantes à ce qu'on a entré,

mais ce sera une image inventée de toutes pièces.

Les algorithmes qui sont capables de faire ça, c'est ce qu'on appelle des modèles génératifs.

Par exemple ici, vous voyez un exemple récent qui est assez spectaculaire,

on a utilisé un modèle génératif créé par un algorithme de deep learning

pour créer des chambres à coucher.

Vous avez toute une série de chambres à coucher qui ont été inventées par un algorithme

et ça marche aussi avec des chaises ou avec des personnages de manga.

Mon exemple préféré, c'est celui-ci:

il s'agit de pochettes d'albums qui ont été complètement inventées par un algorithme de deep learning

qui auparavant avait étudié des vraies pochettes d'albums.

L'exemple le plus médiatique, même si ce n'est pas forcément le plus utile,

c'est celui dont j'ai parlé au début, c'est Google DeepDream.

Il s'agit d'un réseau qu'on a entrainé sur tout un tas d'images

et qu'ensuite on a utilisé pour produire des images un peu psychédéliques.

Le principe est un peu le même que quand on s'amuse à essayer de trouver des formes dans les nuages,

vous savez, quand on joue à regarder les nuages,

en gros on peut essayer de se forcer à y voir d'autres trucs que des nuages.

Ici on a donné des images à un réseau profond et on l'a forcé à essayer d'y voir autre chose

et voilà le résultat. C'est sympa non?

Encore une fois, il s'agit d'un exemple un peu anecdotique mais j'espère quand même

vous avoir convaincus qu'il y a plein d'applications fantastiques pour le deep learning

et je suis sûr que d'ici quelques années on trouvera ce genre d'algorithme partout.

Merci d'avoir suivi cette vidéo, si vous voulez aller plus loin je vous en conseille deux autres.

La première c'est celle de Fei Fei Li qui est une des créatrices de ImageNet,

qui à la conférence TED a présenté le problème de la reconnaissance d'images

et ce qu'on peut faire aujourd'hui, c'est assez rapide.

Si vous voulez aller quand même beaucoup plus loin,

vous pouvez aller voir la leçon inaugurale de Yann Le Cun au Collège de France,

ça dure plus longtemps et il va beaucoup plus dans les détails.

Comme d'habitude vous pouvez me retrouver sur les réseaux sociaux, Facebook, Tweeter.

Vous pouvez me soutenir sur Tipeee, merci à tous les tipeurs qui me soutiennent.

Vous pouvez aussi aller jeter un œil à mon bouquin que j'ai sorti chez Flammarion

et pour ceux qui sont intéressés à me rencontrer en vrai,

je serai le 16 Avril à Vulgarizators à Lyon, |||||Vulgarizators||

donc n'hésitez pas à aller voir et n'hésitez pas à venir assister à toutes les conférences.

Merci et à bientôt!