নিউরাল নেটওয়ার্কে 1x1 কনভলিউশনটির অর্থ কী?


105

আমি বর্তমানে উদাসিটি গভীর শিখার টিউটোরিয়াল করছি। পাঠ 3 এ তারা 1x1 সমাবর্তন সম্পর্কে কথা বলে। এই 1x1 কনভোলশনটি গুগল ইনসেপশন মডিউলটিতে ব্যবহৃত হয়। 1x1 সমঝোতা কী তা বুঝতে আমার সমস্যা হচ্ছে।

আমি ইয়ান লেকুনের এই পোস্টটিও দেখেছি।

কেউ দয়া করে আমাকে এই ব্যাখ্যা করতে পারেন?


এছাড়াও সম্পর্কিত প্রশ্নটি দেখুন
gkcn

1
এই মডিউলগুলির জন্য এখানে একটি ব্লগ পোস্ট রয়েছে যা 1x1 কনভোলিউশনের বিষয়ে বিস্তারিতভাবে গেছে: হ্যাকাথনপ্রজেক্টস.ওয়ার্ডপ্রেস.কম
२०१/0 /

1
এটি সহজভাবে বলতে গেলে, সম্পূর্ণ ধারণাটি 3 ডি ভলিউমে চ্যানেলের সংখ্যা হ্রাস করা, এইভাবে গণনার গতি বাড়ানো হবে।
ওনারহাঁও

উত্তর:


112

মনে করুন যে আমার কাছে একটি রূপান্তর স্তর রয়েছে যা একটি আকৃতির টেনসারের আউটপুট দেয় :(N,F,H,W)

  • N ব্যাচের আকার
  • F কনভোলজিনাল ফিল্টারগুলির সংখ্যা
  • H,W ডাবলির স্থানিক মাত্রা

ধরুন এই আউটপুটটি 1x1 ফিল্টার, শূন্য প্যাডিং এবং স্ট্রাইড 1 দিয়ে একটি রূপান্তর স্তরে খাওয়ানো হয়েছে Then তারপর এই 1x1 কনভ স্তরটির আউটপুটটি আকৃতিযুক্ত হবে । ( এন , এফ 1 , এইচ , ডাব্লু )F1(N,F1,H,W)

সুতরাং 1x1 রূপান্তরকারী ফিল্টারগুলি ফিল্টার স্পেসে মাত্রা পরিবর্তন করতে ব্যবহার করা যেতে পারে। যদি তবে আমরা ফিল্টার মাত্রায়, যদি মাত্রিকতা হ্রাস করছি , তবে আমরা মাত্রিকতা বাড়িয়ে ।এফ 1 < এফF1>FF1<F

প্রকৃতপক্ষে, গুগল ইনসেপশন নিবন্ধে কনভলিউশনগুলির সাথে আরও গভীরতর হচ্ছে , তারা জানিয়েছেন (সাহসী আমার, মূল লেখকরা নয়):

উপরোক্ত মডিউলগুলির সাথে একটি বড় সমস্যা, কমপক্ষে এই নিখুঁত আকারে, এমনকি 5x5 কনভোলশনের একটি পরিমিত সংখ্যক বৃহত সংখ্যক ফিল্টার সহ একটি কনভোলশনাল স্তরের উপরেও প্রতিরোধমূলক ব্যয়বহুল হতে পারে।

এটি প্রস্তাবিত আর্কিটেকচারের দ্বিতীয় ধারণার দিকে পরিচালিত করে: বিচার্য প্রয়োজনীয়তাগুলি যেখানেই কমপিউটিশিয়াল প্রয়োজনীয়তাগুলি খুব বেশি বৃদ্ধি পাবে সেখানে ন্যায়বিচারের সাথে মাত্রা হ্রাস এবং অনুমান প্রয়োগ করা। এটি এম্বেডিংয়ের সাফল্যের উপর ভিত্তি করে: এমনকি নিম্ন মাত্রিক এম্বেডিংগুলিতে তুলনামূলকভাবে বড় চিত্র প্যাচ সম্পর্কে প্রচুর পরিমাণে তথ্য থাকতে পারে ... ব্যয়বহুল 3x3 এবং 5x5 কনভোলিউশনের আগে হ্রাস গণনা করার জন্য 1x1 কনভোলিউশন ব্যবহৃত হয়। হ্রাস হিসাবে ব্যবহৃত হওয়ার পাশাপাশি এগুলি সংশোধিত লিনিয়ার অ্যাক্টিভেশন ব্যবহার অন্তর্ভুক্ত যা তাদের দ্বৈত-উদ্দেশ্য করে তোলে।

