xebicon'16 : utiliser le deep learning pour interpréter des photographies par yoann benoit,...
TRANSCRIPT
@xebiconfr #xebiconfr
Mais pour quoi faire ?
7
2a
Nouveau plugin Google Photos ?
Satisfaction clients via vidéo ?
@xebiconfr #xebiconfr
Quelques chiffres
10
2d
Images 48x48 pixels Plus de 30 000 images labellisées
7 sentimentscolère, dégoût, peur, joie, tristesse,
surprise, neutre
Performance Humaine :Entre 60 et 65%
@xebiconfr #xebiconfr
En quoi ce problème est-il difficile ?
● Système visuel humain extrêmement complet
● L’être humain est très bon pour donner du sens à ce qu’il voit○ Mais ce travail est fait de manière
inconsciente
11
2e
@xebiconfr #xebiconfr
En quoi ce problème est-il difficile ?
● Très difficile d’exprimer de manière algorithmique ce qui permet de reconnaître une image
● Machine Learning○ Large échantillon d’images pour
lesquelles on connaît le label=> Apprentissage automatique de règles
12
2f
@xebiconfr #xebiconfr
De quoi est composé un Réseau de Neurones ?
15
3a
De neurones ...
Associés en réseau …
@xebiconfr #xebiconfr
Comment fonctionne un Réseau de Neurones ?
16
3b
Softm
ax
Chaque neurone intermédiaire représente
une somme pondérée des valeurs des neurones de la
couche précédente, associés à une fonction
d’activation
La dernière couche (softmax) est une
normalisation de la couche de sortie afin que
les résultats correspondent à des probabilités
(sommant à 1)
@xebiconfr #xebiconfr
Tout est une histoire de matrices
17
3c
Y = xW + bclasses = softmax(Y)
[4, 2][1, 4][1, 2][2]
@xebiconfr #xebiconfr
Tout est une histoire de matrices
18
3d
Y = XW + bclasses = softmax(Y)
[4, 2][K, 4][K, 2]Avec des batches d’images ...
[2]
@xebiconfr #xebiconfr
Tout est une histoire de matrices
19
3e
Y = f(XW1 + b1) W2 + b2
classes = softmax(Y)
[3, 2][3][K, 2]
[2][K, 4][4, 3]
fonction d’activation
@xebiconfr #xebiconfr
Comment trouver les poids ?
20
3f
Back-propagation: Mise à jour des poids en fonction du gradient des erreurs, de la dernière couche à la première
@xebiconfr #xebiconfr
Comment trouver les poids ?
21
3f
Back-propagation: Mise à jour des poids en fonction du gradient des erreurs, de la dernière couche à la première
@xebiconfr #xebiconfr
Comment trouver les poids ?
22
3f
Back-propagation: Mise à jour des poids en fonction du gradient des erreurs, de la dernière couche à la première
@xebiconfr #xebiconfr
TensorFlow
● Framework de programmation open-sourcé par Google en 2016
● Aujourd’hui en version 0.11● APIs en Python, C++● Principalement utilisé pour l’entraînement et
l’utilisation de Réseaux de Neurones, et plus particulièrement pour le Deep Learning
23
3g
Aujourd’hui l’un des frameworks les plus utilisés pour le Deep Learning, avec une documentation très riche.
@xebiconfr #xebiconfr
Tiny Neural Network
34
5a
Inputs(= pixels)
Classes(= sentiment)
Poids
Couche cachée / intermédiaire
@xebiconfr #xebiconfr
Medium Size Neural Network
40
6a
Inputs(= pixels)
Classes(= sentiment)
Poids
Couches cachées
@xebiconfr #xebiconfr
Big Fat Neural Network
46
7a
Inputs(= pixels)
Classes(= sentiment)
Poids
Couches cachées
@xebiconfr #xebiconfr
Pourquoi les résultats ne s’améliorent pas ?
50
7e
● Normalement, un réseau plus profond permet d’apprendre des fonctions plus complexes
Mais ...● Différentes vitesses d’apprentissage des
poids selon les couches● La mise à jours des poids d’une couche
dépend de celle des poids de la couche suivante (back-propagation)
@xebiconfr #xebiconfr
Quelles solutions ?
51
7f
Changement d’architecture de réseau ?
Algorithme d’apprentissage plus avancé ?
Changement de fonction d’activation ?
@xebiconfr #xebiconfr
Nombre de paramètres à estimer
52
7g
2304 pixels * 7 poids + 7 biais
= 16 135
paramètres
@xebiconfr #xebiconfr
Nombre de paramètres à estimer
53
7g
2304*384 + 384+
384*7 + 7 =
887 815paramètres
2304 pixels * 7 poids + 7 biais
= 16 135
paramètres
@xebiconfr #xebiconfr
Nombre de paramètres à estimer
54
7g
2304*384 + 384+
384*7 + 7 =
887 815paramètres
2304*500 + 500 + 500*300 + 300 + 300*150 + 150 +
150*7 + 7=
1 349 007paramètres
2304 pixels * 7 poids + 7 biais
= 16 135
paramètres
@xebiconfr #xebiconfr
Nombre de paramètres à estimer
55
7g
2304*384 + 384+
384*7 + 7 =
887 815paramètres
2304*500 + 500 + 500*300 + 300 + 300*150 + 150 +
150*7 + 7=
1 349 007paramètres
2304*1000 + 1000 + 1000*750 + 750 + 750*500 + 500 + 500*300 + 300 + 300*150 + 150 +
150*7 + 7=
3 627 757paramètres
2304 pixels * 7 poids + 7 biais
= 16 135
paramètres
@xebiconfr #xebiconfr
Réfléchissons un peu
57
8a
● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ?
● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
@xebiconfr #xebiconfr
Réfléchissons un peu
● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ?
● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
58
8a
@xebiconfr #xebiconfr
Réfléchissons un peu
59
8a
● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ?
● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
@xebiconfr #xebiconfr
Réfléchissons un peu
60
8a
● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ?
● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
@xebiconfr #xebiconfr
Réfléchissons un peu
61
8a
● Est-ce une bonne idée d’utiliser des réseaux de neurones où tous les neurones entre deux couches sont connectés entre eux ?
● Ce type de réseau ne prend pas en compte la structure spatiale de l’image
@xebiconfr #xebiconfr
Réfléchissons un peu
Peut-on trouver une architecture qui tire avantage de cette structure ?
62
8b
@xebiconfr #xebiconfr
Réfléchissons un peu
63
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
64
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
65
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
66
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
67
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
68
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
69
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
70
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
71
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Réfléchissons un peu
72
8b
Peut-on trouver une architecture qui tire avantage de cette structure ?
@xebiconfr #xebiconfr
Hypothèses principales
● Associations locales○ Tous les pixels ne sont pas connectés à tous les neurones
cachés○ Les connexions sont faites dans des petites zones localisées
de l’image
● Mêmes poids et biais pour tous les neurones d’une même couche○ Tous les neurones d’une même couche cachée détectent le
même pattern (ex : un coin)
● Pooling○ Souvent utilisés juste après une couche de convolution○ Condenser l’information autour d’une région (max/mean)
73
8c
@xebiconfr #xebiconfr
BE SMART!
● Exploiter au mieux la structure de vos données.
● Certaines architectures sont plus adaptées pour les images, d’autres pour le texte, etc.
@xebiconfr #xebiconfr
TEST AND LEARN!
● Pas de règles absolues sur les structures de réseaux de neurones qui fonctionnent le mieux.
● Tester intelligemment différentes structures et essayer de comprendre pourquoi l’une fonctionne mieux que l’autre.
@xebiconfr #xebiconfr
DO NOT REINVENT THE WHEEL!
● L’écosystème autour du Deep Learning est en croissance continue.
● De plus en plus de frameworks sont disponibles et bien documentés (TensorFlow, Keras, etc.).
● Commencer avec des exemples connus puis se perfectionner par rapport aux données à disposition.
@xebiconfr #xebiconfr
HAVE FUN!
● Introduction à TensorFlow - Martin Görner (Google)
https://docs.google.com/presentation/d/1TVixw6ItiZ8igjp6U17tcgoFrLSaHWQmMOwjlgQY9co/pub?start=false&loop=false&delayms=3000
● Neural Networks and Deep Learning - Online Book
http://neuralnetworksanddeeplearning.com/
● TensorFlow documentationhttps://www.tensorflow.org/