J'étudie l'architecture du réseau neuronal siamois introduit par Yann LeCun et ses collègues en 1994 pour la reconnaissance des signatures ( "Vérification de signature utilisant un réseau neuronal siamois à retardement" .pdf , NIPS 1994)
J'ai compris l'idée générale de cette architecture, mais je ne comprends vraiment pas comment fonctionne la rétropropagation dans ce cas. Je ne peux pas comprendre quelles sont les valeurs cibles du réseau neuronal, qui permettront à la rétropropagation de définir correctement les poids de chaque neurone.
Dans cette architecture, l'algorithme calcule la similitude en cosinus entre les représentations finales des deux réseaux de neurones. Le papier déclare: "La sortie souhaitée est pour un petit angle entre les sorties des deux sous-réseaux (f1 et f2) lorsque des signatures authentiques sont présentées , et un grand angle si l'une des signatures est un faux ".
Je ne peux pas vraiment comprendre comment ils pourraient utiliser une fonction binaire (similitude cosinus entre deux vecteurs) comme cible pour exécuter la rétropropagation.
Comment la rétropropagation est-elle calculée dans les réseaux neuronaux siamois?
la source
Réponses:
Les deux réseaux partagent les mêmes architectures, mais ils sont contraints d'avoir les mêmes poids que la publication décrit à la section 4 [1].
Leur objectif est d'apprendre des fonctionnalités qui minimisent la similitude de cosinus entre leurs vecteurs de sortie lorsque les signatures sont authentiques et de les maximiser lorsqu'elles sont falsifiées (c'est également l'objectif de backprop, mais la fonction de perte réelle n'est pas présentée).
La similitude cosinus de deux vecteurs , est une mesure de similitude qui vous donne le cosinus de l'angle entre eux (par conséquent, sa sortie n'est pas binaire). Si votre souci est de savoir comment vous pouvez backprop à une fonction qui génère vrai ou faux, pensez au cas de la classification binaire.cos(A,B)=A⋅B∥A∥∥B∥ A,B
Vous ne devriez pas changer la couche de sortie, elle se compose de neurones entraînés avec des valeurs linéaires et c'est une abstraction de niveau supérieur de votre entrée. L'ensemble du réseau doit être formé ensemble. Les deux sorties et sont transmises via une fonction qui leur similitude cosinus ( si elles sont similaires et si elles ne le sont pas). Étant donné que, et que nous avons deux ensembles de tuples d'entrée , un exemple de la fonction de perte la plus simple possible contre laquelle vous pourriez avoir à vous entraîner pourrait être:O1 O2 cos(O1,O2) 1 0 XForged,XGenuine
Après avoir formé votre réseau, vous entrez simplement les deux signatures, vous obtenez les deux sorties, les transmettez à la fonction et vérifiez leur similitude.cos(O1,O2)
Enfin, pour garder les poids du réseau identiques, il existe plusieurs façons de le faire (et ils sont également utilisés dans les réseaux de neurones récurrents); une approche courante consiste à faire la moyenne des gradients des deux réseaux avant d'effectuer l'étape de mise à jour de la descente de gradient.
[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf
la source