Chapter 19 of 28
From LeNet to EfficientNet, in one lineage
কনভোলিউশন, পুলিং ও অ্যাক্টিভেশন ফাংশনগুলো যদি হয় CNN-এর শব্দভাণ্ডার বা vocabulary, তবে এই চ্যাপ্টারে আলোচনা করা আর্কিটেকচারগুলো হলো সেই ইতিহাস সৃষ্টিকারী বাক্য বা বাক্যসমূহ। প্রতিটি মডেলই শুধুমাত্র আগের মডেলের চেয়ে ImageNet-এ সামান্য বেশি অ্যাকুরেসি নিয়ে আসেনি — বরং প্রতিটি মডেল এমন এক একটি সুনির্দিষ্ট ও চিহ্নিত সমস্যার সমাধান নিয়ে এসেছে যা পরবর্তী গবেষণার পথ সুগম করেছে, এবং সেই সমাধানগুলো আজ আধুনিক CNN তৈরির স্থায়ী বিল্ডিং ব্লক হিসেবে গণ্য হয়। এই ইতিহাস ও ধারাবাহিকতা জানা থাকার অর্থ হলো আধুনিক নেটওয়ার্কগুলো কেন দেখতে এমন হয়েছে তা খুব গভীরভাবে অনুভব করা, শুধু কিছু মডেলের নামের তালিকা মুখস্থ করা নয়।
পুরো বিবর্তনের গল্পটি এক লাইনে জেনে নেওয়া যাক: LeNet প্রমাণ করেছে একটি CNN আদেও শিখতে পারে। AlexNet প্রমাণ করেছে জিপিউ ও dropout ব্যবহার করে বাস্তব ছবির ওপর মডেলকে স্কেল করা সম্ভব। VGGNet প্রমাণ করেছে চতুর ফিল্টার সাইজের চেয়ে গভীরতা বা depth বেশি গুরুত্বপূর্ণ। GoogLeNet প্রমাণ করেছে একটু বুদ্ধি খাটালে বিশাল ওজনের প্যারামিটার ছাড়াই অনেক বেশি গভীরে যাওয়া সম্ভব। ResNet এমন এক সমস্যার সমাধান নিয়ে এসেছে যা মূলত নেটওয়ার্কের গভীরে যাওয়ার প্রধান বাধা ছিল — vanishing gradients — গ্রেডিয়েন্টকে পেছনের দিকে প্রবাহিত হওয়ার জন্য একটি শর্টকাট বা skip connection পথ দিয়ে। DenseNet এই শর্টকাট আইডিয়াকে তার চরম সীমানায় নিয়ে গেছে। MobileNet এবং EfficientNet আমাদের সামনে প্রশ্ন রেখেছে "কীভাবে একটি মোবাইল ফোনে ResNet-এর সমান অ্যাকুরেসি পাওয়া সম্ভব?" এবং সবশেষে ViT এসে প্রশ্ন তুলেছে ছবিতে আদেও কনভোলিউশনের প্রয়োজন আছে কিনা।
হাতে লেখা সংখ্যা চেনার জন্য ব্যাকপ্রোপাগেশন দিয়ে ট্রেইন করা প্রথম বাস্তব CNN। ওজনের প্যারামিটার ছিল প্রায় ৬০K।
ReLU, Dropout ও GPU ট্রেনিংয়ের সমন্বয়ে বিশাল ব্যবধানে ImageNet জিতে ডিপ লার্নিংয়ের নতুন যুগের সূচনা করে।
১৬-১৯ লেয়ার জুড়ে ৩×৩ কার্নেলের স্তুপ করে প্রমাণ করে যে ফিল্টার সাইজের চেয়ে মডেলের গভীরতাই আসল চাবিকাঠি।
সমান্তরাল মাল্টি-স্কেল ফিল্টার ও ১×১ কার্নেলের বোতলনেক (bottleneck) ব্যবহার করে VGG-র চেয়ে অনেক কম ওজনে ২২ লেয়ারের গভীরতা অর্জন করে।
রেসিডুয়াল বা skip connection ব্যবহার করে vanishing gradient সমস্যার সমাধান করে এবং ৫০-১৫২+ লেয়ারের নেটওয়ার্ক সচল করে।
প্রতিটি লেয়ারকে তার পূর্ববর্তী সব লেয়ারের সাথে যুক্ত করে ফিচার শেয়ারিং ও গ্রেডিয়েন্ট ফ্লোকে সর্বোচ্চ পর্যায়ে নিয়ে যায়।
Depthwise separable convolutions ব্যবহার করে CNN-এর পারফরম্যান্সকে মোবাইল ও এমবেডেড ডিভাইসের উপযোগী করে তোলে।
নিউরাল আর্কিটেকচার সার্চের সাহায্যে মডেলের গভীরতা, প্রস্থ ও ছবির রেজোলিউশনকে একটি নির্দিষ্ট রেশিও বা অনুপাতে জ্যামিতিক হারে স্কেল করে।
পর্যাপ্ত ডেটা থাকলে কনভোলিউশন পুরোপুরি বাদ দিয়ে ছবির প্যাচগুলোর ওপর সেল্ফ-অ্যাটেনশন (self-attention) প্রয়োগ করে কাজ করে।
Yann LeCun-এর হাতে লেখা সংখ্যা চেনার এই অগ্রগামী নেটওয়ার্কটি অত্যন্ত সরল ও পুনরাবৃত্তিমূলক ধারায় তৈরি হয়েছিল: Conv → Pool → Conv → Pool → FC → FC → Output। মাত্র ৬০,০০০ প্যারামিটার বিশিষ্ট এই মডেলটি আধুনিককালের তুলনায় অনেক ছোট — তবে এটিই প্রথম প্রমাণ ছিল যে এন্ড-টু-এন্ড ব্যাকপ্রোপাগেশন দিয়ে ট্রেইন করা একটি CNN বাস্তব প্রজেক্টে চমৎকার কাজ করতে পারে।
৫টি কনভোলিউশন ও ৩টি fully connected লেয়ার সহ মোট ৮ লেয়ারের এই মডেলটিতে প্রায় ৬০ মিলিয়ন প্যারামিটার ছিল। AlexNet-এর মূল অবদান কোনো সম্পূর্ণ নতুন আর্কিটেকচার ছিল না — বরং এটি প্রমাণ করেছিল ইতিমধ্যে চেনা কয়েকটি কৌশলকে একত্রিত করলে মডেলের পারফরম্যান্সে এক বিশাল বিপ্লব করা সম্ভব: যেমন ReLU activations (যা tanh বা sigmoid-এর মতো পজিটিভ ইনপুটে স্যাচুরেট হয় না ফলে দ্রুত ট্রেইন হয়), weight-decay বা dropout ব্যবহার করে বিশাল ডেন্স লেয়ারে ওভারফিটিং প্রতিরোধ করা, এবং এই বিশাল কম্পিউটেশন সচল করতে GPU-র ব্যবহার ও চমৎকার ডেটা অগমেন্টেশন। এটি ২০১২ সালের ImageNet প্রতিযোগিতায় এত বিশাল ব্যবধানে জয়ী হয় যা এক রাতেই পুরো বিশ্বকে বুঝিয়ে দেয় যে ডিপ লার্নিংই হলো ভবিষ্যতের কম্পিউটিং।
VGGNet একটি খুব সহজ প্রশ্ন তুলেছিল: বড় আকারের ফিল্টার ব্যবহার না করে, আমরা যদি শুধুমাত্র ছোট ছোট কনভোলিউশন একটার ওপর আরেকটা স্তুপ করে অনেক গভীর — ১৬ বা ১৯ লেয়ার — করি, তবে কী হবে? উত্তরটি ছিল, সরল ও একই সাইজের repeated ছোট ফিল্টারের সাহায্যে পাওয়া গভীরতা বা depth যেকোনো চতুর জ্যামিতিক নকশার চেয়ে অনেক বেশি শক্তিশালী। তবে এর একটি বড় অসুবিধা হলো VGG-তে প্রায় ১৩৮ মিলিয়ন প্যারামিটার ছিল, যা কম্পিউটেশনালি অত্যন্ত ভারী ও ব্যয়বহুল।
GoogLeNet আমাদের সামনে নিয়ে আসে Inception module: প্রতিটি লেয়ারে একটিমাত্র ফিল্টার সাইজ বেছে নেওয়ার বদলে একই লেয়ারে সমান্তরালভাবে বা parallel-এ কয়েকটি ফিল্টার (, , ) প্রয়োগ করা হয় এবং তাদের আউটপুট একসাথে যুক্ত করে একই সাথে একাধিক স্কেলের ফিচার সনাক্ত করা হয়। এটি কম্পিউটেশন কমাতে ১×১ কনভোলিউশনকে "বোতলনেক (bottleneck)" হিসেবে ব্যবহার করে — যা দামী বড় কনভোলিউশন চালানোর আগে চ্যানেলের সংখ্যা অনেক কমিয়ে আনে। এর ফলে মডেলটি ২২ লেয়ার গভীর হওয়া সত্ত্বেও VGG-র চেয়ে অনেক কম, মাত্র ৫ মিলিয়ন প্যারামিটার নিয়ে কাজ করতে পেরেছিল।
যেখানে: হলো ব্লকের ইনপুট, হলো ব্লকের কনভোলিউশন লেয়ারগুলোর শেখা রূপান্তর (যা residual বা অবশিষ্ট), এবং হলো ব্লকের আউটপুট — যা skip connection-এর সাহায্যে ইনপুটকে রেসিডুয়ালের সাথে যোগ করে তৈরি হয়।
সহজ কথা: লেয়ারগুলোর একটি স্তুপকে শূন্য থেকে সম্পূর্ণ নতুন একটি রূপান্তর শিখতে বাধ্য করার বদলে, ResNet reframe করে সমস্যাটিকে একটু ঘুরিয়ে দেয়: মডেলটিকে শুধুমাত্র রেসিডুয়াল বা অবশিষ্ট অংশটুকু শিখতে বলা হয়, যা মূলত ইনপুটের সাথে চূড়ান্ত লক্ষ্যের ব্যবধানটুকু শেখার সমান, এবং শেষে আসল ইনপুটকে আবার যোগ করা হয়। সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, এই যোগফলটি ব্যাকপ্রোপাগেশনের সময় গ্রেডিয়েন্টকে identity বা skip connection-এর মাধ্যমে সরাসরি পেছনের লেয়ারগুলোতে চলে যাওয়ার একটি শর্টকাট পথ দেয়, মাঝের লেয়ারগুলোকে পুরোপুরি বাইপাস করে। এটি vanishing gradient সমস্যাকে সমূলে বিনাশ করে যা ২০ লেয়ারের বেশি গভীর নেটওয়ার্ককে প্রায় অকেজো করে রাখত, এবং ৫০, ১০১ এমনকি ১৫২+ লেয়ারের বিশাল নেটওয়ার্ক ট্রেইন করার দরজা খুলে দেয়।
DenseNet এই skip-connection আইডিয়াকে আরও এক ধাপ এগিয়ে নেয়: প্রতিটি লেয়ার শুধু তার ঠিক আগের লেয়ারের সাথেই যুক্ত থাকে না, বরং প্রতিটি লেয়ার তার পূর্ববর্তী সবগুলো লেয়ারের আউটপুট ফিচার ম্যাপ ইনপুট হিসেবে কনক্যাটেনেট (concatenate) করে গ্রহণ করে। এটি ওজনের ফিচার শেয়ারিংকে সর্বোচ্চ পর্যায়ে নিয়ে যায় (শুরুর দিকের শেখা ফিচারগুলো শেষের সব লেয়ার সরাসরি রিইউজ করতে পারে, আবার নতুন করে শেখার প্রয়োজন হয় না), এবং রেসনেটের চেয়েও শক্তিশালী গ্রেডিয়েন্ট ফ্লো নিশ্চিত করে যা কম প্যারামিটারেই চমৎকার ফলাফল দিতে পারে।
MobileNet বিশেষভাবে তৈরি করা হয়েছে মোবাইল ফোন ও এমবেডেড ডিভাইসের জন্য, যেখানে মেমরি ও ব্যাটারি খুবই সীমিত। এর প্রধান কৌশল হলো depthwise separable convolution, যা একটি স্ট্যান্ডার্ড কনভোলিউশনকে দুটি সাশ্রয়ী ধাপে ভাগ করে ফেলে: একটি depthwise কনভোলিউশন (যেখানে প্রতিটি ইনপুট চ্যানেলের ওপর আলাদাভাবে ফিল্টার কাজ করে) এবং তার পিছে একটি pointwise ১×১ কনভোলিউশন (যা চ্যানেলগুলোর মধ্যে তথ্য মিশ্রণ করে)। এই বিভাজন কম্পিউটেশনাল খরচ ও প্যারামিটার সংখ্যা বা parameters বহুগুণ কমিয়ে ফেলে, খুবই সামান্য অ্যাকুরেসি হ্রাসের বিনিময়ে।
আগের মডেলগুলো ওজনের গভীরতা (depth), প্রস্থ (width) বা ছবির রেজোলিউশন (resolution) খুব এলোমেলোভাবে যেকোনো একটি মাত্রা বাড়িয়ে বড় হতো। EfficientNet-এর মূল দর্শন ছিল compound scaling: এই তিনটি মাত্রাকে (গভীরতা, প্রস্থ ও রেজোলিউশন) এলোমেলোভাবে না বাড়িয়ে নিউরাল আর্কিটেকচার সার্চের মাধ্যমে পাওয়া একটি নির্দিষ্ট সুষম অনুপাতে একযোগে বৃদ্ধি করা। এর ফলে এটি অত্যন্ত দক্ষ ও সাশ্রয়ী মডেলের সিরিজ উপহার দেয় যা আগের যেকোনো বড় মডেলের চেয়ে কম প্যারামিটার ও কম FLOPs-এই তাদের সমান অ্যাকুরেসি স্পর্শ করতে পারে।
ViT (২০২০) মূলত টেক্সটের জন্য তৈরি করা Transformer আর্কিটেকচারকে ছবির ওপর প্রয়োগ করে — যেখানে ছবিকে কয়েকটি নির্দিষ্ট সাইজের ছোট ছোট প্যাচে কাটা হয়, প্রতি প্যাচকে এক একটি শব্দের "টোকেন" হিসেবে গণ্য করা হয় এবং কোনো কনভোলিউশন ছাড়াই পুরো সিকোয়েন্স জুড়ে self-attention প্রয়োগ করা হয়। পর্যাপ্ত ডেটা ও বড় আকারের প্রিটেনিং দিলে ViT যেকোনো CNN-কে পারফরম্যা্সে ছাড়িয়ে যেতে পারে। তবে এর প্রধান সীমাবদ্ধতা হলো এটি ট্রেনিংয়ের জন্য অবাস্তব রকমের বেশি ডেটা দাবি করে, কারণ এর ভেতরে কনভোলিউশনের মতো inductive bias (যেমন লোকাল কানেক্টিভিটি ও ট্রান্সলেশন ইনভ্যারিয়েন্স) আগে থেকে সাজানো থাকে না। একটি CNN-এ ছবির কিছু মৌলিক বৈশিষ্ট্য আগে থেকেই সমীকরণে সেট করা থাকে; আর ViT-কে সেই বৈশিষ্ট্যগুলোও বিশাল ডেটা দেখে নিজে নিজে কষ্ট করে শিখতে হয়।
| মডেল (Model) | সাল (Year) | লেয়ার গভীরতা | প্রধান উদ্ভাবন (Key Innovation) |
|---|---|---|---|
| LeNet-5 | ১৯৯৮ | ৭ | প্রথম বাস্তবসম্মত CNN যা ব্যাকপ্রোপাগেশন দিয়ে ট্রেইন করা হয়েছিল |
| AlexNet | ২০১২ | ৮ | ReLU + Dropout + GPU ট্রেনিংয়ের প্রথম বাস্তব রূপ |
| VGGNet | ২০১৪ | ১৬-১৯ | ছোট ৩×৩ ফিল্টারের গভীর বা ডিপ স্ট্যাক |
| GoogLeNet | ২০১৪ | ২২ | Inception মডিউল ও ১×১ বোতলনেক বা bottleneck |
| ResNet | ২০১৫ | ৫০-১৫২+ | রেসিডুয়াল বা skip connections-এর সূচনা |
| DenseNet | ২০১৭ | ১০০+ | Concatenation-এর মাধ্যমে সর্বাত্মক ফিচার রিইউজ |
| MobileNet | ২০১৭ | পরিবর্তনশীল | Depthwise separable convolutions (উচ্চ দক্ষতা) |
| EfficientNet | ২০১৯ | পরিবর্তনশীল | গভীরতা/প্রস্থ/রেজোলিউশনের compound scaling |
| Vision Transformer | ২০২০ | পরিবর্তনশীল | ছবির প্যাচের ওপর self-attention (কোনো কনভোলিউশন ছাড়া) |

