রেগুলারাইজেশন (Regularization)
ধরা যাক, একজন শিক্ষক পরীক্ষার খাতা বা প্রশ্ন দেখছেন। দুইজন ছাত্রই হয়তো তার করা প্রশ্নের সঠিক উত্তর দিয়েছে, কিন্তু:
- ছাত্র A (Student A) স্পষ্ট করে, সহজ ভাষায়, ৩ বাক্যের একটি উত্তর লিখেছে।
- ছাত্র B (Student B) ৩ পাতা ভরে একটি এলোমেলো রচনা লিখেছে, যার মাঝের কোনো এক জায়গায় হয়তো আসল উত্তরটি লুকানো আছে।
একজন ভালো শিক্ষক অবশ্যই এই সহজ ও সাধারণ উত্তরের জন্য অতিরিক্ত নম্বর (bonus marks) দেবেন। এদের দুজনের উত্তরই সঠিক, কিন্তু এখানকার সবচেয়ে সাধারণ উত্তরটি বুঝতে অনেক বেশি সহজ। এটি অন্যান্য নতুন প্রশ্নগুলোর ক্ষেত্রেও আরও ভালোভাবে প্রয়োগ করা বা জেনারালাইজ (generalize) করা সম্ভব, এবং এতে লুকিয়ে থাকা ভুলগুলো থাকার সম্ভাবনাও অনেক কম।
মেশিন লার্নিংয়ের ভাষায় এই রেগুলারাইজেশন (Regularization) মডেলটি মূলত ঠিক এই সাধারণ বা সহজ (simplicity) উত্তরের ওই এক্সট্রা বা বাড়তি নম্বরের (bonus) মতোই কাজ করে। এটি মূলত মডেলের লস ফাংশনের (loss function) ওপর একটি পেনাল্টি (penalty) বসিয়ে মডেলটিকে বেশি জটিল বা কঠিন কাজ করা থেকে দূরে রাখে বা নিরুৎসাহিত করে। এর মাধ্যমে মডেলটিকে মূলত এই কথাই বলা হয়: "ঠিক আছে, তুমি চাইলে খুব কঠিন কোনো উত্তরও দিতে পারো, কিন্তু এর জন্য তোমাকে মাশুল (cost) গুনতে হবে।"
মডেলগুলো কেন ওভারফিট (overfit) করে
কোনো রেগুলারাইজেশন (regularization) ছাড়া, একটি মডেল তার ট্রেইনিং এররকে (training error) কমানোর জন্য যা যা করা সম্ভব তার সবকিছুই করবে — এমনকি এর জন্য যদি তাকে খুব জঘন্য, পাগলাটে (crazy), বা ভঙ্গুর কোনো প্যাটার্ন (patterns) শিখতে হয়, তবে সে সেটিও শিখবে। একটি বহুপদী বা পলিনোমিয়াল মডেলকে (polynomial) হয়তো এখানকার প্রতিটি ট্রেইনিং পয়েন্টে নিখুঁতভাবে হিট (hit) করার জন্য অনেক বড় আকারের কোএফিশিয়েন্ট (enormous coefficients) (+৫০,০০০x³ - ৪৯,৯৯৯x²-এর মতো) তৈরি করে নিতে পারে। এটি হয়তো খাতায়-কলমে দেখতে খুব দারুণ লাগতে পারে, কিন্তু এটিকে নতুন কোনো ডেটার ওপর টেস্ট করে দেখুন — দেখবেন এটি একেবারেই উল্টোপাল্টা (haywire) বা হাবিজাবি সব কাজ করতে শুরু করেছে।
রেগুলারাইজেশন (regularization) কীভাবে কাজ করে
মডেলটি সাধারণত এর লস (Loss) = ট্রেইনিং ডেটার ভুল বা এরর (Error) কমানোর চেষ্টা করে। কিন্তু রেগুলারাইজেশনের (regularization) সাহায্যে, এটি মূলত এই জিনিসটিই কমনোর বা মিনিমাইজ (minimizes) করার চেষ্টা করে:
লস (Loss) = ট্রেইনিং ডেটার ভুল বা এরর (Error on training data) + λ × কমপ্লেক্সিটি পেনাল্টি (Complexity penalty)
আর এই λ (ল্যামডা বা lambda) মূলত আপনি এর কমপ্লেক্সিটিটিকে (complexity) ঠিক কতটুকু পেনাল্টি (penalize) দিতে চান তা নিয়ন্ত্রণ করে। বেশি বা হাই λ (High λ) → আরও সহজ মডেল, বেশি বায়াস (bias)। কম বা লো λ (Low λ) → জটিল মডেল, বেশি ভ্যারিয়ান্স (variance)।
L1 বনাম L2 রেগুলারাইজেশন (L1 vs L2 Regularization)
- L1 (ল্যাসো বা Lasso): পেনাল্টি (Penalty) = |ওয়েট বা weights|-এর যোগফল। এটি এখানকার বেশ কয়েকটি ওয়েটকে (weights) কেটে পুরোপুরি শূন্য বা জিরো (zero) করে দেয়, যা মূলত এর ফিচার বা বৈশিষ্ট্যগুলোকেই পুরোপুরি সরিয়ে ফেলার মতো কাজ করে। এটি ফিচার সিলেকশনের (feature selection) জন্য খুবই দারুণ।
- L2 (রিজ বা Ridge): পেনাল্টি (Penalty) = ওয়েট বা weights²-এর যোগফল। এটি ওয়েটগুলোকে (weights) ছোট করে শূন্যের কাছাকাছি নিয়ে আসে কিন্তু পুরোপুরি গায়েব বা জিরো (zero) করে দেয় না। এটি এখানকার সবকটি ফিচারকেই বজায় রাখে, কিন্তু কোনোটিকেই একা ডমিনেট (dominating) করতে বা প্রভাব বিস্তার করতে দেয় না।
- ইলাস্টিক নেট (Elastic Net): এটি মূলত L1 এবং L2 এর একটি মিক্স বা মিশ্রণ (Mix)। এটি হলো দুই পক্ষেরই সেরা রূপ (Best of both worlds)।
অ্যাকশনে রেগুলারাইজেশন: রিজ বনাম ল্যাসো (Regularization in Action: Ridge vs Lasso)
সঠিক বা সেরা ল্যামডা বেছে নেওয়া (Choosing the right lambda)
ল্যামডা (Lambda) (বা রেগুলারাইজেশন স্ট্রেংথ বা strength) হলো মূলত একটি হাইপারপ্যারামিটার (hyperparameter) — আপনাকে এটি বেছে নিতে হয়, অ্যালগরিদমটি এটিকে নিজে থেকে বেছে নিতে পারে না। এটিকে অনেক বেশি ছোট রাখলে, আপনি হয়তো খুব সহজেই ওভারফিটিংয়ের (overfitting) কবলে পড়তে পারেন। আবার একইভাবে এটিকে অনক বেশি বড় রাখলে, আপনি আন্ডারফিটিংয়ের (underfitting) কবলে পড়তে পারেন (কারণ মডেলটিকে এত বেশি পেনাল্টি বা শাস্তি দেওয়া হবে যে, এটি নতুন কিছু শেখারও কোনো সুযোগ তৈরি করতে পারবে না)।
এ কাজের জন্য সবচেয়ে সাধারণ বা স্ট্যান্ডার্ড অ্যাপ্রোচটি হলো (standard approach): এখানকার বিভিন্ন ল্যামডার (lambda) মান পরীক্ষা করার জন্য ক্রস-ভ্যালিডেশন (cross-validation) ব্যবহার করা এবং সেখান থেকে সবচেয়ে ভালো টেস্ট পারফরম্যান্স (test performance) প্রদান করা মানটিকে বেছে নেওয়া।
সব জায়গায় রেগুলারাইজেশন (Regularization everywhere)
রেগুলারাইজেশন (Regularization) শুধু লিয়ার মডেলগুলোর (linear models) জন্যই নয়। বরং এটি প্রায় সব জায়গাতেই ব্যবহার করা হয়ে থাকে:
- নিউরাল নেটওয়ার্কের (neural networks) ড্রপআউট (Dropout) — এটি মূলত ট্রেইনিং বা অভ্যাসের সময় এর নিউরনগুলোকে (neurons) রেন্ডমলি বা এলোমেলোভাবে বন্ধ বা অফ করে দেয়
- ডিসিশন ট্রিয়ের (decision trees) সর্বোচ্চ গভীরতা বা ম্যাক্স-ডেপথ লিমিট (Max depth limits) — এটি এখানকার গাছ বা ট্রিগুলোকে (trees) অতিরিক্ত বড় বা ডিপ (deep) হওয়া থেকে বাধা দেয়
- আর্লি স্টপিং (Early stopping) বা আগেভাগে বন্ধ করা — মডেলটি এখানকার ডেটাগুলোকে পুরোপুরি মুখস্থ করার আগেই মূলত এর ট্রেইনিংটিকে (training) থামিয়ে বা স্টপ (stop) করে দেয়
Key Metrics
ছোট কুইজ
পড়া চালিয়ে যান