Chapter 22 of 28
CNNs versus MLPs, RNNs, and Transformers
এখন পর্যন্ত আপনি জানেন কীভাবে একটি CNN কাজ করে — কনভোলিউশন, পুলিং ও ওজনের ফিল্টারগুলোর মেলবন্ধন যা raw পিক্সেলকে একটি সঠিক সিদ্ধান্তে রূপান্তর করে। তবে "এটি কীভাবে কাজ করে" তা জানার মাধ্যমে আমরা মুদ্রার মাত্র এক পিঠ দেখেছি। অপর পিঠটি, যা প্রতিনিয়ত চাকরি ইন্টারভিউ ও সিস্টেম-ডিজাইনের আলোচনায় উঠে আসে, তা হলো: কখন আপনি অন্য সব বিকল্প বাদ দিয়ে একটি CNN বেছে নেবেন?
ডিপ লার্নিংয়ের প্রতিটি আর্কিটেকচার মূলত তার অদেখা ডেটার ওপর করা এক একটি বাজি বা অনুমান। একটি MLP বাজি ধরে যে প্রতিটি ইনপুট ফিচারের সাথে অন্য সব ফিচারের সমান সম্পর্ক রয়েছে। একটি RNN বাজি ধরে যে ডেটার সিকোয়েন্স বা ক্রম অত্যন্ত গুরুত্বপূর্ণ এবং অতীত সর্বদা বর্তমানকে প্রভাবিত করে। একটি Transformer বাজি ধরে যে যেকোনো দুটি পজিশন একে অপরের জন্য অত্যন্ত প্রাসঙ্গিক হতে পারে, তারা যতই দূরে থাকুক না কেন। আর একটি CNN বাজি ধরে যে পারস্পরিক কাছাকাছি থাকা উপাদানগুলোর গুরুত্ব সবচেয়ে বেশি এবং ছবির এক কোণে যে প্যাটার্নটি দরকারী, তা অন্য সব কোণেও সমান দরকারী। সেই বাজি — লোকাল কানেক্টিভিটি ও ওজন শেয়ারিং — নিয়েই মূলত এই চ্যাপ্টারের আলোচনা, যা আমরা অন্যান্য আর্কিটেকচারের সাথে CNN-এর তুলনার সাহায্যে জানব।
সবচেয়ে সহজ তুলনা, এবং যা দিয়ে মূলত এই কোর্সটি শুরু হয়েছিল: কেন আমরা একটি ছবিকে ফ্ল্যাটেন করে সাধারণ multi-layer perceptron (MLP)-এ পাঠিয়ে দিচ্ছি না?
একটি MLP প্রতিটি পিক্সেলকে পরের লেয়ারের প্রতিটি নিউরনের সাথে সংযুক্ত একটি স্বতন্ত্র ফিচার হিসেবে বিবেচনা করে। এতে করে পাশাপাশি থাকা পিক্সেলগুলো যে একে অপরের সাথে সম্পর্কিত, সেই তথ্যটি হারিয়ে যায়, আর সেই সাথে তৈরি হয় বিপুল সংখ্যক ওজন — একটি সাধারণ 224×224 রঙিন ছবিতেই প্রায় ১৫০,০০০-এর বেশি ইনপুট ভ্যালু থাকে, ফলে মাত্র ১,০০০ নিউরনের একটি fully connected হিডেন লেয়ারের জন্যই ট্রেনিং শুরুর আগেই ১৫ কোটিরও বেশি ওজন প্রয়োজন হয়ে পড়ে। তার বদলে একটি CNN ছবির ওপর দিয়ে একটি ছোট ফিল্টার স্লাইড করায়, একই মুষ্টিমেয় ওজনগুলো প্রতিটি স্থানে বারবার ব্যবহার করে। এটি ইচ্ছাকৃতভাবে লোকাল প্রতিবেশগুলো দেখে, আর যেহেতু একই ফিল্টার সব জায়গায় প্রয়োগ করা হয়, তাই ছবির একাংশে শেখা একটি প্যাটার্ন স্বয়ংক্রিয়ভাবে অন্য অংশেও চিহ্নিত হয়ে যায়।
| দিক (Aspect) | CNN | MLP |
|---|---|---|
| ইনপুট গঠন | ছবির ২D/৩D স্থানিক গঠন বজায় রাখে | ফ্ল্যাটেন করতে হয় — স্থানিক সম্পর্ক হারিয়ে যায় |
| কানেক্টিভিটি | লোকাল (receptive field-এর সাহায্যে) | Fully connected (বৈশ্বিক বা গ্লোবাল) |
| প্যারামিটার সংখ্যা | ওজন শেয়ারিংয়ের কারণে অত্যন্ত কম | ডেন্স কানেকশনের কারণে জ্যামিতিক হারে বেশি |
| কখন উপযোগী | ছবি ও অন্যান্য স্থানিক বা গ্রিড ডেটার জন্য | Tabular, non-spatial data বা অস্থানিক সাধারণ ডেটার জন্য |
| অনুবাদ অপরিবর্তনশীলতা | হ্যাঁ, প্রায় সম্পূর্ণ অপরিবর্তনশীল | না |
Recurrent Neural Network তৈরি হয়েছিল একেবারে ভিন্ন ধরনের গঠনের জন্য: সিকোয়েন্স বা ক্রম, যেখানে অর্ডার বা ক্রম নিজেই অর্থবহ এবং অতীত বর্তমানকে ব্যাখ্যা করার প্রক্রিয়াকে প্রভাবিত করে। একটি RNN ইনপুটকে ধাপে ধাপে প্রসেস করে, সময়ের সাথে সাথে একটি হিডেন স্টেট বহন করে নিয়ে যায়। অন্যদিকে একটি CNN পুরো একটি স্প্যাটিয়াল প্রতিবেশকে একবারেই প্রসেস করে ফেলে এবং "আগে" ও "পরে" — এই ধারণা তার মধ্যে সহজাতভাবে নেই।
সেই পার্থক্যের একটি বড় বাস্তব প্রভাব রয়েছে: যেহেতু CNN-এর বিভিন্ন স্থানিক অবস্থানে চলা কনভোলিউশনগুলো একে অপরের ওপর নির্ভরশীল নয়, তাই এগুলো সবগুলোকে একসাথে সমান্তরালভাবে (parallel) হিসাব করা যায়। একটি RNN-এর ধাপের হিডেন স্টেট নির্ভর করে ধাপের ওপর, ফলে এটি সহজাতভাবেই সিকোয়েনশিয়াল এবং প্যারালালাইজ করা কঠিন — এটিই সেই কারণগুলোর একটি, যার জন্য RNN পরবর্তীতে এমন আর্কিটেকচারগুলোর কাছে জায়গা হারিয়েছে যাদের মধ্যে এই বাধাটি নেই।
| দিক (Aspect) | CNN | RNN |
|---|---|---|
| যার জন্য ডিজাইন করা | স্প্যাটিয়াল ডেটা (ছবি) বা স্থানিক ডেটা | সিকোয়েনশিয়াল ডেটা (টেক্সট, টাইম সিরিজ) |
| মূল অপারেশন | Convolution — লোকাল, শেয়ার্ড ফিল্টার | Recurrence — হিডেন স্টেট সময়ের সাথে বহন করা হয় |
| প্যারালালাইজেশন-যোগ্যতা | অত্যন্ত প্যারালাল, সব অবস্থান একসাথে | সহজাতভাবে সিকোয়েনশিয়াল, প্যারালালাইজ করা কঠিন |
| Long-range dependency | ডিপ স্ট্যাকিং / বড় receptive field প্রয়োজন | ক্রম স্বাভাবিকভাবে মডেল করে, তবে অত্যন্ত দীর্ঘ সিকোয়েন্সে সমস্যায় পড়ে (সময়ের সাথে vanishing gradient) |
LSTM হলো RNN-এর একটি gated ভার্সন, যা বিশেষভাবে তৈরি করা হয়েছিল long-range dependency সমস্যা সমাধানের জন্য — এর forget, input ও output গেটগুলো একটি সিকোয়েন্সের মধ্য দিয়ে এগোনোর সময় কী রাখা হবে আর কী বাদ দেওয়া হবে তা ঠিক করতে দেয়, সবকিছু নির্বিচারে মিশিয়ে ফেলার বদলে। CNN-এর মধ্যে এই ধরনের কোনো গেটিং মেকানিজম নেই, এবং এটি স্বভাবতই কোনো সিকোয়েন্স জুড়ে "long-term" সম্পর্ক ট্র্যাক করে না — একটি সাধারণ কনভোলিউশন শুধু তার receptive field-এর ভেতরে যা পড়ে তাই দেখে।
বাস্তবে, এই দুটিকে মুখোমুখি তুলনা করার চেয়ে বরং একসাথে জুড়ে ব্যবহার করা হয় বেশি: একটি CNN ভিডিওর জন্য প্রতি ফ্রেমের ফিচার এক্সট্র্যাক্টর বা প্রতি ছবির এনকোডার হিসেবে কাজ করে, আর একটি LSTM তখন সেই এক্সট্র্যাক্ট করা ফিচারগুলো সময়ের সাথে কীভাবে পরিবর্তিত হয় তা মডেল করে — এই প্যাটার্নটি পুরোনো ভিডিও-ক্যাপশনিং ও অ্যাকশন-রিকগনিশন পাইপলাইনগুলোতে দেখা যায়।
| দিক (Aspect) | CNN | LSTM |
|---|---|---|
| ডেটার ধরন | গ্রিড/স্প্যাটিয়াল (ছবি) | সিকোয়েনশিয়াল (টেক্সট, স্পিচ, টাইম সিরিজ) |
| Long-term dependency হ্যান্ডলিং | সহজাত নয় — ডিপ লেয়ার প্রয়োজন | হ্যাঁ, forget/input/output গেটের মাধ্যমে |
| সাধারণ সমন্বয় | ভিডিওর জন্য প্রতি ফ্রেমের ফিচার এক্সট্র্যাক্ট করে | সেই ফিচারগুলোর ওপর টেম্পোরাল অর্ডার মডেল করে |
Vision Transformer হলো সবচেয়ে নতুন প্রতিদ্বন্দ্বী, আর বর্তমান ইন্টারভিউগুলোতে সবচেয়ে বেশি যে তুলনাটি উঠে আসে সেটিও এটিই। ফিল্টার স্লাইড করার বদলে, একটি ViT একটি ছবিকে নির্দিষ্ট আকারের প্যাচে ভেঙে ফেলে, প্রতিটি প্যাচকে একটি টোকেনের মতো বিবেচনা করে, এবং self-attention-কে ঠিক করতে দেয় কোন প্যাচ কোনটিকে প্রভাবিত করবে — প্রথম লেয়ার থেকেই প্রতিটি প্যাচ অন্য প্রতিটি প্যাচের প্রতি attend করতে পারে।
এটি একেবারে ভিন্ন এক ট্রেড-অফ। একটি CNN-এর কনভোলিউশনাল গঠন ছবি সম্পর্কে শক্তিশালী কিছু অনুমান আগে থেকেই বেক করে রাখে — যেমন কাছাকাছি পিক্সেলগুলোর গুরুত্ব বেশি, এবং এক জায়গায় দেখা প্যাটার্ন অন্য জায়গাতেও চেনা উচিত — এমনকি একটি ওজনও ট্রেইন হওয়ার আগেই। একটি ViT প্রায় কোনো এমন অনুমান ছাড়াই শুরু করে এবং স্থানিক সম্পর্কগুলো সম্পূর্ণভাবে ডেটা থেকে শিখতে হয়, যে কারণে একটি CNN-এর সমমানের অ্যাকুরেসিতে পৌঁছাতে এটির সাধারণত অনেক বড় ডেটাসেট বা ভারী প্রিট্রেনিং প্রয়োজন হয়। বিনিময়ে, একটি ViT পুরো ছবিটি একবারেই দেখতে পারে, CNN-এর মতো বড় receptive field তৈরি করতে ডিপ স্ট্যাকিং-এর প্রয়োজন ছাড়াই — কিন্তু self-attention-এর খরচ প্যাচের সংখ্যার সাথে quadratic হারে বাড়ে, যা একে চালানোর ক্ষেত্রে বেশি ব্যয়বহুল করে তুলতে পারে।
| দিক (Aspect) | CNN | ViT |
|---|---|---|
| মূল মেকানিজম | Convolution — লোকাল receptive field | Self-attention — গ্লোবাল, প্যাচ-থেকে-প্যাচ |
| Inductive bias | শক্তিশালী — locality ও translation invariance অন্তর্নির্মিত | দুর্বল — স্থানিক সম্পর্ক ডেটা থেকে শিখতে হয় |
| ডেটার চাহিদা | মাঝারি আকারের ডেটাসেটেও ভালোভাবে কাজ করে | অনেক বড় ডেটাসেট বা ভারী প্রিট্রেনিং প্রয়োজন |
| গ্লোবাল কনটেক্সট | পুরো ছবি দেখতে ডিপ স্ট্যাকিং প্রয়োজন | প্রথম লেয়ার থেকেই পুরো ছবি দেখতে পায় |
| কম্পিউট প্যাটার্ন | এফিশিয়েন্ট, পরিণত হার্ডওয়্যার সাপোর্ট | Attention প্যাচ সংখ্যায় quadratic — ব্যয়বহুল হতে পারে |
আপনাকে যখনই যেকোনো দুটি আর্কিটেকচারের তুলনা করতে বলা হবে, তখন আপনার উত্তরটি এই ৪টি প্রশ্নের চারপাশে সাজান: (১) এর মূল মেকানিজম কী, (২) এটি ডেটার ব্যাপারে কী অনুমান বা inductive bias নিজের মধ্যে সেট করে রাখে, (৩) এর ডেটা ও কম্পিউটেশনাল চাহিদা কেমন এবং (৪) এটি সাধারণত কোন কাজে বেশি ব্যবহৃত হয়। এই ফ্রেমওয়ার্ক দিয়ে আপনি যেকোনো তুলনামূলক প্রশ্নের চমৎকার উত্তর দিতে পারবেন।
প্রতিটি তুলনাই যে CNN-বনাম-অন্য-কিছু হতে হবে তা নয় — সবচেয়ে কার্যকর কিছু তুলনা হয় CNN-এরই বিভিন্ন ভ্যারিয়েন্টের মধ্যে। ResNet-এর মূল ধারণাটি হলো skip connection: একটি লেয়ারের ইনপুটকে তার ট্রান্সফরমেশন এড়িয়ে সরাসরি আউটপুটে যোগ হতে দেওয়া, যার ফলেই কয়েক ডজন বা কয়েকশ লেয়ার গভীর নেটওয়ার্ক ট্রেইন করা সম্ভব হয়, ফিরতি পথে গ্রেডিয়েন্ট vanishing হয়ে না গিয়ে। EfficientNet সম্পূর্ণ ভিন্ন একটি দৃষ্টিভঙ্গি নেয় — নেটওয়ার্কের একটি মাত্রা বড় করার বদলে, এটি depth, width ও ইনপুট রেজোলিউশন — এই তিনটিকে একটি নির্দিষ্ট অনুপাতে একসাথে স্কেল করে, আর যে বেস আর্কিটেকচারটিকে স্কেল করা হয় সেটি হাতে ডিজাইন করার বদলে neural architecture search-এর মাধ্যমে স্বয়ংক্রিয়ভাবে খুঁজে পাওয়া হয়েছিল। এর ফলাফল হলো, EfficientNet-এর ভ্যারিয়েন্টগুলো অনেক কম প্যারামিটার ও FLOPs ব্যবহার করেই ResNet-এর অ্যাকুরেসির সমান বা তার চেয়ে ভালো ফলাফল দেয়।
| দিক (Aspect) | ResNet | EfficientNet |
|---|---|---|
| মূল ধারণা | Residual/skip connection অত্যন্ত ডিপ নেটওয়ার্ক সম্ভব করে | Depth, width ও resolution-এর কম্পাউন্ড স্কেলিং একসাথে |
| ডিজাইন পদ্ধতি | ম্যানুয়ালি ডিজাইন করা, মানুষের হাতে তৈরি ব্লক | Neural architecture search-এর মাধ্যমে পাওয়া, পরে স্কেল করা |
| এফিশিয়েন্সি | ভালো, তবে বড় ভ্যারিয়েন্টগুলো কম্পিউট-হেভি | অনেক কম FLOPs/প্যারামিটারে সমান বা ভালো অ্যাকুরেসি |

