Studiowałem architekturę syjamskiej sieci neuronowej wprowadzonej przez Yanna LeCuna i jego współpracowników w 1994 r. Do rozpoznawania podpisów ( „Weryfikacja podpisu przy użyciu sieci neuronowej z opóźnieniem czasowym syjamskim” .pdf , NIPS 1994)
Zrozumiałem ogólną ideę tej architektury, ale tak naprawdę nie rozumiem, jak działa backpropagacja w tym przypadku. Nie rozumiem, jakie są docelowe wartości sieci neuronowej, które pozwolą na propagację wsteczną w celu prawidłowego ustawienia wag każdego neuronu.
W tej architekturze algorytm oblicza podobieństwo kosinusowe między końcowymi reprezentacjami dwóch sieci neuronowych. Artykuł stwierdza: „Pożądane dane wyjściowe dotyczą niewielkiego kąta między wyjściami dwóch podsieci (f1 i f2), gdy przedstawione są prawdziwe podpisy oraz duży kąt, jeśli jeden z podpisów jest fałszywy ”.
Naprawdę nie rozumiem, w jaki sposób mogliby wykorzystać funkcję binarną (podobieństwo cosinusa między dwoma wektorami) jako cel do uruchomienia propagacji wstecznej.
Jak obliczana jest propagacja wsteczna w syjamskich sieciach neuronowych?
źródło
Odpowiedzi:
Obie sieci mają podobną architekturę, ale są ograniczone do takich samych wag, jak opisano w publikacji w rozdziale 4 [1].
Ich celem jest poznanie funkcji, które minimalizują podobieństwo cosinusowe między ich wektorami wyjściowymi, gdy podpisy są autentyczne, i maksymalizują je, gdy zostaną sfałszowane (jest to również cel wsteczny, ale funkcja straty rzeczywistej nie jest prezentowana).
Podobieństwo cosinus dwóch wektorów jest miarą podobieństwa, która daje cosinus kąta między nimi (dlatego jego wynik nie jest binarny). Jeśli martwisz się, w jaki sposób możesz zastosować funkcję backprop do funkcji, która wypisuje wartość true lub false, pomyśl o przypadku klasyfikacji binarnej.cos(A,B)=A⋅B∥A∥∥B∥ A,B
Nie powinieneś zmieniać warstwy wyjściowej, składa się ona z wyszkolonych neuronów o wartościach liniowych i stanowi abstrakcję twojego wkładu wyższego poziomu. Cała sieć powinna zostać przeszkolona razem. Oba wyjścia i są przekazywane przez funkcję która wyświetla ich podobieństwo cosinus ( jeśli są podobne, i jeśli nie są). Biorąc to pod uwagę, i że mamy dwa zestawy krotek wejściowych , przykładem najprostszej możliwej funkcji straty, z którą możesz trenować, może być:O1 O2 cos(O1,O2) 1 0 XForged,XGenuine
Po wyszkoleniu sieci wystarczy wprowadzić dwa podpisy, a dwa wyjścia je do funkcji i sprawdź ich podobieństwo.cos(O1,O2)
Wreszcie, aby utrzymać identyczne wagi sieci, można to zrobić na kilka sposobów (i są one również stosowane w sieciach neuronowych); powszechnym podejściem jest uśrednianie gradientów dwóch sieci przed wykonaniem kroku aktualizacji Zejście gradientu.
[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf
źródło