Je viens de lire l'article de Geoff Hinton sur la transformation des encodeurs automatiques
Hinton, Krizhevsky et Wang: Transformer les auto-encodeurs . Dans Artificial Neural Networks and Machine Learning, 2011.
et je voudrais bien jouer avec quelque chose comme ça. Mais après l'avoir lu, je n'ai pas pu obtenir suffisamment de détails du document sur la façon dont je pourrais le mettre en œuvre.
- Quelqu'un sait-il comment le mappage entre les pixels d'entrée et les capsules devrait fonctionner?
- Que doit-il se passer exactement dans les unités de reconnaissance?
- Comment devrait-il être formé? Est-ce juste un accessoire arrière standard entre chaque connexion?
Encore mieux serait un lien vers du code source pour ceci ou quelque chose de similaire.
neural-network
deep-learning
autoencoder
Daniel Slater
la source
la source
Réponses:
J'ai mis en place un exemple de code tensorflow pour aider à expliquer (le code complet et fonctionnel est dans cet esprit ). Ce code implémente le réseau de capsules de la première partie de la section 2 de l'article que vous avez lié:
Cela dépend de la structure du réseau. Pour la première expérience dans cet article (et le code ci-dessus), chaque capsule a un champ récepteur qui inclut l'image d'entrée entière. C'est l'arrangement le plus simple. Dans ce cas, c'est une couche entièrement connectée entre l'image d'entrée et la première couche cachée dans chaque capsule.
Alternativement, les champs récepteurs de la capsule peuvent être arrangés plus comme des noyaux CNN avec des foulées, comme dans les expériences ultérieures de cet article.
Les unités de reconnaissance sont une représentation interne de chaque capsule. Chaque capsule utilise cette représentation interne pour calculer
p
, la probabilité que la caractéristique de la capsule soit présente etxy
les valeurs de traduction déduites. La figure 2 dans ce document est une vérification pour vous assurer que le réseau apprend à utiliserxy
correctement (c'est le cas).Plus précisément, vous devez le former en tant qu'encodeur automatique, en utilisant une perte qui renforce la similitude entre la sortie générée et l'original. L'erreur quadratique moyenne fonctionne bien ici. En dehors de cela, oui, vous devrez propager la descente du gradient avec backprop.
la source