Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. TensorFlow et Keras
  3. Améliorations du modèle
Extrait - TensorFlow et Keras L'intelligence artificielle appliquée à la robotique humanoïde
Extraits du livre
TensorFlow et Keras L'intelligence artificielle appliquée à la robotique humanoïde
1 avis
Revenir à la page d'achat du livre

Améliorations du modèle

Convolution et pooling

1. Convolution

En observant les images du dataset MNIST, il apparaît que les critères de distinction entre les chiffres ne relèvent pas de détails de l’image, mais plutôt de la répartition des masses encrées par rapport aux masses non écrites. On peut en déduire qu’un traitement de ces images qui consisterait à uniformiser et dépixéliser ces zones pourrait faciliter la recherche de features significatives par notre algorithme.

Cela revient tout simplement à transformer l’image en remplaçant chacun de ses pixels par la valeur moyenne des pixels de la zone qui entoure le pixel courant. 

C’est exactement la même démarche intellectuelle que pour la construction d’une moyenne mobile : en tout point d’une série temporelle, par exemple un cours de bourse, la moyenne mobile représente la valeur moyenne des périodes proches, ce qui a pour effet de produire une courbe lissée et comportant moins d’aspérités.

Cette façon de procéder est un exemple, parmi d’autres, de ce que l’on appelle une convolution. Une convolution peut opérer sur plusieurs dimensions, par exemple :

  • Pour une série temporelle, une convolution opère sur une dimension (ici le temps).

  • Pour une image en noir et blanc, une convolution opère en deux dimensions (hauteur * largeur).

  • Pour une image en couleur codée en couches de couleur (une couche par couleur), une convolution opère en 3 dimensions (hauteur * largeur * couche).

  • Pour une séquence vidéo en couleur une convolution opère en 4 dimensions (temps * largeur * hauteur * couche).

Ces convolutions sont souvent de simples opérations de filtrage, à savoir le calcul du tenseur comportant en tout point le produit scalaire d’un petit tenseur constant qui matérialise le filtre et du tenseur sur lequel on effectue la convolution, mais recentré en ce point (i.e. après l’avoir décalé, pour les séries temporelles ce décalage est souvent appelé lag).

Pour renforcer votre intuition sur ce que représente une convolution, mais sans chercher à interpréter en détail la signification de l’expression suivante, retenez que l’expression...

Batch normalization

L’idée de la normalisation des données est très courante : typiquement, on effectue un recentrage des données en soustrayant une valeur adéquate (comme la moyenne), puis on normalise l’étendue des valeurs en divisant par une valeur caractéristique de l’étendue des données (typiquement : l’écart type, l’étendue du domaine de définition des données…).

Les techniques d’optimisation utilisées lors de l’apprentissage voient parfois leur biais augmenter de façon importante, ce qui dégrade la convergence de l’apprentissage. Les techniques de normalisation s’avèrent un antidote correct contre certains de ces problèmes de biais.

L’algorithme de batch normalization par couche réintroduit une normalisation étape par étape et vous fait profiter de ce mécanisme tout au long des parties du processus d’apprentissage sur lequel vous déplorez une instabilité de convergence.

De grandes différences de comportement de votre algorithme peuvent constituer un indice de non-stabilité de votre processus d’optimisation. Les causes d’instabilité sont variées (topologie des données ou des feature maps, mauvais comportement des gradients, observation pivot… et biais). Pour aller plus...

Data augmentation

Des données, encore des données ! Pour mieux entraîner un modèle, la solution réside souvent dans le fait de trouver de nouvelles données.

Dans le cas des images comme nos digits, on comprend bien qu’une petite perturbation de l’image, comme une rotation autour de son centre de moins de 20° ou une légère déformation ne devrait pas changer le label (i.e. la valeur du chiffre à reconnaître). Notez qu’une symétrie, ou un effet miroir seraient sans doute mal adaptés ici !

L’idée est donc de créer de nouvelles données en perturbant les anciennes. L’article (images/russe.png 2016), qu’il faut lire, explique clairement comment nous arrivons aujourd’hui aux limites de la reconnaissance des digits dans MNIST (0,21 % d’erreur) avec une performance équivalente à l’humain. Ses auteurs soutiennent la thèse que la data augmentation est une des rares solutions résiduelles pour dépasser des taux comme 0,3 % et créer un modèle qui ne soit pas structurellement surdéterminé.

L’article utilise une notation que vous retrouverez souvent, dans l’esprit si ce n’est dans la forme, et qu’il convient donc de savoir interpréter rapidement :

  • images/eq223.PNG pour stipuler i couches de convolution (ConvLs),
  • images/eq224.PNG pour i couches de pooling, Maximum pooling layers (MPLs),
  • images/eq225.PNG pour une Rectified linear unit layer (ReLu),
  • images/eq226.PNG pour une softmax layer (SML),
  • images/eq227.PNG pour une dropout layer (DOLs),
  • images/eq228.PNG pour les données initiales (file),
  • images/eq229.PNG pour les données initiales (file), avec des indices hauts pour rappeler que le training fait 60 000 observations,
  • images/eq230.PNG pour les données initiales (file), où images/eq231.PNG est une chaîne de caractères utilisée pour décrire les transformations sur les données comme Sc pour scale, Rt pour rotate, Sf pour shift.

La description résumée de notre dernier CNN (Convolution Neural Networks), du paragraphe...

Bibliographie du chapitre

Dong, Hao, Akara Supratak, Luo Mai, Fangde Liu, Axel Oehmichen, Simiao Yu, and Yike Guo. 2017. "TensorLayer: A Versatile Library for Efficient Deep Learning Development." ACM Multimedia. http://tensorlayer.org.

Ioffe, Sergey, and Christian Szegedy. 2015. "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift," February. http://arxiv.org/abs/1502.03167.

Simard, Patrice Y, Dave Steinkraus, and John C Platt. 2003. "Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis."

images/russe2.png 2016. "Training Data Expansion and Boosting of Convolutional Neural Networks for Reducing the MNIST Dataset Error Rate." Research Bulletin of the National Technical University of Ukraine "Kyiv Polytechnic Institute" 0 (6): 29-34. https://doi.org/10.20535/1810-0546.2016.6.84115.