Pourquoi les auto-encodeurs pour la réduction de dimension sont-ils symétriques?

13

Je ne suis en aucun cas un expert en encodeurs automatiques ou en réseaux de neurones, alors pardonnez-moi si c'est une question stupide.

À des fins de réduction de dimension ou de visualisation de clusters dans des données de haute dimension, nous pouvons utiliser un autoencodeur pour créer une représentation bidimensionnelle (avec perte) en inspectant la sortie de la couche réseau à 2 nœuds. Par exemple, avec l'architecture suivante, nous inspecterions la sortie de la troisième couche

[X]N1=100N2=25(N3=2)N4=25N5=100[X]

est les données d'entrée et N l est le nombre de nœuds dans la l ième couche.XNll

Maintenant, ma question est, pourquoi voulons-nous une architecture symétrique? Un miroir de la phase de «compression» profonde ne signifie-t-il pas que nous pourrions avoir une phase de «décompression» tout aussi complexe résultant en une sortie à 2 nœuds qui n'est pas forcément très intuitive? En d'autres termes, une phase de décodage plus simple n'aurait-elle pas pour conséquence que la sortie de la couche à 2 nœuds serait aussi plus simple?

Je pense ici que moins la phase de décompression est complexe, plus la représentation 2D doit être simple (plus linéaire?). Une phase de décompression plus complexe permettrait une représentation 2D plus complexe.

dcl
la source

Réponses:

13

Il n'y a pas de contrainte spécifique sur la symétrie d'un autoencodeur.

Au début, les gens avaient tendance à appliquer une telle symétrie au maximum: non seulement les couches étaient symétriques, mais aussi les poids des couches dans l'encodeur et le décodeur étaient partagés . Ce n'est pas une exigence, mais cela permet d'utiliser certaines fonctions de perte (c'est-à-dire la correspondance de score RBM) et peut agir comme régularisation , car vous réduisez efficacement de moitié le nombre de paramètres à optimiser. De nos jours, cependant, je pense que personne n'impose le partage du poids codeur-décodeur.

Concernant la symétrie architecturale, il est courant de trouver le même nombre de couches, le même type de couches et les mêmes tailles de couches dans l'encodeur et le décodeur, mais cela n'est pas nécessaire .

Par exemple, dans les autoencodeurs convolutionnels, dans le passé, il était très courant de trouver des couches convolutionnelles dans l'encodeur et des couches déconvolutionnelles dans le décodeur, mais maintenant vous voyez normalement des couches de suréchantillonnage dans le décodeur car elles ont moins de problèmes d'artefacts.

ncasas
la source
7

Votre question est définitivement en place, mais j'ai trouvé que toute question au format "devrais-je faire X ou Y en apprentissage profond?" n'a qu'une seule réponse.

Essayez-les tous les deux

Le deep learning est un domaine très empirique, et si un encodeur automatique non symétrique fonctionne pour votre domaine, alors utilisez-le (et publiez un article)

Ankit Suri
la source
2

J'ai fait une expérience approfondie pour répondre à la question posée. Mes expériences ont indiqué que le chemin de codage (jambe gauche du NN) devrait avoir des couches moins nombreuses mais plus larges. Je prends généralement la moitié des couches, mais le nombre de nœuds a doublé pour le chemin de codage. Je n'ai aucune explication à cela, seules ces configurations ont souvent conduit à une convergence plus rapide.

JamesLi
la source