Estudei a arquitetura da rede neural siamesa introduzida por Yann LeCun e seus colegas em 1994 para o reconhecimento de assinaturas ( “Verificação de assinatura usando uma rede neural siamese com atraso de tempo” .pdf , NIPS 1994)
Entendi a idéia geral dessa arquitetura, mas realmente não consigo entender como a retropropagação funciona nesse caso. Não consigo entender quais são os valores-alvo da rede neural, que permitirão que a retropropagação defina adequadamente os pesos de cada neurônio.
Nesta arquitetura, o algoritmo calcula a semelhança de cosseno entre as representações finais das duas redes neurais. O artigo afirma: "A saída desejada é para um pequeno ângulo entre as saídas das duas sub-redes (f1 e f2) quando são apresentadas assinaturas genuínas. e um grande ângulo se uma das assinaturas for uma falsificação ".
Eu realmente não consigo entender como eles poderiam usar uma função binária (semelhança de cosseno entre dois vetores) como alvo para executar a retropropagação.
Como a retropropagação é calculada nas redes neurais siamesas?
fonte
Respostas:
Ambas as redes compartilham arquiteturas semelhantes e, porém, são limitadas a ter os mesmos pesos que a publicação descreve na seção 4 [1].
Seu objetivo é aprender recursos que minimizem a semelhança de cosseno entre seus vetores de saída quando as assinaturas são genuínas e maximizem quando forjadas (esse também é o objetivo do backprop, mas a função de perda real não é apresentada).
Você não deve alterar a camada de saída, ela consiste em neurônios treinados com valores lineares e é uma abstração de nível superior da sua entrada. Toda a rede deve ser treinada em conjunto. Ambas as saídas e são passadas por uma função que gera sua semelhança de cosseno ( se forem semelhantes e se não forem). Dado isso, e que temos dois conjuntos de tuplas de entrada , um exemplo da função de perda possível mais simples com a qual você poderia treinar poderia ser:O1 O2 cos(O1,O2) 1 0 XForged,XGenuine
Depois de treinar sua rede, basta inserir as duas assinaturas e obter as duas saídas, passar para a função e verificar sua similaridade.cos(O1,O2)
Finalmente, para manter os pesos de rede idênticos, existem várias maneiras de fazer isso (e elas também são usadas em redes neurais recorrentes); Uma abordagem comum é calcular a média dos gradientes das duas redes antes de executar a etapa de atualização do Gradient Descent.
[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf
fonte