Quelles sont les différences entre le codage fragmenté et le codeur automatique?

35

Le codage clairsemé est défini comme l’apprentissage d’un ensemble trop complet de vecteurs de base pour représenter les vecteurs d’entrée (<- pourquoi voulons-nous cela). Quelles sont les différences entre le codage fragmenté et le codeur automatique? Quand utiliserons-nous le codage fragmenté et l'auto-codeur?

RockTheStar
la source
1
Le codage fragmenté constitue en réalité un type spécifique d’auto-décodeur appelé autoencodeur sparse . Vous pouvez donc considérer le codage fragmenté comme un sous-ensemble d'auto-encodeurs, si vous le souhaitez.
HelloGoodbye

Réponses:

34

Il est possible de trouver les différences en consultant les modèles. Regardons d'abord le codage clairsemé.

Codage clairsemé

Le codage clairsemé minimise l’objectif où est une matrice de bases, H est une matrice de codes et est une matrice des données que nous souhaitons représenter. met en œuvre un commerce de faible densité et de reconstruction. Notez que si on nous donne , l'estimation de W est facile via les moindres carrés. WXλ

Lsc=||WHX||22reconstruction term+λ||H||1sparsity term
WXλHW

Au début, nous n'avons pas cependant. Pourtant, de nombreux algorithmes existent qui peuvent résoudre l'objectif ci - dessus par rapport à . En fait, voici comment nous faisons l'inférence: nous devons résoudre un problème d'optimisation si nous voulons connaître le appartenant à un invisible .HHhX

Encodeurs automatiques

Les encodeurs automatiques sont une famille de réseaux de neurones non supervisés. Il y en a beaucoup, par exemple les encodeurs automatiques profonds ou ceux auxquels on associe différentes astuces de régularisation - par exemple, le débruitage, la contractualité, la rareté. Il en existe même des probabilistes, tels que les réseaux stochastiques génératifs ou le codeur automatique variationnel. Leur forme la plus abstraite est mais nous allons suivre une forme beaucoup plus simple pour l'instant: où est une fonction non linéaire telle que le sigmoïde logistique .

((e(X;θr);θ),X)
Lae=||Wσ(WTX)-X||2
σσ(X)=11+exp(-X)

Similitudes

Notez que ressemble presque à une fois que nous avons défini . La différence entre les deux réside dans le fait que i) les encodeurs automatiques n'encouragent pas la fragmentation sous sa forme générale ii) un autoencodeur utilise un modèle pour trouver les codes, tandis que le codage éparse le fait par optimisation.LscLuneeH=σ(WTX)

Pour les données d’image naturelles, les encodeurs automatiques régularisés et le codage clairsemé tendent à produire un très similaire . Cependant, les auto-encodeurs sont beaucoup plus efficaces et peuvent facilement être généralisés à des modèles beaucoup plus complexes. Par exemple, le décodeur peut être hautement non linéaire, par exemple un réseau de neurones profonds. De plus, on n'est pas lié à la perte au carré (dont dépend l'estimation de pour .)W L s cWWLsc

De plus, les différentes méthodes de régularisation donnent des représentations avec des caractéristiques différentes. Il a également été démontré que les auto-encodeurs de Denoising sont équivalents à une certaine forme de RBM, etc.

Mais pourquoi?

Si vous souhaitez résoudre un problème de prédiction, vous n'avez pas besoin d'encodeurs automatiques, à moins que vous ne disposiez que de peu de données étiquetées et de nombreuses données non étiquetées. Dans ce cas, vous ferez généralement mieux de former un encodeur automatique profond et d’ajouter un SVM linéaire au lieu d’entraîner un réseau neuronal profond.

Cependant, ce sont des modèles très puissants pour capturer les caractéristiques des distributions. C’est vague, mais des recherches sont en cours pour en tirer des statistiques solides. Les modèles gaussiens latents profonds, à savoir les codeurs automatiques variationnels ou les réseaux stochastiques génératifs, constituent des moyens assez intéressants d'obtenir des codeurs automatiques qui permettent d'estimer de manière prouvée la distribution de données sous-jacente.

