मैट्रिक्स गुणन के स्थान पर कन्वेन्शियल न्यूरल नेटवर्क वास्तव में कनवल्शन का उपयोग कैसे करते हैं?


13

मैं गहराई से सीखने पर यशुआ बेंगियो की किताब पढ़ रहा था और यह पेज 224 पर कहती है:

संवेदी नेटवर्क केवल तंत्रिका नेटवर्क हैं जो कम से कम एक परत में सामान्य मैट्रिक्स गुणन के स्थान पर दृढ़ संकल्प का उपयोग करते हैं।

हालाँकि, मैं गणितीय रूप से सटीक अर्थों में "कन्वेंशन द्वारा मैट्रिक्स गुणा को प्रतिस्थापित करने के तरीके" के बारे में 100% निश्चित नहीं था।

क्या वास्तव में मेरी दिलचस्पी 1D में इनपुट वैक्टर के लिए इसे परिभाषित कर रही है (जैसा कि ) में है, इसलिए मेरे पास चित्र के रूप में इनपुट नहीं है और 2D में कनविक्शन से बचने की कोशिश करें।xRd

उदाहरण के लिए, "सामान्य" तंत्रिका नेटवर्क में, संचालन और फ़ीड वार्ड पैटर्न को स्पष्ट रूप से एंड्रयू एनजी के नोट्स के रूप में व्यक्त किया जा सकता है:

एफ ( जेड ( एल + ) ) = ( एल + )

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

जहां गैर-रैखिकता से गुजरने से पहले वेक्टर की गणना है । गैर-रेखीयता वेक्टर और पर पेरो प्रविष्टि का कार्य करती है, जो प्रश्न में परत के लिए छिपी इकाइयों का आउटपुट / सक्रियण है। f z ( l ) a ( l + 1 )z(l)fz(l)a(l+1)

यह अभिकलन मेरे लिए स्पष्ट है क्योंकि मैट्रिक्स गुणन मेरे लिए स्पष्ट रूप से परिभाषित है, हालांकि, केवल अभिसरण द्वारा मैट्रिक्स गुणन की जगह मेरे लिए अस्पष्ट लगती है। अर्थात

W(l)a(l)=z(l+1)
f(z(l+1))=a(l+1)

मैं यह सुनिश्चित करना चाहता हूं कि मैं उपरोक्त समीकरण को गणितीय रूप से ठीक से समझूं।

पहला मुद्दा जो मेरे पास सिर्फ मैट्रिक्स गुणन को समझाने के साथ है, वह यह है कि आमतौर पर, एक डॉट उत्पाद के साथ की एक पंक्ति की पहचान करता है । तो एक स्पष्ट रूप से जानता है कि संपूर्ण वजन से संबंधित है और आयामों के एक वेक्टर के रूप में द्वारा इंगित किया गया है । हालाँकि, जब कोई इसे संकल्प द्वारा प्रतिस्थापित करता है, तो यह मेरे लिए स्पष्ट नहीं है कि कौन सी पंक्ति या भार में कौन सी प्रविष्टियों से मेल खाती है । यह मेरे लिए भी स्पष्ट नहीं है कि यह वास्तव में एक मैट्रिक्स के रूप में वज़न का प्रतिनिधित्व करने के लिए समझ में आता है (मैं बाद में समझाने के लिए एक उदाहरण प्रदान करूंगा)W(l)a(l)z(l+1)W(l)a(l)

इस मामले में जहां इनपुट और आउटपुट सभी 1 डी में हैं, क्या कोई अपनी परिभाषा के अनुसार सिर्फ एक अनुमान लगाता है और फिर इसे एक विलक्षणता से गुजरता है?

उदाहरण के लिए अगर हमारे पास इनपुट के रूप में निम्नलिखित वेक्टर हैं:

x=[1,2,3,4]

और हमारे पास निम्नलिखित वजन थे (हो सकता है कि हमने इसे बैकप्रॉप के साथ सीखा):

W=[5,6,7]

तब दृढ़ संकल्प है:

