तंत्रिका नेटवर्क में 1x1 दृढ़ संकल्प का क्या अर्थ है?


106

मैं वर्तमान में Udacity डीप लर्निंग ट्यूटोरियल कर रहा हूं। पाठ 3 में, वे 1x1 दृढ़ संकल्प के बारे में बात करते हैं। Google इंसेप्शन मॉड्यूल में 1x1 कनवल्शन का उपयोग किया जाता है। मुझे यह समझने में परेशानी हो रही है कि 1x1 का दोषी क्या है।

मैंने भी इस पोस्ट को देखा है को Yann Lecun द्वारा ।

किसी ने कृपया मुझे यह समझा सकता है?


संबंधित प्रश्न
gkcn

1
इन मॉड्यूलों पर एक ब्लॉग पोस्ट यहां दी गई है जो 1x1 कनफोल्यूशंस पर विस्तार से गई है: hackathonprojects.wordpress.com/2016/09/25/…
टॉमी

1
इसे सीधे शब्दों में कहें, तो पूरा विचार 3 डी वॉल्यूम में चैनलों की संख्या को कम करना है, जिससे गणना में तेजी आती है।
onerhao

जवाबों:


113

मान लीजिए कि मेरे पास एक परत है, जो एक आकार के टेंसर को आउटपुट करता है जहां:(एन,एफ,एच,डब्ल्यू)

  • बैच का आकार हैएन
  • कन्वेन्शनल फिल्टर की संख्या हैएफ
  • स्थानिक आयाम हैंएच,डब्ल्यू

मान लीजिए कि इस आउटपुट को 1x1 फिल्टर, जीरो पैडिंग और स्ट्राइड 1 के साथ एक सजाया परत में खिलाया गया है । तब इस 1x1 कन्टेस्ट लेयर के आउटपुट का आकार ( N , F 1 , H , W ) होगा।एफ1(एन,एफ1,एच,डब्ल्यू)

तो 1x1 कनफर्म फिल्टर का उपयोग फिल्टर स्पेस में आयामीता को बदलने के लिए किया जा सकता है। अगर तो हम डायनेमिकिटी बढ़ा रहे हैं, अगर F 1 < F हम डायमेंशन कम कर रहे हैं, फिल्टर डायमेंशन में।एफ1>एफएफ1<एफ

वास्तव में, Google इनसेप्शन आलेख गोइंग डीपर विद कन्वर्सेशन , वे कहते हैं कि (बोल्ड मेरा है, मूल लेखकों द्वारा नहीं):

उपरोक्त मॉड्यूल के साथ एक बड़ी समस्या, कम से कम इस भोले रूप में, यहां तक ​​कि 5x5 संयोजनों की एक मामूली संख्या भी एक बड़ी संख्या में फिल्टर के साथ एक दृढ़ परत के शीर्ष पर निषेधात्मक रूप से महंगी हो सकती है।

यह प्रस्तावित वास्तुकला के दूसरे विचार की ओर जाता है: विवेकपूर्ण रूप से आयाम में कटौती और अनुमानों को लागू करना जहां भी कम्प्यूटेशनल आवश्यकताओं में बहुत अधिक वृद्धि होगी। यह एम्बेडिंग की सफलता पर आधारित है: यहां तक ​​कि कम आयामी एम्बेडिंग में अपेक्षाकृत बड़ी छवि पैच के बारे में बहुत सारी जानकारी हो सकती है ... महंगी 3x3 और 5x5 संकल्पों से पहले कटौती करने के लिए 1x1 संकल्पों का उपयोग किया जाता है। कटौती के रूप में उपयोग किए जाने के अलावा, वे सुधारित रैखिक सक्रियण का उपयोग भी शामिल करते हैं जो उन्हें दोहरे उद्देश्य से बनाता है।

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

