Question

En ce moment je joue avec des machines Restricted Boltzmann et depuis que je suis à ce que je voudrais essayer de classer les chiffres écrits à la main avec elle.

Le modèle que j'ai créé est maintenant un modèle génératif tout à fait de fantaisie, mais je ne sais pas comment aller plus loin avec elle.

cet article le mot de l'auteur, qui après avoir créé un bon modèle génératif, un « trains alors un classificateur discriminant (c.-à-classificateur linéaire, support Vector machine) au-dessus du RBM en utilisant les échantillons étiquetés » et États furtherly « puisque vous propagez les vecteurs de données aux unités cachées du modèle RBM pour obtenir des vecteurs unitaires cachés, ou une représentation de niveau supérieur des données ». Le problème est que je ne suis pas sûr si je reçois ce droit.

Est-ce que cela veut dire tout ce que je dois faire est de propager l'entrée des unités cachées et là, j'ai ma fonction de RBM pour la classification?

Quelqu'un peut-il expliquer ce processus me?

Était-ce utile?

La solution

Examen des machines à accès restreint Boltzmann

A limité Machine Boltzmann (RBM) est un générative modèle qui apprend une distribution de probabilité sur l'entrée. Cela signifie que, après avoir été formé, la GAR peut générer de nouveaux échantillons de la distribution de probabilité apprise. La distribution de probabilité sur les unités visibles $ \ mathbf {v} $ est donnée par $$ p (\ mathbf {v} \ mi \ mathbf {h}) = \ prod_ {i = 0} ^ V p (v_i \ mi \ mathbf {h}), $$ où $$ p (v_i \ mi \ mathbf {h}) = \ sigma \ left (a_i + \ sum_ {j = 0} ^ H w_ {ji} h_j \ right) $$ et $ \ sigma $ est la fonction sigmoïde, $ $ a_i est le biais du noeud visible $ i $ et $ w_ {ji} $ est le poids à partir de $ h_j $ à $ v_i. A partir de ces deux équations, il en résulte que $ p (\ mathbf {v} \ mid \ mathbf {h}) $ seulement dépend des états cachés $ \ mathbf {h} $. Cela signifie que les informations sur la façon dont un échantillon visible $ \ mathbf {v} $ est généré, doit être stocké dans les unités cachées, les poids et les préjugés.

Utilisation RBMs pour la classification

Lors de l'utilisation RBMs pour les tâches de classification, vous utilisez l'idée suivante: comme les informations sur la façon dont vos données d'entraînement ou de test généré est enregistré dans les unités cachées $ \ mathbf {h} $, vous pouvez extraire ces facteurs sous-jacents par l'alimentation un échantillon de formation dans les unités visibles du RBM, propagent en avant les unités cachées, et utiliser ce vecteur d'unités cachées comme vecteur de caractéristique. Vous ne faites pas en arrière passent aux unités plus visibles.

Ce vecteur caché est juste une version transformée des données d'entrée - cela ne peut rien classer par lui-même. Pour ce faire une classification, vous former tout classificateur (classificateur linéaire, SVM, un réseau de neurones, ou quoi que ce soit d'autre) avec le vecteur au lieu caché des données de formation « brutes » comme entrées.

Si vous construisez un réseau de croyance profonde (DBN) - qui a été utilisé pour pré train profonde action directe des réseaux de neurones de façon non supervisée - vous prendriez ce vecteur caché et l'utiliser comme l'entrée d'un nouveau GAR, que vous pile au-dessus de celui-ci. De cette façon, vous pouvez former la couche par couche réseau jusqu'à atteindre la taille désirée, sans avoir besoin de données étiquetées. Enfin, vous souhaitez ajouter par exemple une couche softmax vers le haut, et former tout le réseau avec rétropropagation sur votre tâche de classification.

Autres conseils

@hbaderts décrit parfaitement l'ensemble du flux de travail. Cependant, il ne peut pas de sens dans le cas où vous êtes complètement nouveau à cette idée. Par conséquent, je vais l'expliquer dans la façon profane (donc, je vais OMETTANT détails):

Pensez aux réseaux profonds en fonction pour transformer vos données. Exemple de transformations incluent la normalisation, en journal des données etc. Les réseaux profonds que vous la formation a plusieurs couches. Chacune de ces couches sont formés en utilisant une sorte d'algorithme d'apprentissage. Pour la première couche, vous passez les données originales que l'entrée et essayer d'obtenir une fonction qui vous redonneront les « mêmes données d'origine » comme la sortie. Cependant, vous ne recevez pas la sortie parfaite. , Vous obtenez donc une version transformée de votre entrée comme la sortie de la première couche.

Maintenant, pour la deuxième couche, vous prenez ces « données transformées » et les transmettre en entrée et répétez le processus d'apprentissage. Vous continuez à le faire pour toutes les couches de votre réseau profond.

Lors de la dernière couche, ce que vous obtenez est une version « transformé » de vos données d'entrée d'origine. Cela peut être considéré abstraction de niveau supérieur de vos données d'entrée d'origine. Notez que, vous ne l'avez pas utilisé les étiquettes / sortie dans votre réseau encore profond. Par conséquent, tout jusqu'à ce point est l'apprentissage non supervisé. Ceci est appelé pré-formation sage couche.

Maintenant, vous voulez former un classificateur / modèle de régression et cela est un problème d'apprentissage supervisé. La façon dont vous atteindre cet objectif est de prendre la « version transformée finale » de votre entrée d'origine de la dernière couche de votre réseau en profondeur et de les utiliser comme entrée à un classificateur (par exemple knn classificateur / softmax classificateur / régression logistique, etc.). Ceci est appelé empilement.

Lorsque vous formez ce classificateur / apprenant la dernière étape, vous propagez tout votre apprentissage dans le réseau complet. Cela garantit que vous êtes en mesure d'apprendre des étiquettes / sorties et modifier les paramètres de la couche sage apprises en conséquence.

Alors, une fois que vous avez votre modèle génératif formé, prenez la sortie de votre modèle génératif et l'utiliser comme entrée à un classificateur / apprenant. Laissez l'erreur circuler à travers l'ensemble du réseau que l'apprentissage continue de sorte que vous pouvez modifier le paramètre de couche sage appris dans les étapes précédentes.

Vous pouvez former RBMs empilés sur vos images, puis former le RBM final sur une concaténation de la sortie de la pile de RBM et les étiquettes. Ensuite, vous pouvez réellement utiliser la GAR pour la classification. Cet article explique par Hinton ++ cette approche Un algorithme d'apprentissage rapide pour les filets de croyance profonde , vous pouvez également jeter un oeil à cette démo

Licencié sous: CC-BY-SA avec attribution
scroll top