Chapter 2 of 28
What happens when you feed raw pixels into a plain MLP
CNN-এর অস্তিত্বের আগে, মানুষের কাছে সবচেয়ে সহজ বুদ্ধি ছিল... যা আগে থেকেই কাজ করছে তা-ই ব্যবহার করা। মাল্টি-লেয়ার পারসেপ্ট্রন (MLP) যেহেতু নন-লিনিয়ার ফাংশন সফলভাবে শিখতে পারে তা প্রমাণ হয়েছিল, তাহলে কেন ছবিকে ভেঙে পিক্সেল ভ্যালুর একটি লম্বা তালিকা বা ভেক্টরে ফ্ল্যাটেন করে সরাসরি MLP-তে ইনপুট দেওয়া যাবে না, ঠিক যেভাবে আপনি কোনো লোন-অ্যাপ্রুভাল মডেলের জন্য আয় ও ঋণের ডেটা ইনপুট দেন? গবেষকেরা ঠিক এটাই চেষ্টা করেছিলেন। কিন্তু এটি কেবল খারাপ পারফর্মই করেনি — এটি সম্পূর্ণ মৌলিক তিনটি কারণে একদম ভেঙে পড়েছিল। আর এই ভেঙে পড়ার পেছনের কারণ বা why বুঝতে পারাটাই হলো একটি CNN বাস্তবে ঠিক কী কী সমস্যা দূর করে তা দ্রুত বোঝার সবচেয়ে সহজ পথ।
ধরুন, আপনি পিক্সেল স্ক্যানের ছবি থেকে নিজে হাতে লেখা সংখ্যা বা handwritten digits সনাক্ত করার জন্য একটি সাধারণ MLP-কে ট্রেন করছেন (ধরে নিচ্ছি MNIST ডেটাসেটের সংখ্যাগুলো এর চেয়ে অনেক ছোট — তবে বাস্তব ছবির সাইজের কষ্টটুকু বোঝার জন্য আমরা একটি স্ট্যান্ডার্ড ছবি দিয়ে হিসেব করছি)। আপনার একদম প্রথম হিডেন লেয়ারটিতে, যেখানে খুবই মাঝারি আকারের ১,০০০টি নিউরন আছে, সেখানে প্রয়োজন হবে:
অর্থাৎ প্রথম লেয়ারেই ১৫০ মিলিয়নেরও বেশি ওয়েট (weights) — নেটওয়ার্কটি সংখ্যা সম্পর্কে কোনো কিছু শেখার আগেই! এবার ভাবুন তো এটি আপনার নিজের ল্যাপটপে ট্রেন করার কথা, অথবা আরও বড় কথা হলো, ১৫০ মিলিয়ন প্যারামিটার যাতে শুধুমাত্র ট্রেনিং সেটটিকে মুখস্থ (overfit) না করে বসে থাকে, তার জন্য প্রয়োজনীয় বিশাল পরিমাণ লেবেলযুক্ত ছবি সংগ্রহ করার কথা। এটিই হলো সেই বিশাল বড় দেয়াল যার সাথে ছবির দুনিয়ায় MLP ব্যবহার করার শুরুর দিকের প্রতিটি চেষ্টা এসে সজোরে ধাক্কা খেয়েছিল।
ফর্মুলাতে যাওয়ার আগে, একটি সাধারণ MLP-তে ছবির ডেটা পাঠানোর সাথে সাথে যে তিনটি প্রধান সমস্যা বা রোগ বাসা বাঁধে তা সংক্ষেপে জেনে নিন:
এদের প্রতিটিকে একটু কাছ থেকে দেখা যাক।
যেখানে: "ইনপুট সাইজ" হলো ভেতরে আসা মোট ভ্যালু বা মানের সংখ্যা (একটি ফ্ল্যাটেন করা ছবির জন্য উচ্চতা × প্রস্থ × কালার চ্যানেল), "নিউরন সংখ্যা" হলো পরবর্তী লেয়ারের আকার, এবং শেষের অংশটি প্রতি নিউরনে একটি করে বায়াস (bias) হিসেব করে।
পেছনের যুক্তি বা Intuition: একটি ডেন্স বা fully connected লেয়ারে, প্রতিটি ইনপুটের জন্য প্রতিটি নিউরনের সাথে একটি করে নিজস্ব ওয়েট বা ওজন বরাদ্দ থাকে — এখানে কোনো শেয়ারিং বা অংশীদারিত্বের সুযোগ নেই। ইনপুটের সাইজ (বড় ছবি) অথবা লেয়ারের সাইজ (বেছি নিউরন) বাড়ালে প্যারামিটারের সংখ্যা এদের যোগফল হিসেবে নয়, বরং এদের গুণফল (product) হিসেবে বৃদ্ধি পায়।
এটি শুধুমাত্র আপনার মেমরি বা র্যামের অপচয় নয়। ট্রেনিং ডেটার ধারণক্ষমতার চেয়ে প্যারামিটারের সংখ্যা বেশি হওয়ার অর্থ হলো মারাত্মক ওভারফিটিং (overfitting), মারাত্মক ধীরগতির ট্রেনিং এবং এমন হার্ডওয়্যারের প্রয়োজন যা সাধারণ কাজের সীমার বাইরে চলে যায়।
একটি MLP শুধুমাত্র একটি 1D ভেক্টর গ্রহণ করতে পারে, তাই যেকোনো ছবিকে প্রথমে ফ্ল্যাটেন (flatten) করতে হয় — অর্থাৎ পিক্সেলের প্রতি সারির এক একটি মাথা পরের লাইনের সাথে জুড়ে দিয়ে একটি লম্বা তালিকা তৈরি করা হয়। নেটওয়ার্কটি তখন এই সংখ্যাগুলোর প্রতিটিকে সম্পূর্ণ স্বাধীন ও অবিন্যস্ত ফিচার হিসেবে গণ্য করে। কিন্তু ছবির ভেতরে থাকা যেকোনো অর্থপূর্ণ ভিজ্যুয়াল প্যাটার্ন — যেমন কিনারা, টেক্সচার, আকৃতি — প্রতিটিই তৈরি হয় তার পাশের পিক্সেলগুলোর মধ্যকার সম্পর্কের ওপর ভিত্তি করে। ছবিকে ফ্ল্যাটেন করা ঠিক এই মূল্যবান সম্পর্কটিকে কেটে টুকরো টুকরো করে ফেলে, যা ছবিকে চেনার জন্য প্রধানতম কাঠামোগত ক্লু বা সাহায্যকে নষ্ট করে দেয়।
Translation invariance-এর অর্থ হলো একটি নেটওয়ার্ক ছবির যেকোনো জায়গায় একটি ফিচার — যেমন কিনারা, চোখ বা কোনো প্যাটার্ন — উপস্থিত থাকলেও তাকে সঠিকভাবে সনাক্ত করতে পারবে।
সহজ কথা: একটি সাধারণ MLP-র কাছে "একই জিনিস, যা শুধু একটু সরে গেছে" — এমন কোনো ধারণাই নেই। বিড়ালটি যদি ছবির ওপর-বাম কোণ থেকে নিচে-ডান কোণে সরে যায়, তবে সম্পূর্ণ আলাদা ইনপুট পিক্সেল (এবং সম্পূর্ণ আলাদা ওয়েট) সক্রিয় হবে। ফলে MLP-কে "ওপর-বামের বিড়াল" এবং "নিচে-ডানের বিড়াল" সম্পূর্ণ আলাদা আলাদা ক্লাস হিসেবে নতুন করে শিখতে হবে। CNN এই ক্ষমতাটি একদম বিনামূল্যে বা খুব সহজেই পেয়ে যায়, কারণ এর একই ছোট ফিল্টারটি পুরো ছবির ওপর দিয়ে স্লাইড করে যায় এবং সব জায়গায় একই ওয়েট বারবার ব্যবহার করে।
| দিক বা Aspect | MLP (Fully Connected) | CNN (Convolutional) |
|---|---|---|
| ইনপুট প্রসেসিং | 1D ভেক্টরে ফ্ল্যাটেন করতে হয় | 2D/3D স্থানিক কাঠামো বজায় রাখে |
| প্যারামিটার সংখ্যা | অত্যন্ত বেশি (ডেন্স কানেকশন) | অনেক কম (ওয়েট শেয়ারিং বা অংশীদারিত্ব) |
| স্থানিক সচেতনতা | ফ্ল্যাটেন করার পর হারিয়ে যায় | লোকাল রিসেপ্টিভ ফিল্ডের মাধ্যমে সংরক্ষিত থাকে |
| ট্রান্সলেশন ইনভ্যারিয়েন্স | নেই | আছে (মোটামুটিভাবে, বিশেষ করে pooling সহ) |
| ছবিতে ওভারফিটিংয়ের ঝুঁকি | খুব বেশি | অনেক কম (কম ও শেয়ারড প্যারামিটার) |
| যাদের জন্য উপযোগী | টেবুলার / নন-স্পেশাল ডেটা | ছবি, ভিডিও ফ্রেম, স্থানিক গ্রিড |
ওপরের তিনটি দুর্বলতার প্রতিটিই সমাধান করা হয়েছে নিচের কয়েকটি কাঠামোগত বা আর্কিটেকচারাল সিদ্ধান্তের সাহায্যে, যা আমরা এই কোর্সে বিস্তারিত শিখব:
CNN কোনো একক চিন্তার ঝলকানি থেকে তৈরি হয়নি — এটি বায়োসায়েন্স ও ইঞ্জিনিয়ারিংয়ের দশকের পর দশক ধরে চলা গবেষণার ফল।
বিড়ালের ভিজ্যুয়াল কর্টেক্সে রিসেপ্টিভ ফিল্ড এবং হায়ারার্কিকাল প্রসেসিং আবিষ্কার করেন — যা ছিল CNN-এর পেছনের মূল বায়োলজিক্যাল অনুপ্রেরণা।
কনভোলিউশন এবং পুলিংয়ের মতো লেয়ারগুলোর সমন্বয়ে তৈরি প্রথম নিউরাল মডেল।
ব্যাকপ্রোপাগেশন ব্যবহার করে এন্ড-টু-এন্ড ট্রেন করা প্রথম সফল ও ব্যবহারিক CNN; ব্যাংকের চেকে হাতে লেখা সংখ্যা সনাক্ত করতে ব্যবহৃত হয়েছিল।
GPU ট্রেনিং, ReLU এবং Dropout ব্যবহার করে একটি গভীর CNN-এর মাধ্যমে বিশাল ব্যবধানে ImageNet প্রতিযোগিতা জেতে — যা আধুনিক ডিপ লার্নিং যুগের সূচনা করে।
নেটওয়ার্কের গভীরতা এবং বিভিন্ন স্কেলের ফিল্টার (Inception মডিউল) নিয়ে কাজ করে।
রেসিডুয়াল বা স্কিপ কানেকশন (skip connections) নিয়ে আসে, যার ফলে ১০০টিরও বেশি লেয়ার গভীর নেটওয়ার্ক ট্রেন করা সম্ভব হয়।
মোবাইল ডিভাইসের জন্য দক্ষতার ওপর ফোকাস করা শুরু হয়, এবং পরবর্তীতে অ্যাটেনশন-ভিত্তিক ট্রান্সফর্মারগুলোর আগমন ঘটে।
"Hubel Found Le(Net) Alex's VGG-Res-Mobile" — Hubel & Wiesel (biology) → Fukushima (Neocognitron) → LeNet → AlexNet → VGG/GoogLeNet → ResNet → MobileNet/EfficientNet.
"What biological structure inspired CNNs?" (কোন বায়োলজিক্যাল বা জৈবিক কাঠামো CNN-কে অনুপ্রাণিত করেছিল?) উত্তর: হুবেল এবং উইসেলের সেই আবিষ্কার যে ভিজ্যুয়াল কর্টেক্সের নিউরনগুলো ভিজ্যুয়াল ফিল্ডের ছোট ও লোকাল অঞ্চলের (receptive fields) প্রতি প্রতিক্রিয়া দেখায়, এবং তারা হায়ারার্কিকাল বা ক্রমানুসারে সাজানো থাকে — সরল কোষগুলো কিনারা সনাক্ত করে, এবং জটিল কোষগুলো সেগুলোকে মিলিয়ে জটিল প্যাটার্ন তৈরি করে। CNN-এর একটার ওপর আরেকটা সাজানো কনভোলিউশনাল লেয়ারগুলো ঠিক এই কাঠামোটিকেই অনুকরণ করে।

