Saya telah mempelajari arsitektur jaringan saraf siam yang diperkenalkan oleh Yann LeCun dan rekan-rekannya pada tahun 1994 untuk pengakuan tanda tangan ( “Verifikasi tanda tangan menggunakan waktu tunda jaringan saraf siamese” .pdf , NIPS 1994)
Saya memahami ide umum arsitektur ini, tetapi saya benar-benar tidak dapat memahami cara kerja backpropagation dalam kasus ini. Saya tidak dapat memahami apa nilai target dari jaringan saraf, yang akan memungkinkan backpropagation untuk mengatur dengan benar bobot masing-masing neuron.
Dalam arsitektur ini, algoritma menghitung kesamaan cosinus antara representasi akhir dari dua jaringan saraf. Makalah ini menyatakan: "Output yang diinginkan adalah untuk sudut kecil antara output dari dua subnetworks (f1 dan f2) ketika tanda tangan asli disajikan , dan sudut yang besar jika salah satu dari tanda tangan itu palsu ".
Saya tidak dapat benar-benar mengerti bagaimana mereka dapat menggunakan fungsi biner (cosine similarity antara dua vektor) sebagai target untuk menjalankan backpropagation.
Bagaimana backpropagation dihitung dalam jaringan saraf siam?
sumber
Jawaban:
Kedua jaringan berbagi arsitektur yang sama dan tetapi mereka dibatasi untuk memiliki bobot yang sama seperti yang dijelaskan oleh publikasi pada bagian 4 [1].
Tujuan mereka adalah untuk mempelajari fitur-fitur yang meminimalkan kesamaan cosinus antara, vektor output mereka ketika tanda tangan asli, dan memaksimalkannya ketika mereka dipalsukan (ini adalah tujuan backprop juga, tetapi fungsi kerugian sebenarnya tidak disajikan).
Kesamaan cosinus dari dua vektor , adalah ukuran kesamaan yang memberi Anda kosinus sudut di antara mereka (oleh karena itu, outputnya bukan biner). Jika kekhawatiran Anda adalah bagaimana Anda dapat mundur ke fungsi yang menghasilkan benar atau salah, pikirkan kasus klasifikasi biner.cos(A,B)=A⋅B∥A∥∥B∥ A,B
Anda tidak boleh mengubah lapisan output, itu terdiri dari neuron terlatih dengan nilai linier dan abstraksi tingkat tinggi dari input Anda. Seluruh jaringan harus dilatih bersama. Baik output dan dilewatkan melalui fungsi yang menampilkan kesamaan cosinus mereka ( jika mereka mirip, dan jika tidak). Mengingat itu, dan kami memiliki dua set input tuple , contoh fungsi kerugian paling sederhana yang mungkin Anda harus latih adalah:O1 O2 cos(O1,O2) 1 0 XFo r ge d, XG e n u i n e
Setelah Anda melatih jaringan Anda, Anda hanya memasukkan dua tanda tangan yang Anda dapatkan dari dua keluaran fungsi , dan periksa kesamaannya.c o s ( O1, O2)
Akhirnya, untuk menjaga bobot jaringan tetap identik ada beberapa cara untuk melakukan itu (dan mereka juga digunakan dalam Jaringan Syaraf Berulang juga); pendekatan umum adalah rata-rata gradien dari dua jaringan sebelum melakukan langkah pembaruan Gradient Descent.
[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf
sumber