Les CapsNets sont une nouvelle architecture de réseaux de neurones, inventée par Geoffrey Hinton, l'un des pères du Deep Learning.
Cette vidéo est la traduction française de cette vidéo: https://youtu.be/pPN8d0E3900
Article NIPS 2017:
* Dynamic Routing Between Capsules,
* de Sara Sabour, Nicholas Frosst, Geoffrey E. Hinton
* https://arxiv.org/abs/1710.09829
L'article de 2011:
* Transforming Autoencoders
* de Geoffrey E. Hinton, Alex Krizhevsky and Sida D. Wang
* https://goo.gl/ARSWM6
L'article de 2018 (ICLR 2018):
* Matrix capsules with EM routing
* de Geoffrey E. Hinton, Sara Sabour, Nicholas Frosst
* https://openreview.net/pdf?id=HJWLfGWRb
Implémentations d'un CapsNet:
* Mon implémentation TensorFlow (dans un notebook Jupyter): https://github.com/ageron/handson-ml/...
Cette implémentation est présentée (en anglais) dans ma vidéo: https://youtu.be/2Kawrd5szHE
* Keras w/ TensorFlow: https://github.com/XifengGuo/CapsNet-...
* TensorFlow: https://github.com/naturomics/CapsNet...
* PyTorch: https://github.com/gram-ai/capsule-ne...
Livres:
* Machine Learning avec Scikit-Learn, Dunod 2017: https://goo.gl/sGsR6C (amazon.fr) ou https://goo.gl/aDTu6N (dunod.com)
* Deep Learning avec TensorFlow, Dunod 2017: https://goo.gl/aRXYHj (amazon.fr) ou https://goo.gl/aDTu6N (dunod.com)
* Hands-On Machine with Scikit-Learn and TensorFlow, O'Reilly, 2017: https://goo.gl/mTikJM (amazon.fr)
Github: https://github.com/ageron
Twitter: https://twitter.com/aureliengeron
2. Aurélien Géron, 2017
Article NIPS 2017
Dynamic Routing Between Capsules
(Routage dynamique entre capsules)
de Sara Sabour, Nicholas Frosst, Geoffrey E. Hinton
Octobre 2017: https://arxiv.org/abs/1710.09829
16. Aurélien Géron, 2017
=
=
Une matrice de transformation Wi,j
par paire partie/objet (i, j).
ûj|i
= Wi,j
ui
Capsules primaires
Prédire la sortie de
la couche suivante
21. Aurélien Géron, 2017
La capsule-rectangle et la
capsule-triangle seront routées
vers la capsule-bateau.
=
=
Capsules primaires
Sorties prédites
Routage par accord
Bon accord!
32. Aurélien Géron, 2017
Sorties réelles des
capsules de la couche
suivante (fin du 1er
tour)
=
=
0.5
0.5
0.5
0.5
sj
= somme pondérée
vj
= squash(sj
)
Calculer la sortie de
la couche suivante
Capsules primaires
Sorties prédites
33. Aurélien Géron, 2017
Sorties réelles des
capsules de la couche
suivante (fin du 1er
tour)
Mettre à jour les
poids de routage
=
=
Accord
Capsules primaires
Sorties prédites
34. Aurélien Géron, 2017
Sorties réelles des
capsules de la couche
suivante (fin du 1er
tour)
Mettre à jour les
poids de routage
=
=
Accord bi,j
+= ûj|i
. vj
Capsules primaires
Sorties prédites
35. Aurélien Géron, 2017
Sorties réelles des
capsules de la couche
suivante (fin du 1er
tour)
Mettre à jour les
poids de routage
=
=
Accord bi,j
+= ûj|i
. vj
Grand
Capsules primaires
Sorties prédites
36. Aurélien Géron, 2017
Sorties réelles des
capsules de la couche
suivante (fin du 1er
tour)
Mettre à jour les
poids de routage
=
=
Désaccord bi,j
+= ûj|i
. vj
Petit
Capsules primaires
Sorties prédites
37. Aurélien Géron, 2017
Calculer la sortie de
la couche suivante
=
=
0.2
0.1
0.8
0.9
Capsules primaires
Sorties prédites
38. Aurélien Géron, 2017
Calculer la sortie de
la couche suivante
=
=
sj
= somme pondérée
0.2
0.1
0.8
0.9
Capsules primaires
Sorties prédites
39. Aurélien Géron, 2017
Calculer la sortie de
la couche suivante
=
=
sj
= somme pondérée
vj
= squash(sj
)0.2
0.1
0.8
0.9
Capsules primaires
Sorties prédites
40. Aurélien Géron, 2017
Sorties réelles des
capsules de la couche
suivante (fin du 2ème
tour)
Calculer la sortie de
la couche suivante
=
=
0.2
0.1
0.8
0.9
Capsules primaires
Sorties prédites
43. Aurélien Géron, 2017
Handling Crowded
Scenes
=
=
=
=
Maison
Grâce au routage par accord,
l’ambiguïté est vite levée (par
élimination progressive des
composants expliqués).
Bateau
44. Aurélien Géron, 2017
CapsNet de
classification
|| ℓ2
|| Estimation de la probabilité
d’appartenance à chaque classe
45. Aurélien Géron, 2017
Perte marginale
|| ℓ2
|| Pour prédire plusieurs
classes, minimiser la perte
marginale suivante :
Lk
= Tk
max(0, m+
- ||vk
||)2
+ λ (1 - Tk
) max(0, ||vk
|| - m-
)2
Tk
= 1 si et seulement si la
classe k est présente
Dans l’article :
m-
= 0.1
m+
= 0.9
λ = 0.5
Estimation de la probabilité
d’appartenance à chaque classe
46. Aurélien Géron, 2017
En clair:
Si un objet de la classe
k est présent dans
l’image, alors ||vk
||
devrait être supérieur à
0,9. Sinon, il devrait
être inférieur à 0,1.
Perte marginale
|| ℓ2
|| Pour prédire plusieurs
classes, minimiser la perte
marginale suivante :
Lk
= Tk
max(0, m+
- ||vk
||)2
+ λ (1 - Tk
) max(0, ||vk
|| - m-
)2
Tk
= 1 si et seulement si la
classe k est présente
Dans l’article :
m-
= 0.1
m+
= 0.9
λ = 0.5
Estimation de la probabilité
d’appartenance à chaque classe
48. Aurélien Géron, 2017
Régularisation par
reconstruction
|| ℓ2
|| Reconstruction
Perte = perte marginale + α perte de reconstruction
La perte de reconstruction est le carré de différence
entre l’image reconstruite et l’image d’entrée.
Dans l’article, α = 0.0005.
Réseau neuronal à
propagation avant
Décodeur
52. Aurélien Géron, 2017
Avantages
● Haute précision sur MNIST, et prometteur sur CIFAR10
● Requiert moins de données qu’un réseau neuronal de convolution
● La position et l’aspect des objets sont préservés (équivariance)
● Ceci est prometteur pour de la segmentation d’image et la détection d’objets
● Le routage par accord gère bien les scènes ambiguës
● Les activations des capsules indiquent la hiérarchie des composants
● L’algorithme est robuste face aux transformations linéaires
● Les vecteurs d’activation sont souvent interprétables (rotation, épaisseur…)
● C’est une idée de Hinton! ;-)
53. Aurélien Géron, 2017
● Pas encore au niveau des réseaux de convolution sur CIFAR10
● Pas encore au niveau sur de grandes images
● L’algorithme est lent, du fait de la boucle du routage par accord
● Un CapsNet ne sait pas distinguer deux objets identiques et très proches
○ Ce phénomène s’appelle le surpeuplement (crowding), et il existe également chez l’Homme.
Inconvénients
54. Aurélien Géron, 2017
Implémentations
● TensorFlow simplifié: https://github.com/ageron/handson-ml
○ Dans extra_capsnets.ipynb
● TensorFlow : https://github.com/naturomics/CapsNet-Tensorflow
● Keras sur TensorFlow : https://github.com/XifengGuo/CapsNet-Keras
● PyTorch : https://github.com/gram-ai/capsule-networks
55. Aurélien Géron, 2017
Article ICLR 2018
Matrix capsules with EM routing
(Capsules matricielles avec routage EM)
de Geoffrey E. Hinton, Sara Sabour, Nicholas Frosst
Février 2018: https://openreview.net/pdf?id=HJWLfGWRb
56. Aurélien Géron, 2017
Article ICLR 2018
Matrix capsules with EM routing
(Capsules matricielles avec routage EM)
de Geoffrey E. Hinton, Sara Sabour, Nicholas Frosst
Février 2018: https://openreview.net/pdf?id=HJWLfGWRb
45% d’erreurs en moins sur le jeu de données
smallNORB par rapport à l’état de l’art