Bayerj
la source
Merci pour votre réponse! Alors, est-ce que cela signifie que le codage clairsemé ne devrait en aucun cas être utilisé, mais autoencoder? En outre, il devrait y avoir un terme supplémentaire dans le codage clairsemé qui régularise W?
RockTheStar
Il n'y a pas de règle générale comme ça. SC présente un avantage par rapport aux AE: l'encodage via l'optimisation peut être très puissant.
Bayerj
Désolé, pouvez-vous élaborer sur ce sujet?
RockTheStar
Avoir une carte fixe qui a été estimée afin de suivre une contrainte (ici: résultat rare) est moins puissant que d'avoir un optimiseur qui essaye de trouver une solution comme celle-ci sur plusieurs itérations.
bayerj
1
Désolé de poser cette question à nouveau. Je pense qu'Autoencoder peut également encourager la parcimonie, c.-à-d.
RockTheStar
11

En neuroscience, le terme «codage neuronal» désigne les schémas d'activité électrique des neurones induits par un stimulus. Le codage fragmenté est à son tour un type de motif. Un code est dit rare lorsqu'un stimulus (comme une image) ne provoque l'activation que d'un nombre relativement petit de neurones, qui, ensemble, le représentent de manière éparse. Dans l'apprentissage machine, la même contrainte d'optimisation utilisée pour créer un modèle de code fragmenté peut être utilisée pour implémenter des autoencodeurs fragmentés, qui sont des autoencodeurs standard formés avec une contrainte de fragmentation. Vous trouverez ci-dessous des explications plus détaillées pour chacune de vos questions.

Le codage clairsemé est défini comme l’apprentissage d’un ensemble trop complet de vecteurs de base pour représenter les vecteurs d’entrée (<- pourquoi voulons-nous cela)

Premièrement, du moins depuis (Hubel & Wiesel, 1968), il est connu que dans la région V1, il existe des cellules spécifiques qui répondent au maximum aux stimuli de type bord (en plus d’avoir d’autres propriétés «utiles»). Le codage fragmenté est un modèle qui explique bien nombre des caractéristiques observées de ce système. Voir (Olshausen & Field, 1996) pour plus de détails.

Deuxièmement, il est en train de montrer que le modèle décrivant le codage fragmenté est une technique utile pour l'extraction de fonctionnalités dans le Machine Learning et donne de bons résultats dans les tâches de transfert d'apprentissage. Raina et al. (2007) ont montré qu'un ensemble de "vecteurs de base" (traits, traits de stylo et bords) appris avec un ensemble d'apprentissage composé de caractères écrits à la main améliore la classification dans une tâche de reconnaissance de chiffres écrite à la main. Des modèles plus récents basés sur le codage clairsemé ont été utilisés pour former des réseaux "profonds", empilant des couches de détecteurs à caractéristiques éparses afin de créer un "réseau de croyances profondes clairsemées" (Lee et al., 2007). Plus récemment, des résultats étonnants en matière de reconnaissance d’image ont été obtenus à l’aide de modèles basés sur le codage fragmenté, permettant de construire un réseau à plusieurs couches (le fameux "Google Brain"), capable de distinguer une image de chat de manière non supervisée (Le et al. , 2013) .

Troisièmement, il est probablement possible d'utiliser la base apprise pour effectuer une compression. A n’avons vu personne le faire vraiment.

Quelle est la différence entre le codage clairsemé et l'auto-codeur?

Un autoencoder est un modèle qui tente de reconstruire son entrée, en utilisant généralement une sorte de contrainte. En conséquence, selon Wikipedia, "est un réseau neuronal artificiel utilisé pour apprendre des codages efficaces". Il n'y a rien dans la définition de l'auto-encodeur exigeant la parcimonie. Les contraintes basées sur le codage clairsemé sont l’une des techniques disponibles, mais il en existe d’autres, par exemple les autoencodeurs de dénoyautage, les autoencodeurs de type Contractive et les RBM. Tout cela fait que le réseau apprend de bonnes représentations de l'entrée (qui sont aussi généralement "éparses").

