Chapter 1 of 16
The knobs you turn before training even begins
কল্পনা করুন — আপনি এবং আপনার বন্ধু দুজনেই একই algorithm, একই dataset দিয়ে একটা machine learning model বানালেন। কিন্তু বন্ধুর accuracy আপনার চেয়ে ১২ পয়েন্ট বেশি। কী করল সে আলাদা? Data বদলায়নি। Algorithm বদলায়নি। শুধু বদলেছে — train করার আগে model-কে দেওয়া কিছু সেটিং।
এই সেটিংগুলোর নাম hyperparameter। আর এগুলো ঠিকমতো বেছে নেওয়াই — যাকে বলা হয় hyperparameter optimization (HPO) — প্রায়ই ঠিক করে দেয় যে একটা model শুধু demo-তে চলবে নাকি সত্যিকারের production-এ কাজে লাগবে। এই পুরো course-টাই সেই ব্যবধানটা নিয়ে — hyperparameter কী, কেন এত গুরুত্বপূর্ণ, আর কীভাবে ভালো মান খুঁজে বের করতে হয়।
কোনো equation-এ ঢোকার আগে একটু ভাবুন — রুটি বানানোর কথা। Recipe বলে দেয় ময়দা আর পানির অনুপাত, কিন্তু বলে না আপনার ওভেনের তাপমাত্রা কত হওয়া উচিত, বা আপনার রান্নাঘর যদি বেশি ঠান্ডা হয় তাহলে খামির কতটুকু দিতে হবে। ওভেনে ঢুকে গেলে আর কিছু বদলানো যায় না। ভুল বেছে নিলে রুটি চ্যাপ্টা, পোড়া, বা raw হবে — আটার মান যতই ভালো হোক।
Machine learning model train করাটা ঠিক এরকমই। একটাও training example দেখার আগে আপনাকে বেছে নিতে হয়: model কত দ্রুত শিখবে, কতটা জটিল হতে পারবে, কতবার data দেখবে। এই সিদ্ধান্তগুলোকেই বলে hyperparameter — আর এগুলো বুদ্ধিমত্তার সাথে বেছে নেওয়ার প্রক্রিয়াটাই হলো hyperparameter optimization।
Hyperparameter হলো সেই knob যেটা আপনি training শুরুর আগে ঘোরান। Model parameter হলো সেই মান যা model নিজে training-এর সময় শেখে। Hyperparameter বেছে নেন আপনি; parameter আবিষ্কার করে algorithm।
Hyperparameter ঠিকমতো বুঝতে হলে আগে বুঝতে হবে এটা কী নয়। সবচেয়ে সহজ model ধরুন — linear regression:
এখানে (slope) আর (intercept) হলো model parameter। এগুলো কেউ হাতে বসায় না — algorithm নিজেই gradient descent দিয়ে খুঁজে বের করে যে কোন আর -তে prediction সবচেয়ে কাছাকাছি হয়।
এখন ধরুন আমরা ridge regression ব্যবহার করছি, যেটা বড় weight-এ জরিমানা করে:
এখানে (lambda) নিয়ন্ত্রণ করে জরিমানাটা কতটা কড়া হবে। কিন্তু training-এর সময় শেখা যায় না। যদি algorithm-কে training loss minimize করে বেছে নিতে দেওয়া হয়, সে সবসময় বেছে নেবে — কারণ যেকোনো জরিমানাই training loss বাড়ায়। তাই -কে বাইরে থেকে, training-এর আগে বেছে নিতে হয়। হলো একটা hyperparameter।
| Model Parameter | Hyperparameter | |
|---|---|---|
| কে বেছে নেয় | Learning algorithm, নিজে থেকে | মানুষ বা HPO algorithm, training-এর আগে |
| কখন ঠিক হয় | Training চলাকালীন | Training শুরুর আগে (training জুড়ে fixed থাকে) |
| কীভাবে পাওয়া যায় | Loss function minimize করে | Validation performance দেখে search করে |
| উদাহরণ | Weight, bias, coefficient | Learning rate, tree depth, regularization strength |
| সংখ্যা | হাজার থেকে কোটি | মাত্র কয়েকটা থেকে কয়েক ডজন |
আনুষ্ঠানিকভাবে বলতে গেলে, যদি মানে model parameter আর মানে hyperparameter, তাহলে training মানে হলো:
একটা নির্দিষ্ট -র জন্য সেরা খোঁজা। আর hyperparameter optimization হলো বাইরের প্রক্রিয়া:
এই দুটো মিলে তৈরি হয় একটা bilevel optimization problem — ভেতরের loop model train করে, বাইরের loop validation performance দেখে configuration খোঁজে। এই nested structure-এর কারণেই HPO এত ব্যয়বহুল: প্রতিটা test করতে গেলে পুরো training আবার শুরু থেকে করতে হয়।
λ প্রস্তাব করো
HPO algorithm একটা নতুন hyperparameter configuration বেছে নেয়
Model train করো
Inner loop: নির্দিষ্ট λ-এর জন্য θ*(λ) খোঁজো, training loss minimize করে
Evaluate করো
Train করা model দিয়ে validation loss মাপো
Strategy update করো
ফলাফল দেখে HPO algorithm পরের proposal ঠিক করে
Hyperparameter-কে ছোট implementation detail ভাবা লোভনীয়। বাস্তবে এগুলো প্রায়ই ঠিক করে দেয় project সফল হবে না ব্যর্থ।
Neural network-এ learning rate। Learning rate নিয়ন্ত্রণ করে weight update করার সময় প্রতিটা পদক্ষেপ কতটা বড় হবে। খুব বেশি হলে: loss ঘুরতে থাকে বা diverge করে। খুব কম হলে: এত ধীরে converge করে যে computing budget শেষ হয়ে যায়। ঠিকমতো বেছে নিলে: দ্রুত ও স্থিরভাবে converge করে। একই data, একই architecture, একই epoch — কিন্তু একটা সংখ্যার কারণে তিনটা সম্পূর্ণ আলাদা ফলাফল।
Decision tree-এ depth। Unlimited depth দিলে tree training data মুখস্থ করে ফেলে — training accuracy প্রায় perfect, কিন্তু নতুন data-তে ফেল। Depth সীমিত করা একটা hyperparameter decision যা সরাসরি training accuracy আর generalization-এর মধ্যে ট্রেড-অফ তৈরি করে।
Regularization strength। Ridge regression-এ দিলে plain linear regression হয়ে যায় — noisy data-তে overfit করে। অনেক বেশি হলে penalty এত বড় হয় যে model সব input-এর জন্য একই prediction করে। মাঝখানে কোথাও আছে সঠিক — আর সেটা খুঁজে বের করাই HPO।
Framework-এর default value গুলো অনেক dataset-এ গড়পড়তা কাজ করার জন্য বেছে নেওয়া — কোনো নির্দিষ্ট dataset-এর জন্য এগুলো optimal হওয়ার সম্ভাবনা কম। Default-কে শুরুর বিন্দু মানুন, চূড়ান্ত উত্তর নয়।
ঐতিহাসিকভাবে বেশিরভাগ practitioner manually tune করত: একটা মান বেছে নাও, train করো, validation score দেখো, intuition দিয়ে adjust করো, আবার করো। এর সুবিধা আছে — domain expertise কাজে লাগানো যায়, স্পষ্ট বাজে range বাদ দেওয়া যায়। কিন্তু সীমাবদ্ধতাও আছে।
| Manual Tuning | Automated HPO | |
|---|---|---|
| মানুষের পরিশ্রম | বেশি; সবসময় নজর রাখতে হয় | Setup-এর পরে কম; নিজে চলতে পারে |
| Reproducibility | কম; practitioner-এর স্মৃতির উপর নির্ভরশীল | বেশি; process আর result সব log হয় |
| অনেক hyperparameter-এ scale করা | খারাপ; ২-৩-এর বেশি হলে মানুষ হিমশিম খায় | ভালো; algorithm ডজন খানেক dimension সামলাতে পারে |
| অদ্ভুত interaction খুঁজে পাওয়া | বিরলভাবে | প্রায়ই, বিশেষত model-based method-এ |
সেরা ফলাফল সাধারণত দুটোর মিশেলে আসে: domain expertise দিয়ে search space সংকুচিত করো, আর automated algorithm দিয়ে সেই space efficiently explore করো।
Learning rate থেকে — এই range দিলে পুরো budget স্পষ্টতই বাজে region-এ নষ্ট হবে। Domain knowledge দিয়ে সংকুচিত করা search space প্রায় সবসময়ই বেশি কার্যকর।
Fraud detection। ব্যাংকের gradient boosted tree model-এ tree depth, learning rate, আর boosting round-এর মতো hyperparameter শুধু accuracy নয়, একটা business-driven metric-এর জন্য tune করতে হয়।
Medical imaging। X-ray থেকে রোগ ধরার CNN অত্যন্ত sensitive — learning rate schedule বা data augmentation strength একটু বেশি হলে model রোগের আসল লক্ষণ বাদ দিয়ে hospital-specific artifact মুখস্থ করে ফেলে।
Recommender system। Latent factor-এর dimension আর regularization strength সরাসরি ঠিক করে দেয় system সত্যিকারের relevant জিনিস suggest করবে নাকি মুষ্টিমেয় active user-এর দিকে ঝুঁকবে।
এই উদাহরণগুলো থেকে একটাই শিক্ষা: hyperparameter হলো model development-এর পরে যোগ করা কিছু নয়। "ভালো model" বলতে কী বোঝায় — accuracy, latency, fairness, robustness — সেটাই HPO-কে বলে দিতে হয়। Hyperparameter আর objective অবিচ্ছেদ্য।
Test set-এ performance দেখে model বেছে নিলে আর test set থাকে না — সেটা দ্বিতীয় validation set হয়ে যায়, আর reported performance অতিরিক্ত আশাবাদী হয়ে পড়ে। Test set মাত্র একবার ছোঁয়া হয়, একদম শেষে।
Vision task-এ ভালো কাজ করা learning rate language task-এ automatically ভালো নয়। Hyperparameter sensitivity architecture, dataset, আর objective অনুযায়ী বদলায়। সবসময় search করুন, blindly transfer নয়।
State-of-the-art ফলাফল রিপোর্ট করা প্রায় প্রতিটা machine learning paper-এ hyperparameter search থাকে — প্রায়ই appendix-এ। Default hyperparameter দিয়ে চালানো model আর ভালোভাবে tune করা একই model-এর ব্যবধান অনেক সময় সম্পূর্ণ আলাদা architecture-এর চেয়েও বড়। HPO বোঝাটা nice-to-have দক্ষতা নয় — ML সিরিয়াসলি করার একটা মৌলিক অংশ।