Evolution et utilisations des ConvNets et « pourquoi l'apprentissage profond » ?

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$
🎙️ Yann Le Cun

Evolution des ConvNets

Dans le cerveau des animaux, les neurones réagissent aux bords qui ont des orientations particulières. Les groupes de neurones qui réagissent aux mêmes orientations sont reproduits sur l’ensemble du champ visuel.

En se basant sur deux concepts, Fukushima (1982) a construit un réseau de neurones qui fonctionne de la même manière que le cerveau. Premièrement, les neurones sont répliqués sur l’ensemble du champ visuel. Deuxièmement, il existe des cellules complexes qui regroupent les informations provenant de cellules simples (unités d’orientation-sélection). Par conséquent, le déplacement de l’image modifie l’activation des cellules simples mais n’influence pas l’activation intégrée de la cellule complexe (le pooling convolutif).

Yann Le Cun (1990) a utilisé la rétropropagation pour entraîner un ConvNet à reconnaître les chiffres manuscrits. Il existe une démo de 1993 où l’algorithme reconnaît les chiffres de n’importe quel style. La reconnaissance de caractères/motifs à l’aide d’un modèle entraîné de bout en bout était nouvelle à l’époque. Auparavant, les gens utilisaient des extracteurs de caractéristiques avec un modèle supervisé par-dessus.

Ces nouveaux systèmes ConvNets pouvaient reconnaître plusieurs caractères dans l’image en même temps. Pour ce faire, les gens utilisaient une petite fenêtre de saisie pour un ConvNet et la glissaient sur toute l’image. Si elle s’activait, cela signifiait qu’un caractère particulier était présent.

Plus tard, cette idée a été appliquée à la détection des visages/personnes et à la segmentation sémantique (classification au niveau du pixel). Citons par exemple Hadsell (2009) et Farabet (2012). Cette méthode a fini par devenir populaire dans l’industrie, utilisée dans des applications de conduite autonome telles que le suivi de voie.

Les capacités de calcul pour entraîner un ConvNet étaient un sujet brûlant dans les années 1980, puis l’intérêt a chuté, et est maintenant redevenu populaire.

La révolution de l’apprentissage profond (bien que le terme ne soit pas utilisé à l’époque) a commencé en 2010-2013. Les chercheurs se sont concentrés sur l’invention d’algorithmes qui pourraient aider à entraîner plus rapidement les gros ConvNets. Krizhevsky (2012) a conçu AlexNet, qui était un ConvNet beaucoup plus grand que ceux utilisés auparavant, et l’a entraîné sur ImageNet (1,3 million d’échantillons) en utilisant des GPUs. Après quelques semaines de fonctionnement, AlexNet a largement dépassé les performances des meilleurs systèmes concurrents avec un taux d’erreur pour les 5 premières sorties du modèle (Top-5 error rate) de 16,4% contre 25,8% pour les autres.

Après avoir vu le succès d’AlexNet, la communauté de la vision par ordinateur (souvent abrégée en CV en anglais pour Computer Vision) a été convaincue que les ConvNets fonctionnent. Alors que tous les articles de 2011-2012 mentionnant les ConvNets étaient alors rejetés, depuis 2016 la plupart des papiers acceptés utilisent les ConvNets.

Au fil des ans, le nombre de couches utilisées a augmenté : 7 pour LeNet, 12 pour AlexNet, 19 pour VGG, 50 pour ResNet. Toutefois, il y a un compromis à faire entre le nombre d’opérations nécessaires pour calculer le résultat, la taille du modèle et sa précision. Ainsi, un sujet actuellement populaire est de savoir comment comprimer les réseaux pour rendre les calculs plus rapides.

Apprentissage profond et extraction de caractéristiques

Les réseaux multicouches ont du succès parce qu’ils exploitent la structure des données naturelles (la parole, les images, le texte). Dans la hiérarchie des compositions, les combinaisons d’objets à une couche de la hiérarchie forment les objets de la couche suivante. Si nous imitons cette hiérarchie sous forme de couches multiples et que nous laissons le réseau apprendre la combinaison de caractéristiques appropriée, nous obtenons ce que l’on appelle l’architecture d’apprentissage profond. Ainsi, les réseaux d’apprentissage profond sont de nature hiérarchique.

Les architectures d’apprentissage profond ont conduit à un progrès incroyable dans les tâches de vision par ordinateur, allant de l’identification et de la génération de masques précis autour d’objets à l’identification des propriétés spatiales d’un objet. Les architectures Mask-RCNN et RetinaNet ont principalement conduit à cette amélioration.

Mask-RCNN est utilité dans la segmentation d’objets individuels, c’est-à-dire la création de masques pour chaque objet d’une image. L’entrée et la sortie sont toutes deux des images. L’architecture peut également être utilisée pour faire de la segmentation d’instance, c’est-à-dire identifier différents objets du même type dans une image. Detectron, un système logiciel de Facebook AI Research (FAIR), met en œuvre tous ces algorithmes de détection d’objets de pointe et est open source.

Certaines des applications pratiques des ConvNets sont l’aide à la conduite et l’analyse d’images médicales.