সুতরাং ইনসেপশন আর্কিটেকচারে, আমরা ফিল্টার মাত্রায় মাত্রা হ্রাস করতে 1x1 কনভ্যুশনাল ফিল্টার ব্যবহার করি। আমি উপরে বর্ণিত হিসাবে, এই 1x1 টি রূপান্তরকারী স্তরগুলি সাধারণত ফিল্টার স্পেসের মাত্রা (পরিবর্তন বা হ্রাস) পরিবর্তন করতে ব্যবহার করা যেতে পারে এবং ইনসেপশন আর্কিটেকচারে আমরা দেখি যে এই 1x1 ফিল্টারগুলি মাত্রিকতা হ্রাসের জন্য কতটা কার্যকর হতে পারে, স্পষ্টভাবে ফিল্টার মাত্রিক জায়গাতে স্থানিক মাত্রার স্থান নয়।

সম্ভবত 1x1 রূপান্তরকারী ফিল্টারগুলির অন্যান্য ব্যাখ্যা রয়েছে তবে আমি এই ব্যাখ্যাটি পছন্দ করি, বিশেষত গুগল ইনসেপশন আর্কিটেকচারের প্রসঙ্গে।


3
এটি কি 5x5 রূপান্তরকরণের পূর্বে 1x1 কউন্ডটি পূর্ববর্তী ফিল্টারের মাত্রা 1 টি সংকুচিত করে?
লিওনার্ড লু

1
@ লিওনার্ডলু প্রতিটি 1x1 কার্নেল ফিল্টারের মাত্রা 1 এ হ্রাস করে, তবে আপনার 1x1 কনভ্যুশনে একাধিক কার্নেল থাকতে পারে, সুতরাং "ফিল্টার" সংখ্যাটি আপনার পছন্দ অনুসারে স্বেচ্ছাসেবী হতে পারে।
ফাজলিনী

41

একটি 1x1 কনভোলজেশন কেবল নিজের চারপাশে কিছু না তাকিয়েই এর সমস্ত চ্যানেলগুলির সাথে একটি ইনপুট পিক্সেলকে ম্যাপ করে। এটি প্রায়শই গভীরতার চ্যানেলগুলির সংখ্যা হ্রাস করতে ব্যবহৃত হয়, যেহেতু এটি অত্যন্ত বড় গভীরতার সাথে ভলিউমকে গুণতে প্রায়শই খুব ধীর হয়।

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

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

নীচেরটি প্রায় ~ 3.7x ধীর।

তাত্ত্বিকভাবে নিউরাল নেটওয়ার্ক 'রঙ' করতে পারে যা কোন রঙকে 'ইনপুট' ব্যবহার করে এটি দেখতে ব্রুট ফোর্সকে সবকিছুকে গুণিত করার পরিবর্তে।


18
আমি বলব যে 1x1 মানচিত্র কেবল একটি পিক্সেলকে আউটপুট পিক্সেল হিসাবে নয়, তবে এটি সমস্ত ইনপুট পিক্সেল চ্যানেলকে এক পিক্সালে পতিত করে। প্রথম লাইনে আপনার উদাহরণে, ইনপুটটির জন্য 256 চ্যানেল রয়েছে এবং 1৪ 1x1 কার্নেলের প্রত্যেকটিতে 256 ইনপুট চ্যানেলগুলি কেবল একটি "পিক্সেল" (আসল নম্বর) এ পতিত হয়। ফলাফলটি হ'ল একই স্পেসিয়াল ডাইমেনশন সহ 256 এর পরিবর্তে আপনার কাছে এখন 64 টি চ্যানেল রয়েছে, যা আপনার দ্বিতীয় লাইনের উদাহরণের তুলনায় 4x4 কনভ্যুশলটিকে কম্পিউটারের তুলনায় কম সস্তা করে তোলে।
ফাজলোলিনী

