Le Deep-Learning Démystifié

Florent D'halluin         @flal  

Pourquoi ce talk ?

Deep Learning Partout

Mais aussi ...

  • Médical : détection de tumeurs
  • Advertising : ciblage, real-time bidding
  • Génération de description automatique (images, vidéo)
  • reconnaissance faciale
  •  ...

Et ça fait peur

Pas Schwarzy, hein, mais c'est vraiment partout, et ça impacte beaucoup de contenu quand même, et on sait pas trop comment ça marche ....

Intelligence Vraiment ?

Ce que je vous propose :

  • Un peu (euh...) de vulgarisation
  • Pour vous faire prendre conscience des possibilités et des limites du DL
  • Pas de maths.

Des machines qui apprennent

6

6

  • Présuppose un vocabulaire commun
  • Pas d'adaptabilité

0

3

5

6

4

3

1

7

8

0

image/svg+xml
image/svg+xml

5

Comment je donne un feedback utile à mon élève pour s'améliorer ?

??

Une autre façon d'évaluer

Une autre façon d'évaluer

Score : - 0.2

... pour s'améliorer

Score : - 0.2

Maintenant je peux donner un retour plus constructif ...

Apprentissage = optimisation

Comment prendre en compte ces corrections ?

Comment prendre en compte ces corrections ?

Moyenne des réglages

Je sais dans quel "sens" ajuster les paramètres pour être meilleur sur cette image

Je vais ajuster "un petit peu" dans ce sens

Pour être sûr de ne pas "oublier" les autres chiffres, je vais calculer les mises à jour sur plusieurs exemples et moyenner

Moyenne des réglages

Moyenne des réglages

Moyenne des réglages

Enters...

Stochastic

Gradient

Descent

toutes les données d'apprentissage

Une petite partie "aléatoire" ( le batch )

Calcul de la mise à jour des paramètres

Evaluation

Mise à jour avec un taux d'apprentissage

Stochastic Gradient Descent

stochastic

gradient

descent

Il s'agit maintenant de jouer sur le taux d'apprentissage, et la taille des batchs ...

Taux d'apprentissage trop grand, batch trop petits...

Donc, j'ai besoin pour entrainer mon modèle :

  • D'une fonction d'évaluation pertinente ( qui me permet de savoir "dans quel sens" aller )
     
  • Le lien entre le sens de variation d'un paramètre, et d'une sortie de mon modèle  : le gradient

Deep Learning : ouvrons le capot

Oh, là ! un réseau de neurones ...

Title Text

Des neurones, vraiment ?

Des neurones, vraiment ?

-1

2

3

0.5

0.5

1.

0.5

-1

1

-0.5

-2

3

-1

2

3

0.5

1.

Ajustons les paramètres !

C'est pas très "deep" tout ça ..

Et beh... faut ajouter des neurones alors !

Gradient

??

0.5

1.

La solution : Backpropagation

0.5

-0.5

0.5

Et si au lieu de faire varier les paramètres, je les fixe, et je fais varier les entrées ?

Gradient

Stochastic Gradient Descent

+

Back-propagation

Le problème du sur-apprentissage

Chat ou Chien ?

Le risque : c'est que le réseau se base des éléments statistiquement présents uniquement sur le jeu d'apprentissage

Pas de généralisation

Eviter le sur-apprentissage

astuce 1

Avoir suffisamment d'exemples et de variété par rapport à la complexité du modèle

Eviter le sur-apprentissage

 

Astuce 2

évaluer avec un jeu de données séparé (validation)

validation

Training

Eviter le sur-apprentissage

Astuce 3

Forcer le modèle à considérer l'ensemble de l'image, ( et à ignorer le bruit).

Et si on pouvait forcer le modèle a passer par une représentation plus générale de l'image ?

Un nouveau type de couche de neurones : la convolution

Convolution

L'avantage :

- beaucoup moins de paramètres

- on "force" le réseau à généraliser

Des exemples de filtres (11x11) appris sur un vrai réseau...

Et on enchaine plusieurs passes....

http://cs231n.stanford.edu/

http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

LeNet - 5 :  < 1% d'erreur sur le MNIST.

(contre 2.5 % avec un réseau sans convolution, avec 5x moins de paramètres )

( pendant ce temps là, en 1998 ...)

Mais, mais... qu'est-ce qu'on a foutu alors ?

  • GPGPUs (1er SDK CUDA en 2006 )
  • Attendre l'ère du big data : Imagenet (2009 ) : 14M d'images
  • Progrès théoriques pour mieux gérer les couches cachées

Petit bestiaire de réseaux

CNN ( Convolutionnal Neural Network )

On en arrive à des centaines de couches,

des 100M de paramètres ... mais ça marche !

ImageNet challenge : reconnaitre 200 objects ou animaux.

On est maintenant à 3% d'erreur, un humain en moyenne en fait 5%...

Réseaux récurrents

Permet de travailler sur des "séquences" de données, de longueur variables

Exemple :

  • son (reconnaissance vocale )
  • du texte
  • données temporelles

Réseaux récurrents

Astuce !

Réseaux récurrents

Applications :

  • traduction
  • génération de texte
  • reconnaissance vocale
  • détection d'anomalie temporelles

Réseaux récurrents

GANs

Generative adversarial networks

GAN

GAN

Intelligent le Deep-Learning?

Trop dépendant des données:

  • Volume => coût (stockage, temps de calcul)

  • Besoin de données "étiquettées" et  propre

  • Biais

Intelligent le Deep-Learning?

Le problème de l'inexplicabilité: "d'où vient la décision? pourquoi ?"

Hey !

Florent D'halluin (        @flal  ... )

 

Du machine-learning avec :

  • Des robots
  • Du pétrole
  • Des documents d'identités @

 

Resources : pour aller plus loin ...