xW=[5,16,34,52,45,28]

क्या इसके माध्यम से गैर-रैखिकता को पारित करना सही होगा और परिणाम को छिपी हुई परत / प्रतिनिधित्व के रूप में माना जाएगा (मान लें कि कोई पूलिंग नहीं है )? अर्थात् इस प्रकार है:

f(xW)=f([5,16,34,52,45,28])=[f(5),f(16),f(34),f(52),f(45),f(28)])

(स्टैनफोर्ड यूडीएलएफ ट्यूटोरियल मुझे लगता है कि किनारों को ट्रिम कर देता है, जहां किसी कारणवश 0 के साथ कन्वेंशन काफिले बनते हैं, क्या हमें इसे ट्रिम करने की आवश्यकता है?)

क्या यह है कि यह कैसे काम करना चाहिए? कम से कम 1 डी में एक इनपुट वेक्टर के लिए? क्या कोई वेक्टर नहीं है?W

मैंने भी एक तंत्रिका नेटवर्क को आकर्षित किया कि यह कैसे लगता है कि जैसा मैं सोचता हूं:

यहाँ छवि विवरण दर्ज करें

जवाबों:


3

यह मुझे लगता है जैसे आप सही रास्ते पर हैं, लेकिन शायद मैं स्पष्ट करने में मदद कर सकता हूं।

एकल आउटपुट

चलो इनपुट इकाइयों और 1 आउटपुट के साथ एक पारंपरिक तंत्रिका नेटवर्क परत की कल्पना करते हैं (चलो कोई पूर्वाग्रह नहीं मानते हैं)। इस परत में वेट का एक वेक्टर है जिसे विभिन्न तरीकों (बैकप्रॉप, जेनेटिक एल्गोरिदम, आदि) का उपयोग करके सीखा जा सकता है, लेकिन हम सीखने की उपेक्षा करेंगे और आगे के प्रचार पर ध्यान केंद्रित करेंगे।nwRn

परत एक इनपुट लेती है और इसे के डॉट उत्पाद को साथ गणना करके और फिर एक nonlinearity : लागू करके सक्रिय करतीxRnaRxwσ

a=σ(xw)

यहाँ, के तत्वों के इसी तत्व वजन करने के लिए कितना निर्दिष्ट उत्पादन इकाई के समग्र सक्रियण गणना करने के लिए। आप इसे एक "कनवल्शन" की तरह भी सोच सकते हैं, जहां इनपुट सिग्नल ( ) फिल्टर ( ) के समान लंबाई है ।wxxw

एक दृढ़ सेटिंग में, तुलना में में अधिक मान हैं ; मान लीजिए अब हमारे इनपुट for । हम इस सेटिंग में आउटपुट यूनिट के सक्रियण की गणना सन्निहित सबसेट के साथ के डॉट उत्पाद की गणना करके कर सकते हैं :xwxRmm>nwx

a1=σ(x1:nw)a2=σ(x2:n+1w)a3=σ(x3:n+2w)amn+1=σ(xmn+1:mw)

(यहां मैं क्रॉस-सहसंबंध और दृढ़ संकल्प के बीच एक ही कष्टप्रद भ्रम को दोहरा रहा हूं जो कई तंत्रिका जाल लेखक बनाते हैं; यदि हम इन उचित संकल्पों को बनाने के लिए थे, तो हम के तत्वों को फ्लिप करेंगे । मैं भी "मान्य" मान रहा हूं। कनवल्शन जो केवल गणना तत्वों को बरकरार रखता है जहां इनपुट सिग्नल और फिल्टर पूरी तरह से, यानी बिना किसी पैडिंग के।)w