ভাল কথা, পোস্টটি আপডেট করবে :)
ফ্রি ডেব্রুইল

3
আপনি কোথা থেকে 3.7x ধীর পেয়েছেন?
সিএমসিডিগ্রাগনকাই

@ সিএমসিডিগ্রাগনকাই ধরে নিন যে গণনা ব্যয়টি ওজনের সংখ্যার সাথে সমানুপাতিক। পরে ক্ষেত্রে, 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

আমি 1x1 কনভলিউশন বুঝতে না পারার মূল কারণ হ'ল আমি বুঝতে পারি নি যে কনভলিউশন কীভাবে কাজ করেছিল — মূল বিষয়টি হ'ল একাধিক চ্যানেল / ফিল্টারগুলির একটি কনভলিউশন গণনা করা। এটি বুঝতে, আমি এই উত্তরটি দরকারী হিসাবেও পেয়েছি:any

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

বিশেষত, টাইপ ২.২ হ'ল সেখানে কনভোলিউশনের সঠিক বিবরণ।

আর একটি সহায়ক উত্তর:

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

আমি এটি থেকে যে মূল জিনিসটি পেয়েছিলাম তা এখানে:

  • 1x1 কনভ্যুশনে ইনপুটটি সাধারণত পূর্ববর্তী কনভোলিউশন হয় যার আকার x । তবে যদি কনভোলিউশনের শেষ স্তরটিতে ফিল্টার থাকে তবে আপনি একটি আকৃতির ম্যাট্রিক্স পাচ্ছেন । একটি 1x1 সংবর্তন আসলে আকারের একটি ভেক্টর হয় যা পুরো ইমেজ জুড়ে convolves, একটি তৈরি এক্স আউটপুট ফিল্টার। আপনার যদি 1x1 কনভোলিউশন থাকে, তবে 1x1 এর সমস্ত কনভোলিউশনের সমস্ত আউটপুট আকার ।mnf1(m,n,f1)f1mnf2(m,n,f2)
  • সুতরাং একটি 1x1 সংবর্তন অভিমানী , rerepresenting হিসেবে দেখা যেতে পারে মাধ্যমে ফিল্টার ফিল্টার। মাত্রাটি সবচেয়ে দক্ষতার সাথে কীভাবে হ্রাস করা যায় তা নেটওয়ার্ক প্রশিক্ষণ দেয়।f2<f1f1f2

ঠিক আছে, এখন পর্যন্ত এটিই একমাত্র জায়গা যা সঠিকভাবে ব্যাখ্যা করেছে যে 1x1 সমঝোতাটি আসলে সহ একটি 'ডট' পণ্য(m,n,f1)
রেড ফ্লয়েড

3

আমি চিত্রের সাথে আরও স্বজ্ঞাত এবং সংক্ষেপে ব্যাখ্যা করার চেষ্টা করব!

একটি 1 * 1 রূপান্তরকারী ( নেটওয়ার্কে ওরফে নেটওয়ার্ক )?

ধরা যাক আপনার ইনপুটটি (এনএইচ, এন_ডাব্লু, এন_সি_প্রিভ)। আপনি করতে পারেন মনে (1 * 1 * n_c_prev) হিসাবে এর একটি একক স্নায়ুর (ক সম্পূর্ণ সংযুক্ত নেটওয়ার্ক -ie কেন এন / W এন / W মধ্যে ) যে তাদের সাথে গুন ইনপুটে (n_c_prev) সংখ্যায় নিচ্ছে (1 * 1 * n_c_prev ) এবং তারপরে যোগ করুন এবং তারপরে রিলু ও আউটপুট (এনএইচ, এন_ডাব্লু) নেবেন এবং আপনার যদি একাধিক ফিল্টার (এন_সি) থাকে তবে আউটপুট হবে (এনএইচ, এন_ডাব্লু, এন_সি)।