Quand utiliserons-nous le codage fragmenté et l'auto-codeur?

Vous êtes probablement intéressé par l'utilisation d'un encodeur automatique pour l'extraction de fonctionnalités et / ou la formation préalable de réseaux profonds. Si vous implémentez un autoencoder avec la contrainte de parcimonie, vous utiliserez les deux.

Saul Berardo
la source
Cette réponse comporte de nombreux points intéressants et des références importantes. Cependant, le premier paragraphe est faux . Le codage clairsemé et les encodeurs automatiques clairsemés sont des animaux différents.
bayerj
Où est-il indiqué qu'ils sont la même chose? S'il vous plaît, dites-moi et je corrigerai la réponse.
Saul Berardo
Dans la première phrase.
bayerj
"Le codage fragmenté n'est qu'une des techniques disponibles pour former des auto-encodeurs". Cette phrase ne définit pas le "codage fragmenté" comme étant la même "bête" que le codeur automatique. Il est dit que, parmi toutes les techniques disponibles pour la formation d'auto-encodeurs, l'une d'entre elles est le "codage fragmenté". Je conviens que la phrase présente en effet une certaine ambiguïté, ce qui, à mon avis, est clarifié par le reste de la réponse.
Saul Berardo
Vous dites que le codage clairsemé est une méthode pour former des encodeurs automatiques. Ce n'est clairement pas le cas, car les encodeurs automatiques ont un décodeur explicite qui n'est pas implémenté avec un algorithme d'optimisation. Avec un encodeur automatique arbitraire, vous ne pouvez pas l’entraîner avec un codage fragmenté.
bayerj
1

Un codeur fragmenté est un peu comme un demi-encodeur automatique. Un encodeur automatique fonctionne comme suit:

input  =>  neural net layer  =>  hidden outputs => neural net layer => output

Pour la propagation en retour, le signal d'erreur, la perte, est: entrée - sortie

Si nous appliquons une contrainte de parcimonie sur les sorties masquées, la plupart seront alors des zéros et quelques uns seront des 1. Ensuite, la deuxième couche est essentiellement un ensemble de fonctions de base linéaires, qui sont additionnées, en fonction de quelles sorties cachées sont 1.

En codage clairsemé, nous n’avons que la seconde moitié de ceci:

                                codes => neural net layer => output

Les «codes» sont un ensemble de nombres réels, sélectionnant pour les fonctions de base représentées par les poids dans la couche de réseau neuronal. Comme dans l'article d'Olshausen, ils appliquent une contrainte de parcimonie aux codes, les codes sont, tout comme dans l'auto-encodeur crépu, sparse: la plupart du temps des zéros avec quelques uns.

La différence que nous pouvons maintenant voir clairement: pour le codage clairsemé, il n’existe pas de première moitié du réseau de neurones: les codes ne nous sont pas fournis automatiquement par un réseau de neurones.

Comment pouvons-nous obtenir les codes en codage clairsemé? Nous devons nous-mêmes optimiser, ce que nous faisons en utilisant une descente de gradient ou similaire, pour trouver l'ensemble de codes qui fournit le meilleur résultat de sortie correspondant à l'image d'entrée. Nous devons le faire pour chaque image, y compris pour chaque image testée, à chaque fois.

Hugh Perkins
la source
0

Vous voudrez peut-être lire cet article récent, https://arxiv.org/abs/1708.03735v2 , qui traite précisément de ce même sujet. Dans cet article, les auteurs montrent qu’il est en effet possible de configurer un autoencodeur de telle sorte que le dictionnaire de vérité au sol soit un point critique de la fonction de perte au carré de cet autoencodeur.

étudiant diplômé
la source