Soit un réseau neuronal qui prend en entrée points de données: . On dit que est invariant par permutation si
pour toute permutation .
Quelqu'un pourrait-il recommander un point de départ (article, exemple ou autre article) pour les réseaux de neurones invariants par permutation?
neural-networks
machine-learning
reference-request
Josef Ondrej
la source
la source
Réponses:
Pour autant que je sache, personne n'a essayé cela, en raison de la structure du réseau. Chaque entrée a un ensemble de poids, qui sont connectés à plus d'entrées. Si les entrées changent, la sortie le sera aussi .
Cependant, vous pouvez créer un réseau qui approche ce comportement. Dans votre ensemble de formation, utilisez l'apprentissage par lots et, pour chaque échantillon de formation, donnez toutes les permutations possibles au réseau de sorte qu'il apprenne à être invariant par permutation. Ce ne sera jamais exactement invariant, il pourrait bien être proche .
Une autre façon de procéder consiste à répliquer les poids pour toutes les entrées. Par exemple, supposons que vous ayez 3 entrées (i0, i1, i2) et que la couche cachée suivante a 2 nœuds (hl0, hl1) et la fonction d'activation F. En supposant une couche entièrement connectée, vous avez 2 poids w0 et w1. Les nœuds hl0 et hl1 de la couche cachée sont donnés respectivement par
hl0 = F (i0w0 + i1w0 + i2w0)
hl1 = F (i0w1 + i1w1 + i2w1)
Vous donnant ainsi une couche cachée dont les valeurs sont invariantes par permutation depuis l'entrée. A partir de maintenant, vous pouvez apprendre et construire le reste du réseau comme bon vous semble. Il s'agit d'une approche dérivée des couches convolutives.
Hors sujet, cela semble être un projet sympa. Si vous souhaitez coopérer sur un projet de recherche, contactez-moi (consultez mon profil)
la source
En voici quelques-unes qui pourraient être ce que vous recherchez:
la source
J'ai implémenté Permutational Layer ici en utilisant Keras: https://github.com/off99555/superkeras/blob/master/permutational_layer.py
Vous pouvez appeler la
PermutationalModule
fonction pour l'utiliser.Mis en œuvre à la suite de ce document: https://arxiv.org/pdf/1612.04530.pdf
L'idée est de comparer toutes les paires de N ^ 2 paires de N entrées, d'utiliser le modèle avec des poids partagés, puis d'utiliser la fonction de regroupement N fois sur N entrées. La sortie que vous pouvez utiliser à nouveau le pooling mais dans le papier, ils ne mentionnent pas un autre pooling.
la source