आपने इसे पहले ही मूल रूप से अपने प्रश्न में डाल दिया है, लेकिन मैं एक बिंदु बनाने के लिए डॉट उत्पाद का उपयोग करके वेनिला न्यूरल नेटवर्क परतों के साथ कनेक्शन के माध्यम से चलने की कोशिश कर रहा हूं। वेनिला नेटवर्क परतों के साथ मुख्य अंतर यह है कि यदि इनपुट वेक्टर भार वेक्टर से अधिक लंबा है, तो एक कन्वेक्शन एक नेटवर्क लेयर के आउटपुट को वेक्टर में बदल देता है - कन्वेक्शन नेटवर्क में, यह सभी तरह से नीचे वैक्टर है! इस लेयर में आउटपुट यूनिट के लिए इस आउटपुट वेक्टर को "फीचर मैप" कहा जाता है।

एकाधिक आउटपुट

ठीक है, तो आइए कल्पना करें कि हम अपने नेटवर्क परत में एक नया आउटपुट जोड़ते हैं, ताकि इसमें इनपुट और 2 आउटपुट हों। एक सदिश होगा पहले उत्पादन, और एक वेक्टर के लिए दूसरा उत्पादन के लिए। (मैं परत आउटपुट को दर्शाने के लिए सुपरस्क्रिप्ट का उपयोग कर रहा हूं।)nw1Rnw2Rn

एक वेनिला परत के लिए, ये सामान्य रूप से एक मैट्रिक्स में एक साथ खड़ी होती हैं, जहां व्यक्तिगत भार वैक्टर मैट्रिक्स के स्तंभ होते हैं। फिर इस परत के आउटपुट की गणना , हम गणना या कम मैट्रिक्स संकेतन में, जहां nonlinearity को एलिमेंट वाइज लागू किया जाता है।W=[w1w2]

a1=σ(xw1)a2=σ(xw2)
a=[a1a2]=σ(xW)

दृढ़ मामले में, हमारी परत के आउटपुट अभी भी एक ही पैरामीटर वैक्टर और साथ जुड़े हुए हैं । एकल-आउटपुट केस की तरह, कनवल्शन लेयर प्रत्येक लेयर आउटपुट के लिए वेक्टर-वैल्यू आउटपुट उत्पन्न करती है, इसलिए इसमें और (फिर से "मान्य" निष्कर्ष)। ये फ़िल्टर मानचित्र, प्रत्येक परत आउटपुट के लिए, आमतौर पर एक मैट्रिक्स में एक साथ स्टैक्ड होते हैं ।w1w2a1=[a11a21amn+11]a2=[a12a22amn+12]A=[a1a2]

यदि आप इसके बारे में सोचते हैं, तो एक मामले में इनपुट को एक मैट्रिक्स के रूप में भी सोचा जा सकता है, जिसमें केवल एक कॉलम ("एक इनपुट चैनल") शामिल है। इसलिए हम इस परत के लिए परिवर्तन को रूप में लिख सकते हैं, जहां "कनवल्शन" वास्तव में एक क्रॉस-सहसंबंध है और केवल और के कॉलम के साथ होता है ।

A=σ(XW)
XW

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

उम्मीद है कि यह उपयोगी है!


1

एक दृढ़ परत एक पूरी तरह से जुड़े नेटवर्क का एक सख्त सबसेट है, अर्थात एक मैट्रिक्स गुणन। फॉरवर्ड पास में एक संकेंद्रित परत वास्तव में एक मैट्रिक्स गुणा के बराबर है जहां:

  • कुछ वजन बंधे / साझा किए जाते हैं
  • कुछ वजन शून्य हैं

बैकवर्ड पास में, वेट्स को अपडेट किया जाएगा, जिसके अनुसार वेट्स ने फॉरवर्ड पास में कितना योगदान दिया है। यानी, जो वज़न शून्य था, अभी भी शून्य है। जिन वज़न को कई आउटपुट में बांधा गया था, उन सभी आउटपुटों में से ग्रेडिएंट प्राप्त होगा (जो ग्रेडिएंट्स को एक साथ जोड़ दिया जाता है, उस वज़न के लिए अंतिम ग्रेडिएंट अपडेट का उत्पादन करने के लिए)।


0

नहीं, यह नहीं है कि यह कैसे काम करने वाला है। कनवल्शन ऑपरेशन हमेशा इनपुट को छोटा बनाता है (आकार> 1 के साथ फ़िल्टर के लिए), आपके उदाहरण में बड़ा नहीं है।

