L'apprentissage non supervisé et les techniques récentes
6 juin 2016
Intelligence Artificielle
Introduction et Apprentissage Primitif
C'est donc notre dernière conférence. Nous allons continuer à parler de l'apprentissage non supervisé et des techniques récentes pour l'apprentissage non supervisé que je trouve très intéressantes.
La dernière fois, nous avons parlé de mon opinion personnelle selon laquelle l'un des principaux obstacles aux programmes majeurs d'intelligence artificielle est la capacité à fabriquer des machines capables de faire de l'apprentissage primitif. La principale difficulté avec l'apprentissage primitif est que les prédictions en général comportent des incertitudes. Pour l'apprentissage vidéo, de nombreux scénarios peuvent se produire et ils sont tous plausibles. Lorsque le futur donne des informations sur ce qui va se passer, si la machine a fait une prédiction plausible qui ne s'est pas matérialisée, vous ne devez pas trop punir la machine pour ne pas avoir produit la réponse exacte. Si je place un stylo déséquilibré sur sa pointe, il tombera d'un côté ou de l'autre. Si la machine ne prédit pas le bon côté, ce n'est pas grave, à condition qu'elle puisse prédire que le stylo va tomber. Comment entraîner la machine alors ? Une idée est de dire que la sortie observée n'est qu'un représentant d'un spectre de possibilités futures, représenté par une surface, une variété ou une densité de probabilité. Nous avons besoin que le système apprenne une partie du modèle pour qu'il puisse nous donner des informations si vous êtes sur la bonne surface. Pour le moment, nous nous sommes arrêtés au codage parcimonieux. Le premier sujet dont j'aimerais parler est l'idée d'apprendre l'inférence et d'ajuster l'apprentissage pour effectuer l'inférence.
Codage Parcimonieux et Algorithme ISTA
Alors on va prendre le cas particulier du codage parcimonieux. Le codage parcimonieux c'est l'idée de modéliser une image par une combinaison linéaire d'un petit nombre de fonctions de base. On prend une matrice de décodage, on la multiplie par un vecteur Z et on espère que ce vecteur va avoir un petit nombre de composantes non nulles. À partir de cela, on essaie de reconstruire l'entrée. La façon dont on fait l'inférence est que l'on cherche le vecteur Z qui minimise une fonction à deux termes : un terme de reconstruction quadratique mesurant la distance entre la reconstruction et le vecteur d'entrée, et un deuxième terme qui est une approximation convexe du nombre de composantes non nulles. Il y a un algorithme de minimisation pour ce genre de fonction avec deux termes L1 et L2. Il y a eu beaucoup de propositions, comme le code open source SPAMS par Julien Mairal. Une façon très efficace de trouver le vecteur parcimonieux est l'algorithme ISTA, Iterative Shrinkage Thresholding Algorithm.
On part d'un vecteur Z à partir duquel on voudrait reconstruire le vecteur Y en le multipliant par une matrice WD. C'est un terme d'erreur qui mesure la distance euclidienne entre WD Z et Y. C'est un algorithme de gradient pour minimiser la reconstruction, mais vous avez aussi le terme L1 qui mesure la somme des valeurs absolues des composantes de Z. On applique une itération qui consiste à rétrécir toutes les composantes de Z en les rapprochant de zéro.
Lambda est la constante qui multiplie le terme L1 dans la fonction de perte. Si on fait tourner cet algorithme jusqu'à convergence, on finit par avoir Z qui minimise la norme au carré de cette différence plus la somme des valeurs absolues des composantes de Z. Cela peut être vu comme un réseau récurrent. Prenez Y, multipliez par une matrice WE et passez par ce module de rétrécissement. Si vous substituez WE et S par leurs valeurs, vous obtenez cette itération représentée par ce graphe de blocs. Vous continuez cette itération jusqu'à convergence.
Apprentissage de l'Inférence et Réseaux Récurrents
Mon ancien étudiant post-doctoral Karol Gregor a suggéré de regarder cet algorithme itératif comme un réseau récurrent et d'entraîner les deux matrices WE et S pour donner une bonne approximation rapidement.
Pour entraîner un réseau récurrent, on le déplie dans le temps. On l'entraîne ensuite par rétropropagation à condition que cette matrice soit la même à toutes les instances.
Cela marche très bien. Si vous prenez l'algorithme Fast ISTA où Z est quatre fois plus grand que Y, vous obtenez une erreur d'itération. En entraînant les matrices sur les mêmes données, on obtient des erreurs plus faibles, surtout après une ou deux itérations. En apprenant des matrices, on peut donner une solution approximative plus rapidement à un problème d'optimisation que ce qui serait normalement requis.
Il y a plusieurs variantes de cette méthode que je ne vais pas couvrir.
Un étudiant de Guillermo Sapiro nommé Pablo Sprechmann a utilisé cette méthode pour séparer des sources. Par exemple, une discussion entre plusieurs personnes ou de la musique avec plusieurs instruments. Avec cette méthode, on peut séparer des signaux mélangés de manière très rapide.
Il travaille toujours sur des méthodes dérivées pour produire des images haute résolution, transformant une vidéo de résolution naturelle en une image haute résolution.
Architectures Convolutionnelles et Représentations Parcimonieuses
Les réseaux convolutionnels à propagation avant sont les meilleures architectures pour la reconnaissance. On utilise souvent la récurrence pour des données séquentielles. On pourrait imaginer des connexions récurrentes pour des tâches à propagation avant. On multiplie par une matrice apprise, puis on passe par une ReLU et on ajoute cela à la valeur suivante. On répète ce module plusieurs fois, partageant la matrice ce qui correspond à un réseau récurrent déplié. C'est comme avoir une couche qui fait le traitement normal mais avec une connexion à elle-même pour affiner le résultat. Les réseaux récents avec 150 couches font la même chose. On peut entraîner le système avec plusieurs fonctions de perte : un critère L1 pour la parcimonie, un pour la classification, et peut-être un terme de reconstruction d'entrée. C'est un travail de Joseph Rolfe.
Le système produit des représentations parcimonieuses d'entrées. Voici les fonctions de base pour reconstruire une figure MNIST. C'est totalement connecté à chaque couche. Le système commence avec un prototype interne, ajoute des composantes, et le coefficient devient la forme à reconstruire. En termes de classification, cela marche bien. Il y a beaucoup d'idées à creuser où plusieurs tâches sont réalisées à la fois.
Pour revenir aux représentations parcimonieuses, il y a une variante convolutionnelle. On reconstruit l'entrée comme une somme pondérée des cartes de caractéristiques convoluées par des noyaux convolutionnels. Voici le diagramme. On voudrait trouver une carte de caractéristiques pour reconstruire l'entrée en faisant une convolution. Il y a un encodeur qui essaie de prédire le vecteur parcimonieux. On trouve Z minimisant la somme de ces termes par un pas de gradient stochastique, et Z devient une cible pour l'encodeur.
On pourrait utiliser ce genre de méthode pour pré-entraîner des réseaux convolutionnels. Cela a eu du succès avant 2012 quand les bases de données étaient petites. On fait cela pour une couche, on enlève le décodeur et on garde les lois convolutionnelles apprises. L'avantage est que cela force chaque couche à maintenir le maximum d'informations possible. On peut ensuite ajouter des couches et affiner avec la rétropropagation conventionnelle. Cela marche bien pour l'entraînement d'un système de détection de piétons.
En termes pratiques, il y a des architectures plus raffinées utilisant un encodeur convolutionnel et un décodeur linéaire. La parcimonie s'applique aux unités après le pooling. Si vous organisez ces pools pour qu'ils se chevauchent, cela donne une évolution douce car les pools groupent des filtres qui se ressemblent. C'est ainsi que les neurones sont organisés dans V1, mesurant l'orientation dans le cortex individuel.
Voici un exemple des résultats avec des algorithmes d'apprentissage reliés à la biologie. Le codage parcimonieux venait à l'origine des neurosciences. D'autres méthodes basées on l'inhibition latérale sont plus proches de la biologie mais sont un peu plus obscures.
Analyse des Caractéristiques Lentes et Invariance
Une technique pour apprendre des caractéristiques non supervisées est d'apprendre des caractéristiques invariantes. C'est l'analyse des caractéristiques lentes. Karol Gregor a pensé à entraîner un auto-encodeur sur des séries d'images vidéo pour produire deux vecteurs : un représentant le contenu, qui ne change pas beaucoup sur trois images, et un représentant la position des objets, qui change au fur et à mesure qu'ils bougent. Vous forcez l'encodeur de contenu à être le même pour les images successives. Pour éviter que le système n'ignore une partie du réseau, on met une contrainte de parcimonie sur les composantes. Durant la reconstruction, l'image est le produit terme à terme de la localisation et de la nature de l'objet. Si vous activez la taille moyenne et un cercle par une multiplication, vous reconstruisez l'entrée en utilisant un décodeur.
Cela marche assez bien. On obtient des détecteurs pour une caractéristique spécifique sans la position et d'autres qui localisent l'activité sans se soucier de leur nature. L'apprentissage temporel utilisant la cohérence est une vieille idée, comme la slow feature analysis. Une façon récente utilise un auto-encodeur convolutionnel avec ReLU et un pooling spatial. On dit qu'après le pooling, les représentations pour deux images successives doivent être aussi similaires que possible. Le pooling évolue lentement dans le temps. On obtient des filtres similaires au sein d'un même pool, ce qui est assez joli. Voici les filtres typiques obtenus sur CIFAR-10.
Organisation Topographique et Neurosciences
Ce qui signifie que ce sont des filtres similaires regroupés dans un pool.
Plusieurs méthodes ont été proposées dans le passé pour l'analyse en composantes indépendantes et d'autres contextes.
Plusieurs méthodes ont été proposées par le passé dans différents contextes, notamment pour l'analyse des composantes indépendantes.
Mais ce qui est intéressant pour les gens en neurosciences, c'est que si on organise ces pools comme des composantes de Z, on parle des caractéristiques extraites par chaque unité dans le vecteur Z.
Mais ce qui est intéressant pour les gens en neurosciences, c'est que si on organise ces pools comme des composantes de Z, on parle des caractéristiques extraites par chaque unité dans le vecteur Z.
Si on regroupe les pools et s'ils se chevauchent les uns les autres, ça donne ça.
Si vous regroupez les pools et s'ils se chevauchent les uns les autres, cela donne cela.
On voit ces espèces d'évolution un peu smooth parce que les pools regroupent des filtres qui s'activent ensemble et se ressemblent.
On peut voir une sorte d'évolution fluide parce que les pools regroupent des filtres qui sont activés ensemble et se ressemblent.
Si on met des groupes couverts par des filtres qui se ressemblent au sein du pool, on aboutit à cette carte topographique.
Si vous mettez des groupes couverts par des filtres qui se ressemblent au sein du pool, vous aboutissez à cette carte topographique.
Si on demande aux gens en neurosciences comment sont organisés les neurones dans V1 par exemple.
Si vous demandez aux gens en neurosciences comment les neurones sont organisés dans V1.
Ce sont des cartes produites par un auto-encodeur parcimonieux avec une connexion locale, qui n'est pas convolutionnel.
Ce sont des cartes produites par un auto-encodeur parcimonieux avec une connexion locale qui n'est pas convolutionnelle.
Voici des articles de neurosciences mesurant l'orientation des neurones dans le cortex.
Voici des articles de neurosciences mesurant l'orientation des neurones dans le cortex.
Voici un autre exemple des résultats avec ce type d'algorithme.
Voici un autre exemple des résultats avec ce type d'algorithme.
Ce sont des algorithmes d'apprentissage qui peuvent être reliés à la biologie. Le sparse coding à l'origine venait des neurosciences.
Ce sont des algorithmes d'apprentissage qui peuvent être reliés à la biologie. Le codage parcimonieux venait à l'origine des neurosciences.
C'était le sparse encoding et d'autres méthodes basées sur l'inhibition latérale.
C'était le codage parcimonieux et d'autres méthodes basées on l'inhibition latérale.
Elles se rapprochent plus de ce qu'on voit dans la biologie, mais c'est un peu plus obscur.
Elles se rapprochent plus de ce que l'on voit en biologie, mais c'est un peu plus obscur.
Je vais sauter ça.
Je vais sauter ça.
Auto-encodeurs Vidéo et Séparation Contenu/Position
Une technique pour essayer d'apprendre des caractéristiques invariantes par rapport à certaines transformations.
Une technique pour essayer d'apprendre des caractéristiques invariantes par rapport à certaines transformations.
C'est la slow feature analysis. Mon étudiant Karol Gregor a pensé à entraîner un auto-encodeur sur une série d'images vidéo.
C'est l'analyse des caractéristiques lentes. Mon étudiant Karol Gregor a pensé à entraîner un auto-encodeur sur une série d'images vidéo.
On produit deux vecteurs à partir de trois images successives. L'un est censé représenter le contenu de l'image.
On produit deux vecteurs à partir de trois images vidéo successives. L'un est censé représenter le contenu de l'image.
Le contenu ne changera pas beaucoup, mais l'autre vecteur représentera la position des objets qui se déplacent.
Le contenu ne changera pas beaucoup, mais l'autre vecteur représentera la position des objets en mouvement.
Vous avez deux encodeurs : un pour le contenu, forcé d'être le même, et un autre encodant la position des objets.
Vous avez deux encodeurs : l'un pour le contenu, forcé d'être le même, et un autre encodant la position des objets.
La position peut changer d'une image à l'autre. Mais si on le fait ainsi, le système ignorera cette partie.
La position peut changer d'une image à l'autre. Mais si on le fait ainsi, le système ignorera cette partie.
Vous allez simplement passer l'information directement ici.
Vous allez simplement passer l'information directement ici.
Il faut mettre une contrainte de parcimonie sur ces composantes pour limiter la quantité d'informations.
Il faut mettre une contrainte de parcimonie sur ces composantes pour limiter l'information.
Pour que ces vecteurs soient parcimonieux avec très peu de composantes non nulles.
Pour que ces vecteurs soient parcimonieux avec très peu de composantes non nulles.
On entraîne cela comme un auto-encodeur parcimonieux. Il y a un truc ici cependant.
On entraîne cela comme un auto-encodeur parcimonieux. Il y a un truc ici cependant.
Durant la reconstruction d'une image, on fait le produit terme à terme de la localisation de l'objet et du contenu.
Durant la reconstruction de l'image, vous faites le produit terme à terme de la localisation de l'objet et du contenu.
Supposons que vous ayez un détecteur de forme et des détecteurs mesurant la taille de chaque objet.
Supposons que vous ayez un détecteur de forme et des détecteurs mesurant la taille de chaque objet.
Si vous activez la taille moyenne et un cercle par une multiplication terme à terme de ces deux vecteurs.
Si vous activez la taille moyenne et un cercle par une multiplication terme à terme de ces deux vecteurs.
Ça marche très bien. On se retrouve avec des détecteurs pour une caractéristique spécifique sans la position.
Ça marche très bien. On se retrouve avec des détecteurs pour une caractéristique spécifique sans la position.
Ce sont des caractéristiques de bas niveau.
Ce sont des caractéristiques de bas niveau.
Plus loin, vous avez des détecteurs qui disent qu'il y a quelque chose dans ce coin mais je ne sais pas quoi.
Plus loin, vous avez des détecteurs qui disent qu'il y a quelque chose dans ce coin mais je ne sais pas quoi.
Ces détecteurs s'occupent de l'endroit où cela apparaît dans le champ visuel plutôt que de l'orientation.
Ces détecteurs traitent de l'endroit où cela apparaît dans le champ visuel plutôt que de l'orientation.
Ce sont des filtres qui localisent l'activité sans se soucier de sa nature. On peut faire de la reconstruction.
Ce sont des filtres qui localisent l'activité sans se soucier de sa nature. Nous pouvons faire de la reconstruction.
L'idée de l'apprentissage temporel utilisant la cohérence est ancienne, comme la slow feature analysis.
L'idée de l'apprentissage temporel utilisant la cohérence est ancienne, comme la slow feature analysis.
Il y a de nombreuses façons de la mettre en œuvre. Voici un auto-encodeur qui prend une image vidéo.
Il y a de nombreuses façons de la mettre en œuvre. Voici un auto-encodeur qui prend une image vidéo.
C'est une convolution avec ReLU. On applique cet encodage avec une reconstruction pour chaque image.
C'est une convolution avec ReLU. Nous appliquons cet encodage avec une reconstruction pour chaque image.
Après le pooling spatial, on dit que les représentations extraites pour deux images sont aussi similaires que possible.
Après le pooling spatial, nous disons que les représentations extraites pour deux images sont aussi similaires que possible.
Le pooling est censé évoluer lentement dans le temps on des images vidéo successives.
Le pooling est censé évoluer lentement dans le temps on des images vidéo successives.
On obtient des filtres qui font partie du même pool. Ils sont très similaires, avec juste un décalage.
On obtient des filtres qui font partie du même pool. Ils sont très similaires, avec juste un décalage.
Par groupes de quatre, ils appartiennent au même pool. C'est assez joli.
Par groupes de quatre, ils appartiennent au même pool. C'est assez joli.
Voici les filtres typiques obtenus en entraînant une couche de même nature on CIFAR-10.
Voici les filtres typiques obtenus en entraînant une couche de même nature on CIFAR-10.
Il y a un raffinement qui consiste à séparer deux types de données provenant du pooling.
Il y a un raffinement qui consiste à séparer deux types de données sortant du pooling.
La sortie du pooling peut être un max pooling ou L2, un peu invariante à la position.
La sortie du pooling peut être un max pooling ou L2, un peu invariante à la position.
On peut obtenir la position du commutateur ou du max, qui est propagée vers la sortie.
On peut obtenir la position du commutateur ou du max, qui est propagée vers la sortie.
On sépare ainsi le 'quoi' (le contenu invariant) et le 'où' (la position du max).
On sépare ainsi le 'quoi' (contenu invariant) et le 'où' (position du max).
On essaie de prédire la représentation à partir des 'où' et des 'quoi' de deux images pour la troisième.
On essaie de prédire la représentation à partir des 'où' et des 'quoi' de deux images pour la troisième.
Le contenu est la moyenne des images précédentes, mais la position sera une extrapolation linéaire.
Le contenu est la moyenne des images précédentes, mais la position sera une extrapolation linéaire.
À partir de cette prédiction du 'quoi' et du 'où', on reconstruit l'entrée à l'aide d'un décodeur.
À partir de cette prédiction du 'quoi' et du 'où', on reconstruit l'entrée à l'aide d'un décodeur.
Le pooling est un peu compliqué, mais j'y reviendrai avec un exemple plus éloquent.
Le pooling est un peu compliqué, mais j'y reviendrai avec un exemple plus éloquent.
Dans ce cas, on obtient des filtres amusants où les pools produisent encore des caractéristiques.
Dans ce cas, on obtient des filtres amusants où les pools produisent encore des caractéristiques.
Si les pools se chevauchent, il s'agit d'une topologie linéaire avec une évolution lente.
Si les pools se chevauchent, il s'agit d'une topologie linéaire avec une évolution lente.
Cela peut être utilisé pour prédire la reconstruction d'images.
Cela peut être utilisé pour prédire la reconstruction d'images.
L'interpolation de vues permet de reconstruire des vues tournées. Il faut des réseaux très profonds pour cela.
L'interpolation de vues permet la reconstruction de vues tournées. Des réseaux très profonds sont nécessaires pour cela.
Vers une Règle Simple pour le Supervisé et Non Supervisé
Ok, dans la suite, je me pose la question de savoir comment intégrer l'apprentissage supervisé et non supervisé dans une seule règle simple.
Dans la suite, je me demande comment intégrer l'apprentissage supervisé et non supervisé dans une seule règle simple.
Les algorithmes de Boltzmann existent mais sont inefficaces et difficiles à mettre à l'échelle à cause de l'échantillonnage.
Les algorithmes de Boltzmann existent mais sont inefficaces et difficiles à mettre à l'échelle en raison de l'échantillonnage.
Cette idée n'est pas nouvelle, elle date de 1983.
Cette idée n'est pas nouvelle ; elle date de 1983.
Il serait bon d'avoir un algorithme qui fasse les deux selon la façon dont il est utilisé.
Il serait bon d'avoir un algorithme qui fasse les deux selon la façon dont il est utilisé.
L'apprentissage non supervisé par reconstruction est une forme d'apprentissage supervisé où l'on essaie de reconstruire l'entrée.
L'apprentissage non supervisé par reconstruction est une forme d'apprentissage supervisé où l'on essaie de reconstruire l'entrée.
Le système doit reconstruire ce qui a été appris, mais pas les échantillons en dehors de la densité de données.
Le système doit reconstruire ce qui a été appris, mais pas les échantillons en dehors de la densité de données.
Les machines de Boltzmann sont inefficaces car elles tentent d'augmenter l'énergie des données non observées.
Les machines de Boltzmann sont inefficaces car elles tentent d'augmenter l'énergie des données non observées.
L'apprentissage par reconstruction prend une entrée via un encodeur convolutionnel pour sortir une catégorie d'objet.
L'apprentissage par reconstruction prend une entrée via un encodeur convolutionnel pour sortir une catégorie d'objet.
On ne peut pas reconstruire l'entrée à partir d'un vecteur de scores car c'est une fonction surjective.
L'entrée ne peut pas être reconstruite à partir d'un vecteur de scores car c'est une fonction surjective.
Elle associe une sortie à plusieurs entrées ; déplacer l'objet ne change probablement pas sa sortie.
Elle associe une sortie à plusieurs entrées ; déplacer l'objet ne change probablement pas sa sortie.
On ne peut pas partir de la classe et régénérer l'entrée. C'est impossible.
Nous ne pouvons pas partir de la classe et régénérer l'entrée. C'est impossible.
L'apprentissage par reconstruction pour la reconnaissance de formes est incompatible avec le supervisé.
L'apprentissage par reconstruction pour la reconnaissance de formes est incompatible avec l'apprentissage supervisé.
Par instinct, on peut voir cela comme une fonction probabiliste stochastique.
Par instinct, on peut voir cela comme une fonction probabiliste stochastique.
C'est une estimation de densité conditionnelle, ce qui est le problème des machines de Boltzmann.
C'est une estimation de densité conditionnelle, ce qui est le problème des machines de Boltzmann.
Il est difficile de paramétrer la densité dans des espaces de grande dimension comme les images.
Il est difficile de paramétrer la densité dans des espaces de grande dimension comme les images.
Une solution consiste à séparer le contenu ('quoi') dans le calcul fait par le réseau.
Une solution consiste à séparer le contenu ('quoi') dans le calcul effectué par le réseau.
Après le pooling, on oublie la position. Il n'y a pas assez d'informations dans le contenu pour reconstruire.
Après le pooling, la position est oubliée. Il n'y a pas assez d'informations dans le contenu pour reconstruire.
En gardant les informations d'instanciation on la position, on peut faire du unpooling.
En conservant les informations d'instanciation on la position, on peut faire du unpooling.
On factorise les explications de l'entrée basées on le contenu et les paramètres de position.
On factorise les explications de l'entrée basées on le contenu et les paramètres de position.
Karol Gregor et Marc'Aurelio Ranzato ont travaillé on des idées similaires avec le max pooling.
Karol Gregor et Marc'Aurelio Ranzato ont travaillé on des idées similaires avec le max pooling.
L'idée d'unités choisissant dynamiquement des emplacements et conservant l'information remonte à longtemps.
L'idée d'unités choisissant dynamiquement des emplacements et conservant l'information remonte à longtemps.
Mécanismes de Pooling et Unpooling (Quoi et Où)
Hinton, Zemel et von der Malsburg ont parlé de concepts similaires mais plus abstraits.
Hinton, Zemel et von der Malsburg ont parlé de concepts similaires mais plus abstraits.
Le pooling et le unpooling fonctionnent comme suit.
Le pooling et le unpooling fonctionnent comme suit.
On calcule une moyenne pondérée des valeurs correspondant à une version soft d'un max.
On calcule une moyenne pondérée des valeurs correspondant à une version soft d'un max.
On calcule un score entre 0 et 1, qui est l'exponentielle de la valeur.
On calcule un score entre 0 et 1, qui est l'exponentielle de la valeur.
Bêta est un coefficient.
Bêta est un coefficient.
Si bêta est 0, c'est la moyenne. On peut ajuster cela.
Si bêta est 0, c'est la moyenne. On peut ajuster cela.
Trop de données passent par le 'où'. Si vous poolez neuf valeurs, vous avez trop de paramètres libres.
Trop de données passent par le 'où'. Si vous regroupez neuf valeurs, vous avez trop de paramètres libres.
Toute l'information passe par le 'où', donc ça ne peut pas marcher. Il y a trop de flexibilité.
Toute l'information passe par le 'où', donc ça ne peut pas marcher. Il y a trop de flexibilité.
On réduit ce 'où' à deux variables indiquant la position moyenne d'activation.
On réduit ce 'où' à deux variables indiquant la position moyenne d'activation.
C'est plus facile à comprendre manuellement. Si la valeur maximale est ici.
C'est plus facile à comprendre manuellement. Si la valeur maximale est ici.
On calcule les coordonnées moyennes XY avec ce soft max sans tenir compte des valeurs.
On calcule les coordonnées moyennes XY avec ce soft max sans tenir compte des valeurs.
On agit comme si toute l'activité était regroupée autour de cette position pour faire le unpooling.
On agit comme si toute l'activité était regroupée autour de cette position pour le unpooling.
Au lieu de neuf valeurs, vous n'auriez que les coordonnées X et Y. Le pooling peint la valeur à l'endroit déterminé.
Au lieu de neuf valeurs, vous n'auriez que les coordonnées XY. Le pooling peint la valeur à l'endroit déterminé.
Le champ récepteur est déterminé par ce 'où'. C'est beaucoup plus compact.
Le champ récepteur est déterminé par ce 'où'. C'est beaucoup plus compact.
Ces cartes deviennent parcimonieuses car une seule valeur par bloc est écrite en unpooling.
Ces cartes deviennent parcimonieuses car une seule valeur par bloc est écrite lors du unpooling.
Ce sont des auto-encodeurs parcimonieux par défaut sans critères explicites.
Ce sont des auto-encodeurs parcimonieux par défaut sans critères explicites.
On peut empiler ces auto-encodeurs avec séparations 'quoi-où'.
On peut empiler ces auto-encodeurs 'quoi-où'.
C'est un réseau convolutionnel traditionnel où l'on sépare le 'où' pour produire des cartes de caractéristiques.
C'est un réseau convolutionnel traditionnel où l'on sépare le 'où' pour produire des cartes de caractéristiques.
C'est un réseau déconvolutionnel où l'on remplace le pooling par le unpooling.
C'est un réseau déconvolutionnel où le pooling est remplacé par le unpooling.
Dans chaque couche, on met un coût L2 ou cross-entropie pour la reconstruction.
Dans chaque couche, on met un coût L2 ou une entropie croisée pour la reconstruction.
On obtient une reconstruction réelle et des erreurs de classification. On peut faire de l'apprentissage supervisé ou non supervisé.
On obtient une reconstruction réelle et des erreurs de classification. On peut faire de l'apprentissage supervisé ou non supervisé.
Si on connaît la sortie désirée, on a un coût supervisé et on peut faire de la rétropropagation.
Si la sortie souhaitée est connue, on a un coût supervisé et on peut faire de la rétropropagation.
On peut utiliser le coût de reconstruction comme une régularisation du coût supervisé.
On peut utiliser le coût de reconstruction comme une régularisation du coût supervisé.
Il faut produire une bonne classification tout en veillant à ce que les caractéristiques permettent de reconstruire l'entrée.
Une bonne classification doit être produite tout en veillant à ce que les caractéristiques permettent de reconstruire l'entrée.
Cela entraîne la machine à reconnaître des catégories pour lesquelles elle n'a pas été pré-entraînée.
Cela entraîne la machine à reconnaître des catégories pour lesquelles elle n'a pas été pré-entraînée.
Sans étiquettes, on passe par le réseau pour obtenir un auto-encodeur profond.
Sans étiquettes, on passe par le réseau pour obtenir un auto-encodeur profond.
On peut l'entraîner comme un auto-encodeur non supervisé. Si on ne connaît pas la sortie, on la laisse prendre la valeur qu'elle veut.
Il peut être entraîné comme un auto-encodeur non supervisé. Si la sortie est inconnue, on la laisse prendre n'importe quelle valeur.
C'est un système de classification statique utilisé en supervisé ou non supervisé.
C'est un système de classification statique utilisé en mode supervisé ou non supervisé.
La reconstruction agit comme un régularisateur permettant d'utiliser des échantillons non étiquetés.
La reconstruction agit comme un régularisateur permettant d'utiliser des échantillons non étiquetés.
Cela marche assez bien. Voici des exemples de reconstructions utilisant le unpooling au lieu de l'upsampling.
Cela fonctionne assez bien. Voici des exemples de reconstructions utilisant le unpooling au lieu de l'upsampling.
Beaucoup de réseaux convolutionnels utilisent l'upsampling en copiant simplement les valeurs.
De nombreux réseaux convolutionnels utilisent l'upsampling en copiant simplement les valeurs.
On n'obtient pas de bonnes reconstructions si l'entrée varie en position car le système est invariant.
On n'obtient pas de bonnes reconstructions si l'entrée varie en position car le système est invariant.
Avec le unpooling, on peut reconstruire les entrées assez bien.
Avec le unpooling, on peut assez bien reconstruire les entrées.
Même avec beaucoup de unpooling, on peut encore reconstruire.
Même avec beaucoup de unpooling, la reconstruction est toujours possible.
Cette technique est gourmande et difficile à mettre en œuvre on de grandes bases de données.
Cette technique est gourmande et difficile à mettre en œuvre on de grandes bases de données.
C'est une architecture en échelle avec un réseau avant et arrière et des copies.
C'est une architecture en échelle avec des réseaux avant et arrière et des copies.
Sans séparations 'quoi-où', les résultats sont très bons on une base de données en particulier.
Sans les séparations 'quoi-où', les résultats sont très bons on une base de données particulière.
On ne comprend pas bien pourquoi cette méthode écrase tout le monde.
On ne comprend pas bien pourquoi cette méthode surpasse toutes les autres.
De bons taux d'erreur on SVHN.
Bons taux d'erreur on SVHN.
C'est un sous-ensemble d'ImageNet avec peu d'exemples d'entraînement mais beaucoup d'exemples non étiquetés.
C'est un sous-ensemble d'ImageNet avec peu d'échantillons d'entraînement mais beaucoup d'exemples non étiquetés.
Le 'stacked quoi-où auto-encodeur' marche tout aussi bien.
Le 'stacked what-where auto-encoder' fonctionne tout aussi bien.
74 % de précision avec 5 000 échantillons d'entraînement et 100 000 exemples non étiquetés.
Précision de 74 % avec 5 000 échantillons d'entraînement et 100 000 exemples non étiquetés.
Le même réseau entraîné classiquement n'obtient que 57 %.
Le même réseau entraîné de manière classique n'obtient que 57 %.
Apprentissage Prédictif et Modèles du Monde
Revenons à l'apprentissage prédictif et à la prédiction vidéo temporelle.
Revenons à l'apprentissage prédictif et à la prédiction vidéo temporelle.
On essaie de prédire l'image suivante d'une vidéo ou l'état final d'un stylo on sa pointe.
Nous essayons de prédire l'image suivante d'une vidéo ou l'état final d'un stylo on sa pointe.
Cela s'applique à toutes les inférences de données non observées car cachées ou dans le futur.
Cela s'applique à toutes les inférences de données non observées, qu'elles soient cachées ou dans le futur.
Le monde physique est incertain.
Le monde physique est incertain.
Si le système a prédit un autre angle pour le stylo qui tombe, on ne veut pas le punir.
Si le système a prédit un autre angle pour le stylo qui tombe, nous ne voulons pas le punir.
La prédiction est correcte si elle se trouve on une surface de vraisemblance.
La prédiction est correcte si elle se situe on une surface de vraisemblance.
Les variables latentes Z sont un paramétrage de la surface.
Les variables latentes Z sont une paramétrisation de la surface.
C'est l'idée du codage parcimonieux.
C'est l'idée du codage parcimonieux.
La surface est une union de plans de faible dimension dans l'espace environnant.
La surface est une union de plans de faible dimension dans l'espace environnant.
Imaginez que vous donniez à un réseau convolutionnel une observation.
Imaginez donner une observation à un réseau convolutionnel.
On utilise des nombres aléatoires encodant les possibilités de prédiction.
Nous utilisons des nombres aléatoires encodant les possibilités de prédiction.
Comment concevoir une fonction de perte pour que la machine ne soit pas punie ? On ne connaît pas la nature de cette surface.
Comment concevoir une fonction de perte pour que la machine ne soit pas punie ? La nature de cette surface est inconnue.
Une solution consiste à observer les X aussi.
Une solution consiste à observer également les X.
Pourquoi avons-nous besoin de modèles prédictifs du monde ?
Pourquoi avons-nous besoin de modèles prédictifs du monde ?
C'est par ces modèles que nous pouvons planifier une séquence d'actions.
C'est grâce à ces modèles que nous pouvons planifier une séquence d'actions.
Si le monde est un système dynamique avec un état interne, il passe par une fonction d'évolution.
Si le monde est un système dynamique avec un état interne, il passe par une fonction d'évolution.
On peut agir on le monde en lui donnant une action qui influence son état futur.
On peut agir on le monde en lui donnant une action qui influence son état futur.
Mais on ne peut pas observer l'état complet car le monde peut être stochastique.
Mais on ne peut pas observer l'état complet car le monde peut être stochastique.
Information d'avant.
Information a priori.
Il faut un modèle prédictif et un contrôleur pour amener le monde à un état particulier.
Un modèle prédictif et un contrôleur sont nécessaires pour amener le monde vers un état particulier.
L'état du monde vous inclut vous-même. Imaginez un dialogue homme-machine.
L'état du monde vous inclut vous-même. Imaginez un dialogue homme-machine.
Si on demande de réserver une table, le monde doit être dans l'état correspondant au client content.
Si une table est demandée, le monde doit être dans l'état correspondant au client satisfait.
Dans un jeu d'échecs, vous voulez gagner mais vous ne savez pas ce que l'adversaire va jouer.
Dans une partie d'échecs, vous voulez gagner mais vous ne savez pas ce que l'adversaire va jouer.
On peut simuler le jeu, c'est pourquoi l'apprentissage par renforcement fonctionne bien pour les jeux.
Le jeu peut être simulé, c'est pourquoi l'apprentissage par renforcement fonctionne bien pour les jeux.
Le monde peut être simulé très rapidement pour les échecs ou le go.
Le monde peut être simulé très rapidement pour les échecs ou le Go.
Si les actions sont continues comme dans StarCraft ou pour les robots, c'est plus compliqué.
Si les actions sont continues comme dans StarCraft ou pour les robots, c'est plus compliqué.
On a besoin d'un modèle du monde vu comme un réseau de neurones prédisant l'état futur.
Un modèle du monde est nécessaire, vu comme un réseau de neurones prédisant l'état futur.
Voici une possibilité on l'état futur.
Voici une possibilité on l'état futur.
On peut rétropropager les gradients pour simuler une séquence d'actions sans le monde réel.
Les gradients peuvent être rétropropagés pour simuler une séquence d'actions sans le monde réel.
Ensuite, on peut jouer cela contre le monde réel pour obtenir le résultat.
Ensuite, cela peut être joué contre le monde réel pour obtenir le résultat.
On utilise ce type d'architecture 'scénario' en apprentissage par renforcement.
Ce type d'architecture 'scénario' est utilisé en apprentissage par renforcement.
C'est l'acteur-critique où le critique prédit une valeur de récompense.
C'est l'acteur-critique, où le critique prédit une valeur de récompense.
C'est un modèle standard en théorie du contrôle optimal.
Il s'agit d'un modèle standard en théorie du contrôle optimal.
Il y a deux problèmes : apprendre un modèle prédictif du monde et enseigner un contrôleur.
Il y a deux problèmes : apprendre un modèle prédictif du monde et enseigner un contrôleur.
C'est ce qu'est réellement l'intelligence : la capacité de prédire.
C'est ce qu'est réellement l'intelligence : la capacité de prédire.
Simulation Physique et Prédiction de Chute
Voici une expérience faite par mes collègues Lerer, Gross et Fergus chez Facebook Research.
Voici une expérience réalisée par mes collègues Lerer, Gross et Fergus chez Facebook Research.
Ils ont produit une interface entre Torch et le moteur Unreal Engine qui inclut la physique.
Ils ont produit une interface entre Torch et le moteur Unreal Engine, qui inclut la physique.
On a interfacé Torch avec Unreal Engine pour gérer la gravité et l'inertie d'objets en collision.
Nous avons interfacé Torch avec Unreal Engine pour gérer la gravité et l'inertie des objets en collision.
Image après une étape de simulation. Ici vous avez trois tubes empilés. On connecte un réseau convolutionnel.
Image après une étape de simulation. Ici, vous avez trois tubes empilés.
Nous connectons un réseau convolutionnel et nous lui demandons de nous dire si cette tour va tomber.
Tout simplement une classification binaire. Dans quelle position se trouveront les cubes ?
Disons à un moment donné ou à la fin.
C'est une sorte de modèle prédictif de la physique par rapport à cette situation.
Bien sûr, vous pouvez le faire facilement car vous pouvez simuler de nombreuses situations.
Voici une image que vous donnez au système, et voici ce qui se passe réellement. Ce sont des masques des blocs.
Le modèle prédictif, un réseau convolutionnel, prédit une image d'un masque.
Le système prédit que ce bloc jaune va tomber dans cette direction.
C'est un peu flou, mais c'est une prédiction raisonnable. Il prédit plus ou moins précisément.
Nous pouvons donc les entraîner on des images virtuelles en utilisant différentes textures et les appliquer à des images réelles.
En utilisant des images réelles provenant d'une caméra vidéo, les prédictions ne sont pas mauvaises. Ça marche à peu près.
Cela ne fonctionne pas parfaitement, mais cela fonctionne.
Ici, il s'est trompé, même si ce n'est pas entièrement.
La tour s'effondre, mais c'est un peu ambigu. On ne voit pas que ce cube était à l'arrière.
On ne voit pas ici que ce cube était à l'arrière.
La précision est de 89 % on les images synthétiques, et un peu moins on les images réelles.
Réseaux Antagonistes Génératifs (GANs)
Cette idée de prédiction est très importante on les prédictions vidéo avec des images naturelles.
Les réseaux antagonistes génératifs d'Ian Goodfellow datent d'environ un an et demi.
Il a eu cette idée alors qu'il était étudiant avec Yoshua Bengio, puis il est allé chez Google et récemment chez OpenAI.
Un réseau discriminateur est entraîné on dire si une image est réelle ou fausse.
Il nous dira si la sortie est une image réelle de la base de données ou une image générée factice.
C'est notre prédicteur. Vous observez quatre images et prédisez la suivante.
Le discriminateur est entraîné on dire si l'image a été générée ou si elle provient de la base de données.
Donc ça.
Nous entraînons le discriminateur et le générateur simultanément.
Le système doit apprendre relativement vite par rapport à l'autre.
La fonction de perte essaie de produire des images que le discriminateur considère comme réelles.
Le générateur obtient un gradient via la rétropropagation indiquant comment rendre l'image réelle.
Donc, se rapprocher de la surface de vraisemblance.
Le générateur récupère la direction et modifie les paramètres on s'en rapprocher.
L'apprentissage antagoniste utilise un discriminateur on distinguer le vrai du faux.
C'est une optimisation où l'on trouve un point de selle, pas seulement un minimum.
C'est un minimum on le discriminateur et un maximum on les paramètres du générateur.
C'est donc un point de selle. C'est difficile à trouver.
Les gens ont découvert des propriétés on que le discriminateur fasse son travail.
Il y a eu des expériences passionnantes on MNIST. Emily Denton a proposé un système de génération d'images.
Une série de co-auteurs de Facebook a proposé un système de génération d'images non conditionnel.
D'une version basse résolution de l'image qui va.
On augmente la résolution et on calcule la différence on obtenir une image laplacienne.
Filtrée.
Le discriminateur nous dit s'il s'agit d'un faux ou d'un vrai à de nombreuses échelles différentes. C'est LAPGAN.
Les générateurs et les discriminateurs ne sont pas partagés, mais cela pourrait être fait.
On a besoin de nonces, de nombres aléatoires, à l'entrée du générateur à chaque couche.
Et à partir de là, il génère une image.
On affine une image basse résolution on générer des résultats raisonnables. Ce n'est cependant pas parfait.
Alec Radford, Luke Metz et Soumith Chintala ont produit DCGAN.
Ils ont entraîné cela on des chambres à coucher. Ces images sont tout à fait raisonnables et extraordinaires.
Elles sont différentes des exemples de la base d'entraînement. La plupart ont un lit ou une fenêtre.
Le fait que cela fonctionne est époustouflant. Cela conduit à la paramétrisation d'une surface de vraisemblance.
Il peut s'agir d'une courbe compliquée avec une topologie compliquée paramétrée par l'apprentissage antagoniste.
En utilisant des nombres aléatoires tirés on un hypercube ou une gaussienne.
C'est une technique très polyvalente qui devrait être utilisée on beaucoup de choses.
Cela revient à avoir une fonction de perte entraînable.
Le code est on Torch. Quelqu'un a entraîné un DCGAN on des personnages de manga.
On peut tirer des nombres aléatoires on produire des personnages de manga ou des trajectoires continues.
Il y a une évolution continue qui change progressivement d'une nature à l'autre.
L'espace des nombres aléatoires est plat, comme uniforme ou gaussien.
Les propriétés arithmétiques sont comme dans word2vec. On peut trouver le vecteur d'entrée par descente de gradient.
On peut reconstruire l'image : homme avec lunettes moins homme sans lunettes plus femme.
Le résultat est une femme avec des lunettes. C'est assez surprenant dans cet espace abstrait.
Direction dans cet espace.
C'est époustouflant.
Prédiction Vidéo et Correction du Flou
Cette méthode peut être utilisée on la prédiction vidéo naturelle.
Un réseau convolutionnel spatio-temporel prend quatre images on prédire les images suivantes.
Les prédictions sont très floues car le système prédit la moyenne de toutes les possibilités.
Un contour peut bouger dans un sens ou dans l'autre, donc il calcule la moyenne.
Une solution est l'apprentissage antagoniste. Il utilise une représentation laplacienne des images.
Un grand réseau convolutionnel est utilisé. Voici les quatre images observées.
Les prédictions avec un critère L1 sont floues. Nous minimisons les positions des contours.
La perte de différence de grain est toujours floue, mais l'apprentissage antagoniste ne l'est pas. Il y a quelques artefacts.
On peut ajuster avec GDL on éviter cela. Cela résout le problème du flou.
Il ne peut pas produire exactement la bonne chose, donc il produit une moyenne. L'apprentissage antagoniste corrige cela.
Les prédictions à long terme échouent toujours, mais nous progressons.
Passer de prédictions floues à des prédictions correctes nous permet de voir les balles bouger.
Voici d'autres exemples où les deux images prédites sont plus ou moins correctes.
Cela devient vite flou, mais on quelques images, on peut réaliser une bonne prédiction.
On a besoin de prédictions dans des espaces de caractéristiques de plus haut niveau on comprendre les personnages et les occlusions.
À un haut niveau, on peut voir des choses comme une fille qui sort du champ.
En fin de compte, le but est qu'un système regarde une vidéo et prédise des événements conceptuels.
S'il peut prédire qui est le meurtrier, ce serait un progrès significatif on l'intelligence artificielle.
Séance de Questions-Réponses
J'ai parlé plus longtemps que prévu. Nous allons avoir une séance de questions-réponses maintenant.
J'espère avoir une connexion. Pas de connexion internet.
Je vais essayer d'utiliser mon téléphone portable. Voyons si ça fonctionne.
Ça fonctionne, mais pas très vite.
Je vais répondre rapidement à quelques questions d'internet puis je passerai à l'auditorium.
Y a-t-il des utilisations théoriques on le deep learning ? Il y a encore beaucoup de travail à faire.
Je couvre cela dans les séminaires. Il y a des lacunes à combler.
Stéphane Mallat en a parlé concernant les réseaux convolutionnels.
Pouvons-nous avoir une vérification formelle comme ce que vous faites, Gérard ? En apprentissage, il est difficile de prouver.
Il faut des années on former un pilote. Former des systèmes fiables est un problème qui n'est pas entièrement résolu.
Le pré-entraînement on une base de données similaire fonctionne bien on des bases de données sans restriction avec peu d'exemples.
Ensuite, on ajuste et on ré-entraîne avec la base de données souhaitée.
Il y a une bonne démonstration dans un système Facebook.
Un groupe Facebook construit des avions à énergie solaire on donner un accès internet aux pays en développement.
Ils ont demandé comment analyser des images satellites. Si vous avez la base de données, cela peut fonctionner.
Ils ont utilisé des réseaux convolutionnels pré-entraînés on reconnaître des images naturelles.
Facebook a un service interne où un groupe peut prendre des réseaux pré-entraînés et entraîner la dernière couche.
Ils l'ont entraîné on estimer la densité de population et l'ont appliqué à une carte du monde.
Ces données seront rendues disponibles cet été. C'est très simple à mettre en œuvre.
Qu'en est-il du deep learning quantique ? Il y a des spéculations selon lesquelles cela peut aider à résoudre les problèmes d'apprentissage.
Des machines comme D-Wave utilisent l'effet tunnel on accélérer la minimisation de fonctions.
Mais je suis sceptique. Ces machines sont chères et ont des limitations majeures.
Il est difficile de rivaliser avec les technologies grand public comme le GPU où des sommes énormes sont investies.
Google explore, mais n'investit probablement pas beaucoup. J'ai mes doutes.
L'informatique quantique pourrait permettre des calculs de plus proches voisins plus rapides à l'avenir.
Le bon sens et l'apprentissage non supervisé n'ont toujours pas été résolus entièrement.
Quelle est la meilleure façon de distribuer les calculs en mini-lots ?
La parallélisation par gradients synchrones divise le mini-lot entre les cartes GPU.
On fait la moyenne des gradients et on met à jour le vecteur de poids. Les méthodes asynchrones ne fonctionnent pas aussi bien.
Google a proposé une méthode où l'on n'attend pas tous les GPU ; on ignore les retardataires.
Les techniques élastiques contraignent les machines on qu'elles ne dérivent pas trop de la moyenne.
La performance dépend du matériel de communication et de l'infrastructure logicielle.
On a besoin d'entraîner de petits réseaux comme cibles.
Voici une question on ceux qui aiment les relations publiques.
Y aura-t-il une démonstration d'apprentissage non supervisé avec un impact comme Deep Blue ou AlphaGo ?
On ne sait pas bien comment mesurer le succès dans l'apprentissage non supervisé. Les critères manquent.
Les images du générateur de chambres ont l'air jolies, mais comment mesurer la performance objectivement ?
Calculer la vraisemblance de la densité ne peut pas fonctionner ; les systèmes ne sont pas forcément probabilistes.
Pourquoi ne pas utiliser des méthodes d'optimisation comme l'essaim de particules ?
C'est beaucoup moins efficace que la descente de gradient, qui vous donne la direction où aller.
Une question porte on la 'connaissance sombre', proposée par Jeff Hinton.
On entraîne un grand réseau puis on l'utilise comme cible on entraîner un réseau plus petit.
Le petit réseau pourrait avoir du mal on trouver le bon minimum s'il était entraîné directement.
Cela fonctionne bien on compresser les réseaux.
D'autres questions ?