সুতরাং আপনি স্পেসিয়াল মাত্রাগুলি (এনএইচ, এন_ডাব্লু) হ্রাস করতে পুলিং স্তরটি ব্যবহার করতে পারেন এবং এন_সি_প্রিভ (অর্থাত্ চ্যানেলের সংখ্যা) হ্রাস করতে 1 * 1 টি ব্যবহার করতে পারেন যা প্রচুর গণনা সংরক্ষণ করে। উদাহরণ স্বরূপ

এখানে চিত্র বর্ণনা লিখুন

অতএব, একটি গ্রহণ

  • আপনি n_C হ্রাস করতে 1x1 কনভ্যুশনাল স্তরটি ব্যবহার করতে পারেন তবে এনএইচ, এন_ডাব্লু নয়।

  • আপনি এনএইচ, এন_ডাব্লু, এবং এন_সি কমাতে পুলিং স্তর ব্যবহার করতে পারেন।

অন্য কথায়, এখানে চিত্র বর্ণনা লিখুন

  • আপনি 1 * 1 সিওএনভি ফিল্টার ব্যবহার করে যা করছেন? আপনি মূলত "1 * 1 * নাম_ইনপুট_চ্যানেল_ফ_ফ্যাচারম্যাপ" আকারের ওজন এবং কনভলভ করুন (উপাদান অনুসারে + + +) এই ভলিউমের চিত্র / বৈশিষ্ট্যম্যাপের উপর "W H num_input_channel_of_featureMap" আকারে পাবেন এবং যা পাবেন তা "W * H" আকারের আউটপুট।

  • এখন, আপনি এই জাতীয় ধরণের "# ফিল্টার" সংখ্যাটি ব্যবহার করতে পারেন "1 * 1 * নাম_মিনপুট_চ্যানেল_ফ_ফ্যাচারম্যাপ" এবং চূড়ান্ত আউটপুট হিসাবে "ডাব্লু এইচ # ফিল্টার" ভলিউম পেতে পারেন !

  • আরও, স্পষ্টভাবে, আপনি "1 * 1" যেমন 32 টি আলাদা ওজনকে (1 * 1 ভলিউম) এক ধরণের একটি ইনপুট বৈশিষ্ট্য মানচিত্রে একই পজিশনের সাথে গুণ করছেন, তারপরে রিলু এবং সবুজ রঙের পিক্সেল হিসাবে দেখা একক সংযুক্ত নম্বর উত্পন্ন করুন !

  • 1 * 1 সিওএনভি চ্যানেলগুলির সংখ্যা সঙ্কুচিত করতে এবং কয়েকটি নেটওয়ার্কে গণনা (বাছাই) সংরক্ষণ করতে সহায়তা করে!

  • তবে অবশ্যই, আপনি যদি চ্যানেলের সংখ্যাটি ইনপুট বৈশিষ্ট্যের মানচিত্রের মতো রাখতে চান তবে এটি খুব ভাল, 1 * 1 CONV এর একটি জিনিস সহজভাবে এটি প্রয়োগ করা হবে যা এটি জটিল ক্রিয়াকলাপ শিখতে সহায়তা করে Re এন এন


1

1x1 ফিল্টারের প্রসঙ্গে মাত্রিকতা হ্রাস সম্পর্কে আরও একটি ধারণা:

উদাহরণস্বরূপ FCN থেকে 4096x8x8 fc7 স্তর নিন। পরবর্তী স্তরটি (এটিকে fc8 কল করুন) ফিল্টার আকার 1 সহ 2048x8x8 হলে কী হবে? নেটওয়ার্কের অভ্যন্তরে fc7 খুব গভীর, এর 4096 টি বৈশিষ্ট্যগুলির প্রত্যেকটি শব্দার্থগতভাবে সমৃদ্ধ, তবে প্রতিটি নিউরন (যেমন ইনপুট চিত্র 250x250x3 হয়) এর একটি বৃহত্তর গ্রহণযোগ্য ক্ষেত্র রয়েছে। অন্য কথায়, যদি কোনও নিউরন খুব সক্রিয় থাকে তবে আমরা জানি যে এর কোথাও এর শব্দার্থক ক্ষেত্রের সাথে সম্পর্কিত বৈশিষ্ট্য উপস্থিত রয়েছে।

