J'ai commencé à lire sur les réseaux neuronaux récurrents (RNN) et la mémoire à court terme (LSTM) ... (... oh, pas assez de points de répétition ici pour lister les références ...)
Une chose que je ne comprends pas: il semble toujours que les neurones dans chaque instance d'une couche cachée soient "entièrement connectés" avec chaque neurone dans l'instance précédente de la couche cachée, plutôt que d'être simplement connectés à l'instance de leur ancien moi / moi-même (et peut-être quelques autres).
La connectivité totale est-elle vraiment nécessaire? Il semble que vous pourriez économiser beaucoup de temps de stockage et d'exécution, et «regarder en arrière» plus loin dans le temps, si ce n'est pas nécessaire.
Voici un schéma de ma question ...
Je pense que cela revient à demander s'il est correct de ne garder que les éléments diagonaux (ou quasi-diagonaux) dans la matrice "W ^ hh" des "synapses" entre la couche cachée récurrente. J'ai essayé de l'exécuter en utilisant un code RNN fonctionnel (basé sur la démonstration d'Andrew Trask de l'addition binaire ) - c'est-à-dire, mettre tous les termes non diagonaux à zéro - et cela fonctionnait terriblement, mais en gardant les termes près de la diagonale, c'est-à-dire une bande linéaire système 3 éléments de large - semblait fonctionner aussi bien que la version entièrement connectée. Même quand j'ai augmenté la taille des entrées et la couche cachée .... Alors ... est-ce que j'ai eu de la chance?
J'ai trouvé un article de Lai Wan Chan où il démontre que pour les fonctions d'activation linéaires , il est toujours possible de réduire un réseau à la "forme canonique de Jordan" (c'est-à-dire les éléments diagonaux et voisins). Mais aucune preuve de ce type ne semble disponible pour les sigmoides et autres activations non linéaires.
J'ai également remarqué que les références aux RNN "partiellement connectés" semblent disparaître pour la plupart après 2003 environ, et les traitements que j'ai lus ces dernières années semblent tous supposer une connectivité totale. Alors ... pourquoi ça?
Réponses:
Une raison pourrait être due à la commodité mathématique. Le réseau neuronal récurrent vanille ( type Elman ) peut être formulé comme:
L'équation ci-dessus correspond à votre première photo. Bien sûr, vous pouvez rendre la matrice récurrente éparse pour restreindre les connexions, mais cela n'affecte pas l'idée de base du RNN.U
BTW: Il existe deux types de mémoires dans un RNN. L'un est le poids de l'entrée vers le caché , qui stocke principalement les informations de l'entrée. L'autre est la matrice cachée à cachée , qui est utilisée pour stocker les historiques. Puisque nous ne savons pas quelles parties des histoires affecteront notre prédiction actuelle, le moyen le plus raisonnable pourrait être de permettre toutes les connexions possibles et de laisser le réseau apprendre par lui-même.W U
la source
Vous pouvez utiliser 2 neurones d'entrée si vous les arrangez d'une manière similaire à la transformation rapide de Walsh Hadamard. Un algorithme hors de propos consisterait donc à parcourir le vecteur d'entrée séquentiellement 2 éléments à la fois. Demandez à 2 neurones à 2 entrées d'agir sur chaque paire d'éléments. Mettez la sortie du premier neurone séquentiellement dans la moitié inférieure d'un nouveau tableau vectoriel, la sortie du deuxième neurone séquentiellement dans la moitié supérieure du nouveau tableau vectoriel. Répétez en utilisant le nouveau tableau vectoriel comme entrée. Après que log_base_2 (n) répète un changement dans un seul des éléments d'entrée peut potentiellement changer toutes les sorties. C'est le mieux que vous puissiez faire. n doit être une puissance entière positive de 2.
la source