शायद 1x1 कनफर्म फिल्टर की अन्य व्याख्याएं हैं, लेकिन मैं इस स्पष्टीकरण को पसंद करता हूं, विशेष रूप से Google इंसेप्शन आर्किटेक्चर के संदर्भ में।


3
क्या यह है कि 1x1 कन्वे 5x5 कनव को लागू करने से पहले पिछले फिल्टर आयाम को 1 तक संपीड़ित करता है?
लियोनार्ड लू

1
@LeardardLoo प्रत्येक 1x1 कर्नेल फ़िल्टर आयाम को 1 तक कम कर देता है, लेकिन आपके पास 1x1 कनवल्शन में कई कर्नेल हो सकते हैं, इसलिए "फ़िल्टर" की संख्या आपकी पसंद के विपरीत हो सकती है।
फाजोलिनी

43

एक 1x1 कनवल्शन बस एक इनपुट पिक्सेल को मैप करता है जिसके सभी चैनल एक आउटपुट पिक्सेल होते हैं, जो अपने आसपास कुछ भी नहीं देखता है। इसका उपयोग अक्सर गहराई चैनलों की संख्या को कम करने के लिए किया जाता है, क्योंकि यह अक्सर बहुत बड़ी गहराई के साथ मात्राओं को गुणा करने के लिए बहुत धीमा होता है।

input (256 depth) -> 1x1 convolution (64 depth) -> 4x4 convolution (256 depth)

input (256 depth) -> 4x4 convolution (256 depth)

नीचे एक ~ 3.7x धीमा है।

सैद्धांतिक रूप से तंत्रिका नेटवर्क सब कुछ गुणा करने वाले जानवर बल के बजाय इसका उपयोग करने के लिए 'कौन सा इनपुट' रंग चुन सकता है।


19
मैं कहूंगा कि 1x1 मैप्स न केवल एक पिक्सेल को आउटपुट पिक्सेल के लिए, बल्कि यह सभी इनपुट पिक्सेल चैनलों को एक पिक्सेल में ढहता है। पहली पंक्ति में आपके उदाहरण में, इनपुट के लिए 256 चैनल हैं, और 64 1x1 गुठली में से प्रत्येक 256 इनपुट चैनलों को केवल एक "पिक्सेल" (वास्तविक संख्या) तक ढहता है। इसका नतीजा यह है कि आपके पास 256 के बजाय अब एक ही स्थानिक आयाम के साथ 64 चैनल हैं, जो आपके दूसरी पंक्ति के उदाहरण की तुलना में 4x4 कन्वेंशन को कम्प्यूटेशनल रूप से सस्ता बनाता है।
फाजोलिनी

अच्छा बिंदु, पोस्ट को अद्यतन करेगा :)
नि: शुल्क Debreuil

3
आपको 3.7x धीमा कहां से मिला?
CMCDragonkai

@CMCDragonkai मान लें कि गणना लागत भार की संख्या के लिए आनुपातिक है। बाद में मामले में, num_weights = in_depth x out_depth x kernel_size = 256x256x4x4। पहले मामले में, num_weights = 256x64x1x1+64x265x4x4=256x64x17। अनुपात लें और वह 256/17 ~ 3.7 देता है। इनपुट गहराई और आउटपुट गहराई से संबंधित कितना वजन है, इस पर एक विज़ुअलाइज़ेशन के लिए इस पेपर पेज 9 की जांच करें। arxiv.org/pdf/1603.07285.pdf
नेल्सन

11

ny

https://datascience.stackexchange.com/questions/9175/how-do-subsequent-convolution-layers-work

विशेष रूप से, टाइप 2.2 वहाँ एक दृढ़ संकल्प का सही वर्णन है।

एक और उपयोगी जवाब:

https://ai.stackexchange.com/questions/5769/in-a-cnn-does-each-new-filter-have-different-weights-for-each-input-channel-or

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

यहाँ एक वीडियो मिला है जिसने मुझे यह समझने में मदद की कि 1x1 कनवल्शन कैसे काम करता है।