এটি শুধুমাত্র ট্রেনিংয়ের গতি কমানোর সমস্যা নয় — কোটি কোটি প্যারামিটার এবং তার তুলনায় কম লেবেলযুক্ত ডেটা থাকলে মডেলটি খুব বাজেভাবে ওভারফিট করবে, অর্থাৎ সে সাধারণ প্যাটার্ন শেখার বদলে ছবিগুলোকে মুখস্থ করে ফেলবে।
একটি MLP ছবির ওপর কিছুটা কাজ করতে পারে — কিন্তু তাকে একই জিনিসকে ছবির প্রতিটি কোণায় আলাদা আলাদাভাবে শিখতে হয়, যা অত্যন্ত অপচয়কারী এবং এতে একটি ওয়েট-শেয়ারিং পদ্ধতির চেয়ে অনেক বেশি ডেটা ও প্যারামিটারের প্রয়োজন হয়।
২০১২ সালের আগের কম্পিউটার ভিশন গবেষণার আসল চিত্রটি ছিল ঠিক এমন: অসাধারণ সব আইডিয়া থাকা সত্ত্বেও হার্ডওয়্যার ও ডেটার সীমাবদ্ধতার কারণে raw ইমেজের ওপর MLP ব্যবহার করা অসম্ভব ছিল। যখনই লোকাল কানেক্টিভিটি ও ওয়েট শেয়ারিংয়ের ধারণাকে জিপিউ (GPU) ও বড় লেবেলযুক্ত ডেটাসেটের সাথে যুক্ত করা হলো, তখনই কম্পিউটার ভিশনের পুরো গতিপথ প্রায় রাতারাতি বদলে গেল। পরের চ্যাপ্টারটি নিউরাল নেটওয়ার্কের সেই মৌলিক বিষয়গুলোকে রিফ্রেশ করবে যার ওপর ভিত্তি করে CNN গড়ে উঠেছে, এবং এর পরেই আমরা প্রবেশ করব কনভোলিউশন আসলে কীভাবে কাজ করে তার চমৎকার জগতে।