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?
machine-learning
neural-networks
unsupervised-learning
deep-learning
autoencoders
RockTheStar
la source
la source
Réponses:
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λ
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 .H H h X
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 .
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.Ls c Lun e H= σ( 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 cW W Ls c
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.
la source
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.
la source
Un codeur fragmenté est un peu comme un demi-encodeur automatique. Un encodeur automatique fonctionne comme suit:
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:
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.
la source
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.
la source