"LeNet Alex Vggoogle Res-Dense Mobile-Efficient-ViT" — chronological order: LeNet → AlexNet → VGG/GoogLeNet → ResNet/DenseNet → MobileNet/EfficientNet → ViT।
পরীক্ষায় প্রায়শই কোনো আর্কিটেকচারকে তার মূল উদ্ভাবনের সাথে মেলাতে বলা হয়। আপনি যদি প্রতিটির ঠিক একটি করে সংজ্ঞা মনে রাখতে পারেন — যেমন Inception-এর সমান্তরাল ফিল্টার, ResNet-এর skip connection, MobileNet-এর depthwise separable convolutions — তবে এ সংক্রান্ত প্রায় সব প্রশ্নের সঠিক উত্তর দিতে পারবেন।
আজকের প্রায় প্রতিটা production computer vision system-ই হয় এই architecture-গুলোর কোনো একটার সরাসরি ব্যবহার (প্রায়ই ImageNet-pretrained weight থেকে transfer learning করে), নয়তো তাদের মূল ধারণার ওপর গড়ে তোলা কোনো variant — বিশেষ করে ResNet-স্টাইল skip connection আর MobileNet-স্টাইল efficient convolution প্রায় সবখানেই দেখা যায়, cloud-scale image search থেকে শুরু করে on-device camera app পর্যন্ত। এই বংশধারা জানাটা শুধু ঐতিহাসিক তথ্য নয় — নতুন কোনো সমস্যায় কোন existing architecture থেকে শুরু করা উচিত সেটা আন্দাজ করার সবচেয়ে দ্রুত উপায় এটাই।