https://www.coursera.org/lecture/convolutional-neural-networks/networks-in-networks-and-1x1-convolutions-ZTb8x

यहाँ मुख्य चीजें हैं जो मुझे इससे मिलीं:

  • n1(,n,1)1n2(,n,2)
  • 2<112

(,n,1)

3

मैं चित्रण के साथ अधिक सहज और संक्षेप में समझाने की कोशिश करूंगा!

एक 1 * 1 कनव ( नेटवर्क में उर्फ नेटवर्क )?

मान लें कि आप इनपुट हैं (n_H, n_W, n_c_prev)। आप एक न्यूरॉन के रूप में (1 * 1 * n_c_prev) के बारे में सोच सकते हैं (एक पूरी तरह से कनेक्टेड नेटवर्क- क्यों N / w में N / w ) इनपुट में उन्हें (n_c_prev) संख्या में ले जा रहा है (1 * 1 * n_c_prev) ) और फिर जोड़ना और फिर ReLu & output (n_H, n_W) लेना और यदि आपके पास कई फ़िल्टर (n_c) हैं तो आउटपुट (n_H, n_W, n_C) होगा।

तो आप स्थानिक आयाम (n_H, n_W) को कम करने के लिए पूलिंग परत का उपयोग कर सकते हैं और n_c_prev (अर्थात चैनलों की संख्या) को कम करने के लिए 1 * 1 का उपयोग कर सकते हैं जो बहुत सारी संगणना को बचाता है। उदाहरण के लिए

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

इसलिए, एक दूर ले जाओ

  • आप n_C को कम करने के लिए 1x1 दृढ़ परत का उपयोग कर सकते हैं लेकिन n_H, n_W नहीं।

  • आप n_H, n_W और n_C को कम करने के लिए पूलिंग लेयर का उपयोग कर सकते हैं।

दूसरे शब्दों में, यहाँ छवि विवरण दर्ज करें

  • क्या आप 1 * 1 CONV फ़िल्टर का उपयोग कर रहे हैं? आप मूल रूप से "1 * 1 * num_input_channel_of_featureMap" साइज वेट एंड कनवॉल्व्ड (एलीमेन्ट * इसके बाद +) इस वॉल्यूम को इमेज / फीचरपाइप ऑफ़ साइज़ "W H H_ numputinchanchan_of_featureMap" पर ले जाते हैं और जो आपको मिलता है वह "W * H" साइज़ का आउटपुट होता है।

  • अब, आप "#filters" नंबर का इस तरह का उपयोग कर सकते हैं "1 * 1 * num_input_channel_of_featureMap" और अंतिम आउटपुट के रूप में "W H #filter" वॉल्यूम प्राप्त करें !

  • अधिक, ठीक है, आप इनपुट फ़ीचर मैप में एक ही स्थिति में एक स्लाइस के साथ "1 * 1" ऐसे 32 अलग-अलग वज़न (1 * 1 वॉल्यूम) को गुणा कर रहे हैं और उसके बाद ग्रीन कलर पिक्सेल के रूप में देखा गया, जो एक ही संगत संख्या उत्पन्न करता है। !

  • 1 * 1 CONV चैनलों की संख्या को कम करने और कुछ नेटवर्क (गणना) में संगणना को बचाने में मदद करता है!

  • लेकिन, निश्चित रूप से, यदि आप चैनलों की संख्या को इनपुट सुविधा के नक्शे के समान ही रखना चाहते हैं, तो यह भी ठीक है, एक बात जो 1 * 1 CONV करता है वह सरल है इसके लिए ReLU गैर-रैखिकता लागू करें जो इसे जटिल कार्यों को सीखने की अनुमति देता है। एन एन


1

1x1 फ़िल्टर के संदर्भ में आयामीता में कमी के बारे में एक और विचार:

उदाहरण के लिए FCN से 4096x8x8 fc7 लेयर लें। यदि अगली परत (इसे fc8 कहते हैं) 2048x8x8 फ़िल्टर आकार 1 के साथ क्या होता है? fc7 नेटवर्क के अंदर बहुत गहरा है, इसकी प्रत्येक 4096 विशेषताएं शब्दार्थ से समृद्ध है, लेकिन प्रत्येक न्यूरॉन (जैसे इनपुट छवि 250x250x3) में एक बड़ा ग्रहणशील क्षेत्र है। दूसरे शब्दों में, यदि एक न्यूरॉन बहुत सक्रिय है, तो हम जानते हैं कि कहीं न कहीं इसके शब्दार्थ क्षेत्र में भी इसी तरह की सुविधा मौजूद है।

उदाहरण के लिए एक 1x1 फ़िल्टर के साथ fc8 में एक बाएं-ऊपरवाला न्यूरॉन लें। यह सभी 4096 न्यूरॉन्स / सुविधाओं को केवल एक ही ग्रहणशील क्षेत्र (छवि के ऊपरी-बाएं कोने) से जोड़ता है, जिनमें से प्रत्येक एक एकल सुविधा द्वारा सक्रिय होता है। उनमें से कुछ (समान 500) बहुत सक्रिय हैं। यदि परिणामस्वरूप न्यूरॉन भी बहुत सक्रिय है, तो इसका मतलब है कि इस ग्रहणशील क्षेत्र में 1 या अधिक विशेषताओं की पहचान करना संभव है। जब आप fc8 में बाएं-ऊपरवाले न्यूरॉन्स के लिए यह 2048 बार कर चुके हैं, तो उनमें से कुछ बहुत अधिक (जैसे 250) बहुत सक्रिय होंगे, जिसका अर्थ है कि उन्होंने fc7 के माध्यम से एक ही ग्रहणशील क्षेत्र से 'एकत्र' किए हैं, और बहुत से बहुत अधिक एक।

यदि आप आयामीता को कम करते रहते हैं, तो एक ही ग्रहणशील क्षेत्र से न्यूरॉन्स की घटती संख्या बढ़ती हुई विशेषताओं को सीख रही होगी। और चूंकि स्थानिक पैरामीटर 8x8 समान हैं, इसलिए हम प्रत्येक न्यूरॉन के 'दृश्य' को नहीं बदलते हैं, इस प्रकार स्थानिक मोटेपन को कम नहीं करते हैं।

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


1
मुझे लगता है कि यह तंत्र का एक और अच्छा अंतर्ज्ञान है, लेकिन मुझे इसमें वापस आना होगा, क्योंकि मुझे भ्रमित करने वाले आयामों के लिए अंकन मिल रहा है, और विशेष रूप से "आपके द्वारा यह 2048 बार बाईं ओर के ऊपरी भाग के लिए किया गया है fc8 में न्यूरॉन्स ”।
विल 13

मैं बहुत अच्छी तरह से समझ नहीं पाया कि आप क्या कहना चाह रहे हैं, क्या आप इसे स्पष्ट कर सकते हैं?
माइकल हीडलबर्ग

0

कन्वेंशन के गणितीय संचालन का अर्थ है सभी संभव बदलाव-पदों पर दो (निरंतर या असतत) कार्यों के उत्पाद की गणना करना।

v×v

तंत्रिका नेटवर्क की छवि-प्रसंस्करण अनुप्रयोग - जिसमें दृढ़ तंत्रिका नेटवर्क शामिल हैं - की समीक्षा की गई है: [एम। एग्मोंट-पीटरसन, डी। डी। रिडर, एच। हैंडल्स। तंत्रिका नेटवर्क के साथ छवि प्रसंस्करण - एक समीक्षा , पैटर्न मान्यता , वॉल्यूम। 35, नंबर 10, पीपी। 2279-2301, 2002]।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.