सियामी तंत्रिका नेटवर्क में बैक-प्रचार कैसे काम करता है?


13

मैं हस्ताक्षर की मान्यता के लिए 1994 में यान लेकुन और उनके सहयोगियों द्वारा पेश किए गए सियामी तंत्रिका नेटवर्क की वास्तुकला का अध्ययन कर रहा हूं ( "साइनस समय देरी तंत्रिका नेटवर्क का उपयोग करके हस्ताक्षर सत्यापन"। पीडीएफ , एनआईपीएस 1994)

मैं इस वास्तुकला के सामान्य विचार को समझ गया था, लेकिन मैं वास्तव में यह नहीं समझ सकता कि इस मामले में बैकप्रोपैजेशन कैसे काम करता है। मैं समझ नहीं पा रहा हूं कि तंत्रिका नेटवर्क के लक्ष्य मूल्य क्या हैं, जो बैकप्रोपैजेशन को प्रत्येक न्यूरॉन के वजन को ठीक से निर्धारित करने की अनुमति देगा।

चेन लियू (टोरंटो विश्वविद्यालय 2013) द्वारा "संभावित प्रतिनिधि सीखने के लिए संभाव्य सियाम नेटवर्क" से छवि।

इस आर्किटेक्चर में, एल्गोरिथ्म दो तंत्रिका नेटवर्क के अंतिम अभ्यावेदन के बीच ब्रह्मांडीय समानता की गणना करता है। पेपर कहता है: "वांछित आउटपुट दो सबनेटवर्क (f1 और f2) के आउटपुट के बीच एक छोटे से कोण के लिए होता है जब वास्तविक हस्ताक्षर प्रस्तुत किए जाते हैं। , और एक बड़ा कोण अगर हस्ताक्षर में से एक एक जालसाजी है "।

मैं वास्तव में समझ नहीं पा रहा हूं कि वे बैकप्रोपेगेशन को चलाने के लक्ष्य के रूप में एक बाइनरी फ़ंक्शन (दो वैक्टरों के बीच कॉस्मिक समानता) का उपयोग कैसे कर सकते हैं।

सियामी तंत्रिका नेटवर्क में बैकप्रॉपैगैशन की गणना कैसे की जाती है?


मैं कागज डाउनलोड नहीं कर सकते .... क्या आपके पास एक या ड्रॉपबॉक्स स्रोत है?
ब्रेथोसॉज

जवाबों:


11

दोनों नेटवर्क समान आर्किटेक्चर को साझा करते हैं, लेकिन वे उसी वजन के लिए विवश हैं जैसा कि प्रकाशन खंड 4 [1] में वर्णित है।

उनका लक्ष्य उन विशेषताओं को सीखना है, जिनके बीच कॉसिन समानता को कम करते हैं, उनके आउटपुट वैक्टर जब हस्ताक्षर वास्तविक होते हैं, और अधिकतम जब वे जाली होते हैं (यह बैकपॉप लक्ष्य भी है, लेकिन वास्तविक नुकसान फ़ंक्शन प्रस्तुत नहीं किया गया है)।

Cosine समानतादो वैक्टर , का समानता का एक उपाय है जो आपको उनके बीच के कोण का कोज्या प्रदान करता है (इसलिए, इसका आउटपुट बाइनरी नहीं है)। यदि आपकी चिंता यह है कि आप किसी ऐसे फ़ंक्शन को कैसे बैकपॉप कर सकते हैं जो या तो सही या गलत आउटपुट देता है, तो बाइनरी वर्गीकरण के मामले के बारे में सोचें।cos(A,B)=ABABA,B

आपको आउटपुट लेयर को नहीं बदलना चाहिए, इसमें रेखीय मानों के साथ प्रशिक्षित न्यूरॉन्स होते हैं और यह आपके इनपुट के उच्च-स्तरीय एब्स्ट्रैक्शन है। पूरे नेटवर्क को एक साथ प्रशिक्षित किया जाना चाहिए। दोनों आउटपुट और को फ़ंक्शन के माध्यम से पारित किया जाता है जो उनके समानता ( यदि वे समान हैं, और यदि वे नहीं हैं) को आउटपुट करते हैं। यह देखते हुए कि, और हमारे पास इनपुट दो सेट हैं , सरलतम संभावित नुकसान फ़ंक्शन का एक उदाहरण जिसका आप सामना कर सकते हैं।O1O2cos(O1,O2)10XForged,XGenuine

