Я изучал архитектуру сиамской нейронной сети, представленной Янном ЛеКуном и его коллегами в 1994 году для распознавания подписей ( «Проверка подписи с использованием сиамской нейронной сети с временной задержкой». Pdf, NIPS 1994)
Я понял общую идею этой архитектуры, но я действительно не могу понять, как работает обратное распространение в этом случае. Я не могу понять, каковы целевые значения нейронной сети, которая позволит обратному распространению правильно устанавливать веса каждого нейрона.
В этой архитектуре алгоритм вычисляет косинусное сходство между окончательными представлениями двух нейронных сетей. В документе говорится: «Требуемый выход для небольшого угла между выходами двух подсетей (f1 и f2), когда представлены подлинные подписи и большой угол, если одна из подписей является подделкой ".
Я не могу понять, как они могли использовать двоичную функцию (косинусное сходство между двумя векторами) в качестве цели для запуска обратного распространения.
Как вычисляется обратное распространение в сиамских нейронных сетях?
источник
Ответы:
Обе сети имеют одинаковую архитектуру, но они имеют одинаковый вес, как описано в разделе 4 [1].
Их цель - изучить особенности, которые минимизируют сходство косинусов между их выходными векторами, когда подписи являются подлинными, и максимизируют его, когда они подделаны (это также является целью backprop, но фактическая функция потерь не представлена).
Вы не должны изменять выходной слой, он состоит из обученных нейронов с линейными значениями и его высокоуровневой абстракции вашего входа. Вся сеть должна быть обучена вместе. Оба выхода и пропускаются через функцию которая выводит их косинусное сходство ( если они похожи, и если нет). Учитывая это и то, что у нас есть два набора входных кортежей , примером простейшей функции возможных потерь, с которой вы могли бы тренироваться, может быть:O1 O2 cos(O1,O2) 1 0 XForged,XGenuine
После того, как вы обучили свою сеть, вы просто вводите две сигнатуры и получаете два выхода, передаете их в функцию и проверяете их сходство.cos(O1,O2)
Наконец, чтобы сохранить вес сети одинаковым, есть несколько способов сделать это (и они также используются в Recurrent Neural Networks); Общий подход заключается в усреднении градиентов двух сетей перед выполнением шага обновления «Градиентный спуск».
[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf
источник