উদাহরণস্বরূপ, 1c1 ফিল্টার সহ fc8 এ বাম-উপরেরতম নিউরনটি ধরুন। এটি কেবল একই গ্রহণযোগ্য ক্ষেত্রের (চিত্রের উপরের-বাম কোণে) সমস্ত 4096 নিউরন / বৈশিষ্ট্যগুলির সাথে সংযোগ স্থাপন করে, যার প্রতিটি একক বৈশিষ্ট্য দ্বারা সক্রিয় করা হয়েছে। এর মধ্যে কিছু (চলুন একই 500) খুব সক্রিয়। যদি ফলাফলের নিউরনটি খুব সক্রিয় থাকে তবে এর অর্থ সম্ভবত এটি গ্রহণযোগ্য ক্ষেত্রের 1 বা আরও বৈশিষ্ট্যগুলি সনাক্ত করতে শিখেছে। আপনি এফসি 8-তে বাম-উপরেরতম নিউরনের জন্য এই 2048 বার কাজ করার পরে, তাদের বেশ কয়েকটি (যেমন 250) খুব সক্রিয় হবে, যার অর্থ তারা একই সংবেদনশীল ক্ষেত্র থেকে এফসি 7 এর মাধ্যমে বৈশিষ্ট্যগুলি সংগ্রহ করেছেন এবং এর থেকে অনেক সম্ভবত আরও এক.

আপনি যদি মাত্রিকতা হ্রাস করতে থাকেন তবে নিউরনগুলির একটি হ্রাসমান সংখ্যা একই গ্রহনকারী ক্ষেত্র থেকে ক্রমবর্ধমান বৈশিষ্ট্যগুলি শিখবে। এবং যেহেতু স্থানিক প্যারামিটারগুলি 8x8 একই থাকে, তাই আমরা প্রতিটি নিউরনের 'দৃষ্টিভঙ্গি' পরিবর্তন করি না, সুতরাং স্থানিক স্থূলতা হ্রাস করি না।

আপনি লং, শেলহামার এবং ড্যারেল দ্বারা 'সম্পূর্ণ কনভলিউশনাল নেটওয়ার্কস' দেখতে চান।


1
আমি মনে করি এটি প্রক্রিয়াটির আরেকটি ভাল স্বীকৃতি, তবে আমি এটিতে ফিরে আসতে চাই কারণ আমি বিভ্রান্তিকর মাত্রাগুলির স্বীকৃতি খুঁজে পেয়েছি এবং বিশেষত "বাম-উপরের অংশের জন্য আপনি 2048 বার এটি করার পরে fc8 এ নিউরন "।
উইলসি

আপনি যা বলতে চাইছেন তা আমি খুব ভাল করে বুঝতে পারি নি, আপনি কি দয়া করে এটি আরও পরিষ্কার করে দিতে পারেন?
মাইকেল হাইডেলবার্গ

0

কনভলিউশনের গাণিতিক ক্রিয়াকলাপটি হ'ল দুটি সম্ভাব্য শিফট-পজিশনে দুটি (অবিচ্ছিন্ন বা বিযুক্ত) ফাংশনের গুণমান গণনা করা।

একটি 2-মাত্রিক (ধূসর-স্তর) চিত্রটিতে একটি স্লাইডিং-উইন্ডো অপারেশন দ্বারা একটি কনভলিউশন সঞ্চালিত হয়, যেখানে উইন্ডো (2-ডি কনভ্যুশন কার্নেল) একটি ম্যাট্রিক্স হয়।v×v

কনভ্যুশনাল নিউরাল নেটওয়ার্ক সহ - নিউরাল নেটওয়ার্কগুলির চিত্র-প্রক্রিয়াকরণ অ্যাপ্লিকেশনগুলিতে পর্যালোচনা করা হয়েছে: [এম। এগমন্ট-পিটারসেন, ডি ডি রিডার, এইচ। হ্যান্ডেলস। নিউরাল নেটওয়ার্কগুলির সাথে চিত্র প্রক্রিয়াকরণ - একটি পর্যালোচনা , প্যাটার্ন রিকগনিশন , ভলিউম। 35, নং 10, পৃষ্ঠা 2279-2301, 2002]।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.