মূল ধারণা।
map-টিকে টালিতে কাটুন — এখানে 2×2, 3×3 বা 4×4 — আর প্রতিটি টালিকে একটি সংখ্যা
দিয়ে বদলে দিন। Max pooling টালির সবচেয়ে বড় সংখ্যাটি রাখে; average pooling রাখে গড়।
তারপর window একটি পুরো টালি ডানে লাফ দেয় (stride window-এর সমান), তাই কোনো সংখ্যা দুবার দেখা হয় না। একটি
2×2 window প্রতি চারটি সংখ্যা থেকে একটি রাখে।
filter-এর মতো নয়, pooling-এর কোনো weight নেই। শেখার কিছু নেই, window-এর মাপ ছাড়া ঠিক করারও কিছু নেই
— এটি একটি নির্দিষ্ট নিয়ম।
CNN-এ এটি কোথায় বসে।
সাধারণ ক্রম হলো filter → ReLU → pool, তারপর আবার একই। pooling দুটি কাজ করে। এটি map ছোট করে, তাই
পরের layer-কে কম সংখ্যা নিয়ে কাজ করতে হয়। আর এর ফলে পরের layer-এর প্রতিটি pixel মূল ছবির একটি বড় অংশের
প্রতিনিধি হয়, তাই দুই layer নিচের একটি 3×3 filter আসলে অনেক বড় এলাকা দেখে। max pooling
“এই edge ঠিক কোথায়?”-এর চেয়ে সহজ একটি প্রশ্নও করে — সে জিজ্ঞেস করে “এই টালির কোথাও
কি একটি edge আছে?”
যা চেষ্টা করে দেখার মতো:
1. Cat, Outline + ReLU, Whole map, আর Max ও Average-এর মধ্যে
বদল করুন। গোঁফগুলো মাত্র এক-দুই pixel চওড়া, তাই প্রতিটি টালির একটি অংশ ভরে। Max সেগুলোকে পুরো উজ্জ্বলতায়
রাখে, 255; Average আশপাশের অন্ধকারের সঙ্গে মিশিয়ে দেয়, আর সবচেয়ে উজ্জ্বল গোঁফের টালি নেমে আসে প্রায় তার
অর্ধেকে।
2. Max, 2×2-এ থেকে প্রতিটি sweep-এর পরে Pool again চাপুন। map হয়
118×88 → 59×44 → 29×22 → 14×11 → 7×5। পথে কোথাও এটি আর
বিড়ালের মতো দেখায় না, কিন্তু edge-গুলো কোথায় ছিল তা এখনও দেখা যায় — আর টালিগুলো যথেষ্ট বড় হলে
প্রতিটি সংখ্যা তাদের ওপর লেখা থাকে।
3. House, Vertical edges + ReLU, Max, 2×2, তারপর ছবিটি 1 pixel সরান।
প্রায়ই বলা হয় pooling নেটওয়ার্ককে ছোট সরণ উপেক্ষা করতে শেখায়, তাই যাচাই করুন: status লাইন গুনে দেখায় কী
বদলাল। input-এর প্রায় 5% সংখ্যা বদলায় — আর pool করা সংখ্যারও প্রায় 5%। এক দফা pooling খুব সামান্যই
এনে দেয়; Average আরও খারাপ, 8%। একটি আসল CNN-এর সরণ সহ্য করার ক্ষমতা যেখান থেকেই আসুক, একটি
pooling layer থেকে আসে না।
4. এমন একটি map-এ 3×3 বা 4×4 window বেছে নিন যার প্রস্থ সমানভাবে ভাগ হয় না। ডানের বাকি কলামগুলো
একটি পুরো window ভরে না, তাই সেগুলো সোজা বাদ পড়ে।