L=(xA,xB)XForgedcos(xA,xB)(xC,xD)XGenuinecos(xC,xD)

जब आप अपने नेटवर्क को प्रशिक्षित कर लेते हैं, तो आप बस उन दो हस्ताक्षरों को इनपुट करते हैं, जिन्हें आप दो आउटपुट प्राप्त करते हैं, उन्हें फ़ंक्शन में हैं, और उनकी समानता की जांच करते हैं।cos(O1,O2)

अंत में, नेटवर्क वेट को समान बनाए रखने के लिए ऐसा करने के कई तरीके हैं (और उनका उपयोग आवर्तक तंत्रिका नेटवर्क में भी किया जाता है); ग्रेडिएंट डिसेंट अपडेट स्टेप को पूरा करने से पहले दोनों नेटवर्क के ग्रेडिएंट को एवरेज करना है।

[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf


मुझे पता है कि लक्ष्य को कोसाइन समानता को कम करना है, लेकिन मैं यह नहीं समझ सकता कि मुझे अपने तंत्रिका नेटवर्क के आउटपुट लेयर में क्या डालना चाहिए। जब मैं तंत्रिका नेटवर्क बनाता हूं, तो मैं अंतिम आउटपुट परत में लक्ष्य डालता हूं। यदि वे मूल्य हैं, तो यह ठीक है। लेकिन अगर लक्ष्य एक फ़ंक्शन है, तो मुझे भरने के लिए मान कहां मिलेगा? धन्यवाद
DavideChicco.it

मैंने अपना उत्तर अपडेट कर दिया है। आपकी आउटपुट लेयर सिर्फ एक और सामान्य लेयर होगी जो इसे कॉज़िन समानता फ़ंक्शन के लिए आउटपुट करती है। कोसिनिटी समानता फ़ंक्शन से जुड़े दो नेटवर्क को एक साथ एक मानदंड के खिलाफ प्रशिक्षित किया जाना चाहिए। अंत में, मैंने आपको इस मामले में सबसे सरल नुकसान का सुझाव दिया है।
यानिस एसैनल

1
धन्यवाद। मुझे लगता है कि मुझे अपनी समस्या का एहसास हुआ: यह मशाल 7 में इस तंत्रिका नेटवर्क वास्तुकला का कार्यान्वयन है। यहां, तंत्रिका नेटवर्क निर्माण के दौरान प्रशिक्षण और परीक्षण से पहले, मुझे बहुत सी चीजों को निर्दिष्ट करना होगा, जिसमें इनपुट डेटासेट मान और आउटपुट-लक्ष्य परत मान शामिल हैं । अतीत में, मैंने उन पर्यवेक्षित समस्याओं से निपटा, जिनमें हमेशा आउटपुट-टारगेट लेयर वैल्यूज़ (जैसे कि सच / झूठे लेबल, या [0, 1] अंतराल) में वैल्यूज़ थी। लेकिन इस बार यह अलग है: प्रशिक्षण के दौरान गणना की जाने वाली दो मूल्यों के आधार पर आउटपुट परत एक फ़ंक्शन है। क्या ये सही है?
डेविडडेकोको।

वास्तव में इस बार आपके पास आउटपुट लेयर में रैखिक मान हैं बाइनरी नहीं (इसलिए इसका सिर्फ न्यूरॉन का आउटपुट)। इसके अलावा, आपके पास इस मामले में प्रत्यक्ष आउटपुट-लक्ष्य मान नहीं हैं, लेकिन आपके पास अनुकूलन करने के लिए एक हानि फ़ंक्शन है। अंत में, आउटपुट लेयर न्यूरॉन्स (इकाइयों की संख्या मॉडल आर्किटेक्चर द्वारा परिभाषित किया गया है और कागज में संदर्भित है का है। चुने गए सक्रियण फ़ंक्शन (तन, सिग्मॉइड आदि) के आधार पर न्यूरॉन्स क्रमशः रैखिक नहीं बाइनरी सक्रियण [-1,1] या [0,1] है। n o u t p u tnoutputnoutput
यानि असील

साभार @iassael क्या आपके पास मशाल 7 में इसे लागू करने का कोई विचार है?
DavideChicco.it
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.