আধুনিক প্রোডাকশন সিস্টেমগুলো খুব কমই একটি মাত্র আর্কিটেকচার বেছে নেয় — বরং তারা ঠিক এই চ্যাপ্টারে আলোচিত ট্রেড-অফগুলোর ভিত্তিতে বিভিন্ন আর্কিটেকচার মিশিয়ে ব্যবহার করে। একটি ভিডিও-বোঝার পাইপলাইন হয়তো প্রতি ফ্রেমে একটি CNN ব্যাকবোন ব্যবহার করবে, যা সময়ের সাথে যুক্তি করার জন্য একটি সিকোয়েন্স মডেল বা Transformer-এ ফিড হয়। একটি মাল্টি-মোডাল মডেল হয়তো একটি CNN বা ViT-কে ভিশন এনকোডার হিসেবে ব্যবহার করবে, যা একটি বড় ভাষা মডেলে ফিড হয়। প্রতিটি আর্কিটেকচার ঠিক কোন কাজে ভালো — এবং, ঠিক ততটাই গুরুত্বপূর্ণভাবে, বিনিময়ে ঠিক কী ত্যাগ করে — তা নির্ভুলভাবে জানাই আপনাকে প্রথাগত নিয়ম অনুসরণ করার বদলে এই ধরনের ডিজাইন সিদ্ধান্ত নিজে নিতে সক্ষম করে তোলে।