यह केवल एक मूल तत्व गुणन है। इनपुट के पहले 3 तत्वों पर कनवल्शन करते समय, आउटपुट the । ( एक उदाहरण के लिए deeplearning.stanford.edu देखें )15+26+37=38


क्या आपने मैटलैब में ([१, २, ३, ४], [५,६,)]) की कोशिश की? टर्मिनल पर जाएं और इसे स्वयं जांचें। यदि आप कन्वेंशन की पारंपरिक परिभाषा का उपयोग करते हैं तो आप वेक्टर [5,16,34,52,45,28] को हाथ से गणना कर सकते हैं। वेक्टर हमेशा सिकुड़ता नहीं है। यह निर्भर करता है कि आप कहां से कन्वेंशन करना शुरू करते हैं और यदि आप इंडेक्स रेंज के बाहर की चीजों को शून्य मानते हैं। यदि आप इसे करते हैं जैसा कि मैंने इस पोस्ट में सुझाया है तो आपको आकार का वेक्टर मिलेगा । यदि आप किनारों को ट्रिम करते हैं (इंडेक्स की क्यूज़ जो रेंज से बाहर जाती है) तो आपको आकार का एक वेक्टर मिलता है , जहां एन और एन प्रश्न में वैक्टर के आकार के होते हैं। एन - एन + N+n1Nn+1
चार्ली पार्कर

उस वेबपेज में प्रयुक्त कनवल्शन गणितीय कनवल्शन की परिभाषा नहीं है।
चार्ली पार्कर

2
हां, सीएनएन के लिए इस्तेमाल किया जाने वाला कन्वेन्शन सामान्य कनवल्शन नहीं है। यह सभी के लिए भ्रामक है, लेकिन यह सिर्फ इतना ही है :) CNN की प्रकृति को देखते हुए अर्थात एक ऐसी छवि का विश्लेषण करें जो हमेशा पहले तत्वों से शुरू होगी , जहाँ फ़िल्टर का आकार है और फिर इनपुट पर पास किया जाएगा। हालांकि, इसे अंत से आगे नहीं बढ़ाया जाएगा, इसलिए आउटपुट को द्वारा सिकुड़ दिया जाएगा । n n - 1nnn1
पीर

1
मैं देखता हूं, मुझे लगता है कि अब समझ में आता है कि मैंने इसे देखा। हालांकि, एक छोटी सी गलती है। इनपुट हमेशा इसे छोटा नहीं बनाता है, मैं अब और सीएनएन में भी विभिन्न प्रकार के संकल्पों से अवगत हूं, योशुआ बेंगियो की पुस्तक के अनुसार 3 प्रकार के दृढ़ संकल्प हैं (पूर्ण, वैध, समान) iro.umontreal .ca ~ bengioy / dlbook । मैं उन्हें विस्तार से नहीं समझता लेकिन कम से कम मैं उनके बारे में जानता हूँ! धन्यवाद फेल्बो। दृष्टि समुदाय को शब्द संकल्पों का उपयोग नहीं करना चाहिए, इसकी भ्रामक और चिड़चिड़ाहट। कोई बात नहीं धन्यवाद।
चार्ली पार्कर

2
@CharlieParker Matlab में दीक्षांत समारोह में "आकार" (पूर्ण, मान्य, समान) के 3 प्रकार हैं, Matlab सिर्फ "पूर्ण" के लिए चूक करता है - mathworks.com/help/matlab-ref/conv.html पर डॉक्स देखें । कर्नेल को फ़्लिप किए बिना एक दृढ़ विश्वास एक क्रॉस-सहसंबंध है, इसलिए xcorr(x, y) = conv(x, fliplr(y))। जब वे वास्तव में क्रॉस-सह-संबंध कर रहे होते हैं, तो एनएन समुदाय को दोषी ठहराना कहते हैं, लेकिन यह काफी हद तक समान है।
lmjohns3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.