Utilisateur:Renard Arctique/Sparse Coding

Codage Parcimonieux modifier

Le codage parcimonieux (ou sparse coding en anglais) est un type de réseau de neurones à apprentissage non supervisé. Il est basé sur le principe qu'une entrée est approximativement la somme de plein de petits motifs élémentaires.

Définition modifier

 
Exemple de dictionnaire obtenu avec un réseaux de neurones à codage parcimonieux

Plus rigoureusement, considérons une entrée vectorielle  . Alors, considérant qu'on a à notre disposition un dictionnaire de motifs élémentaires  , matrice contenant dans chaque colonne un motif de la même taille que   (  et  ), il existe   tel que  .

Plus généralement, pour un jeu de données de taille  , le problème revient à décomposer la matrice   en produit de deux autres matrices plus simple: la propriété de parcimonie impose qu'il y ait le plus de   possible dans le vecteur de poids alpha ainsi que dans le dictionnaire. Cette condition se traduit par le fait que l'on veut reproduire l'entrée avec le moins de motif possible.[1]

Apprentissage modifier

Pour le codage parcimonieux, on considère souvent la fonction de coût suivante pour une entrée  :

 

Le premier terme correspond à la distance de l'entrée reconstruite par rapport à l'entrée originale tandis que le second terme correspond à la condition de parcimonie.

Toute la difficulté de l'apprentissage pour le codage parcimonieux est d'apprendre à la fois un dictionnaire ainsi que les poids. Pour se faire, on fixe alternativement un des paramètres pour entrainer l'autre à l'aide d'une descente de gradient stochastique.[2]

Amélioration modifier

Des améliorations peuvent être apportées à la construction précédente en rajoutant des conditions sur le dictionnaire ou sur les poids. On peut notamment montrer que l'ajout de l'invariance par translation via une convolution apporte des résultats meilleurs et permettent d'obtenir un dictionnaire plus complexe car il y a moins d'éléments redondants dans celui-ci. [3]

Notes et références modifier

  1. Wiki de Stanford sur le sparse coding : http://ufldl.stanford.edu/wiki/index.php/Sparse_Coding
  2. Julien Mairal, Francis Bach, Jean Ponce et Guillermo Sapiro, « Online Learning for Matrix Factorization and Sparse Coding », dans Journal of Machine Research 11, (lire en ligne).
  3. Site pour obtenir l'article: http://www.mitpressjournals.org/doi/abs/10.1162/NECO_a_00670?journalCode=neco#.V34_QbO_1UQ


[[Catégorie:Apprentissage automatique]] [[Catégorie:Exploration de données]] [[Catégorie:Informatique théorique]] [[Catégorie:Neurone]] [[Catégorie:Réseau de neurones artificiels]]