Bien que les sciences et les mathématiques qui sous-tendent l’apprentissage profond soient assez bien comprises, il reste quelques questions intéressantes qui nécessitent davantage de recherche. Ces questions sont les suivantes :

  • Pourquoi les architectures à plusieurs couches sont-elles plus performantes, étant donné que nous pouvons approximer n’importe quelle fonction avec deux couches ?
  • Pourquoi les ConvNets fonctionnent-ils aussi bien avec des données naturelles telles que la parole, les images et le texte ?
  • Comment sommes-nous capables d’optimiser aussi bien les fonctions non convexes ?
  • Pourquoi les architectures surparamétrées fonctionnent-elles ?

L’extraction de caractéristiques consiste à élargir la dimension de représentation de telle sorte que les caractéristiques élargies aient plus de chances d’être linéairement séparables (en raison de l’augmentation du nombre de plans de séparation possibles).

Auparavant, les experts en apprentissage machine s’appuyaient sur des caractéristiques de haute qualité, artisanales et spécifiques à une tâche afin de construire des modèles d’intelligence artificielle. Mais avec l’avènement de l’apprentissage profond, les modèles sont capables d’extraire automatiquement les caractéristiques génériques. Certaines approches courantes utilisées dans les algorithmes d’extraction de caractéristiques sont mises en évidence ci-dessous :

  • Pavage de l’espace (Space tiling)
  • Projections aléatoires (Random Projections)
  • Classifieur polynomial (Polynomial Classifier)
  • Fonctions radiales (Radial basis functions)
  • Machines à noyaux (Kernel Machines)

En raison de la nature compositionnelle des données, les traits appris ont une hiérarchie de représentations avec un niveau d’abstraction croissant. Par exemple :

  • pour les images:
    Au niveau le plus granulaire, les images peuvent être considérées comme des pixels. La combinaison de pixels constitue des bords qui, lorsqu’ils sont combinés, forment des textons (formes à bords multiples). Les textons forment des motifs et les motifs font partie de l’image. En combinant ces parties ensemble, on obtient l’image finale.
  • pour le texte:
    De même, il existe une hiérarchie inhérente aux données textuelles. Les caractères forment des mots, lorsque nous combinons des mots ensemble, nous obtenons des groupes de mots, puis en les combinant nous obtenons des phrases. Les phrases nous disent finalement quelle histoire est véhiculée.
  • pour la parole:
    Dans la parole, les échantillons composent des bandes, qui composent des sons, puis des phonèmes, puis des mots entiers, puis des phrases, montrant ainsi une hiérarchie claire dans la représentation.

Apprendre les représentations

Certaines personnes rejettent l’apprentissage profond car si nous pouvons approcher n’importe quelle fonction avec deux couches, pourquoi en avoir plus ?

Par exemple, les SVMs (de l’anglais support vector machines, pouvant être traduit en français par machines à vecteurs de support) trouvent un hyperplan de séparation dans l’étendue des données. Cela signifie que les prédictions sont basées sur des comparaisons avec des exemples d’entraînement. Les SVMs peuvent être vues comme un réseau neuronal à deux couches très simpliste, où la première couche définit des « pochoirs » et la seconde couche est un classifieur linéaire. Le problème avec deux couches est que la complexité et la taille de la couche intermédiaire sont exponentielles en $N$ (pour réussir une tâche difficile, il faut BEAUCOUP de modèles). Mais si vous augmentez le nombre de couches à $\log(N)$, les couches deviennent linéaires en $N$. Il y a un compromis entre le temps et l’espace.

Une analogie consiste à concevoir un circuit pour calculer une fonction booléenne avec un maximum de deux couches de portes : nous pouvons calculer toute fonction booléenne de cette façon ! Mais, la complexité et les ressources de la première couche (nombre de portes) deviennent rapidement inutilisables pour les fonctions complexes.

Qu’est-ce que la « profondeur » ?

  • Une SVM n’est pas profonde car ne comporte que deux couches
  • Un arbre de classification n’est pas profond car chaque couche analyse les mêmes caractéristiques (brutes)
  • Un réseau profond comporte plusieurs couches et les utilise pour construire une hiérarchie de caractéristiques d’une complexité croissante

Comment les modèles peuvent-ils apprendre les représentations (les bonnes caractéristiques) ?
L’ensemble des images possibles est essentiellement infini, l’ensemble des images « naturelles » est un minuscule sous-ensemble. Par exemple : pour une image d’une personne, l’ensemble des images possibles est de l’ordre de grandeur du nombre de muscles du visage qu’elle peut bouger (degrés de liberté) soit environ 50. Un extracteur de caractéristiques idéal (et irréaliste) représente tous les facteurs de variation (chacun des muscles, éclairage, etc.). C’est l’hypothèse de la multiplicité : les données naturelles vivent dans une multiplicité à faible dimension.

Réponses aux questions d’étudiants :
Pour l’exemple du visage, l’ACP qui est une technique de réduction de la dimensionnalité pourrait-elle extraire ces traits ?

Cela ne fonctionnerait que si la surface est un hyperplan, ce qui n’est pas le cas.


📝 Marina Zavalina, Peeyush Jain, Adrian Pearl, Davida Kollmar
Loïck Bourdois
27 Jan 2020