Chapter 11 of 16
Seeing the search landscape to understand what you found
একটা hyperparameter search চালালে trial-এর একটা dataset তৈরি হয় — প্রতিটা trial-এর একটা configuration, একটা ফলাফল। কিন্তু সংখ্যার একটা তালিকা নিজে থেকে প্রায় কিছুই বলে না। Visualization-ই একটা search run-কে বুঝে ওঠার মতো কিছুতে রূপান্তর করে — কোন hyperparameter গুরুত্বপূর্ণ ছিল? Search space-এর কোন অঞ্চলটা ভালো ছিল? Search কি আসলেই converge করেছিল, নাকি বাজেট ফুরানোর সময়ও উন্নতি করছিল? দুটো hyperparameter-এর মধ্যে কি এমন কোনো interaction আছে যেটা একটা মাত্র metric থেকে বোঝা যাবে না?
এই plot প্রতিটা trial-এর objective value (যেমন validation AUC) দেখায়, যেই ক্রমে trial evaluate হয়েছিল সেই ক্রমে। এটা সবচেয়ে মৌলিক প্রশ্নের উত্তর দেয় — সময়ের সাথে সাথে search কি উন্নতি করেছিল? সাধারণভাবে বাড়তে থাকা একটা ট্রেন্ড দেখায় search কার্যকরভাবে space explore করছে। প্রথমদিকের trial-এর পর একটা সমতল রেখা মানে হয় হয় search converge করেছে (ভালো), নয়তো আটকে গেছে (তদন্ত দরকার)।
এই plot প্রতিটা hyperparameter-এর মান trial-জুড়ে objective-এর variance কতটা ব্যাখ্যা করে তার ভিত্তিতে র্যাংক করে। এই প্রশ্নের উত্তর দেয় — কোন hyperparameter-এ মনোযোগ দেওয়া উচিত? Optuna এটা হিসাব করে fANOVA পদ্ধতিতে — objective function-এর variance-কে প্রতিটা hyperparameter আর প্রতিটা hyperparameter-জোড়ার জন্য ভেঙে দেখায়। Tree-based model-এ প্রায় সবসময় max_depth আর learning_rate সবচেয়ে বেশি প্রভাবশালী; neural network-এ প্রায় সবসময় lr-ই সবচেয়ে গুরুত্বপূর্ণ, optimizer-এর ভেতরের hyperparameter (beta1, beta2) সাধারণত সবচেয়ে কম প্রভাবশালী।
কোনো hyperparameter-এর search range যদি পুরোপুরি এমন একটা অঞ্চলে থাকে যেখানে objective সমতল, তাহলে সেটার importance score শূন্যের কাছাকাছি দেখাবে — hyperparameter-টা গুরুত্বহীন বলে নয়, বরং try করা সব value কাছাকাছি ফলাফল দিয়েছে বলে। কম-importance hyperparameter সত্যিই অপ্রাসঙ্গিক range-এ search করা হয়েছিল কিনা, সেটা সবসময় যাচাই করে দেখুন।
এই plot সব trial একসাথে দেখায় — প্রতিটা hyperparameter একটা vertical axis, প্রতিটা trial একটা লাইন যা সব axis-জুড়ে তার মানগুলো সংযুক্ত করে। লাইনগুলো objective value অনুযায়ী রঙিন হয়। যেখানে সেরা রঙের লাইনগুলো (ধরুন হলুদ, বেশি ভালো মানে) কোনো একটা axis-এ একটা নির্দিষ্ট জায়গায় জড়ো হয়, সেটা সেই hyperparameter-এর জন্য একটা ভালো value range নির্দেশ করে। দুটো পাশাপাশি axis-এর মধ্যে লাইনগুলো নাটকীয়ভাবে ক্রস করলে সেটা ইঙ্গিত দেয় সেই দুই hyperparameter-এর মধ্যে interaction আছে — একটার সেরা মান আরেকটার মানের ওপর নির্ভর করে।
Parallel coordinates plot যখন দুটো hyperparameter-এর মধ্যে interaction-এর ইঙ্গিত দেয়, contour plot সেই দুটোকে একসাথে নিয়ে objective কেমন পাল্টায় সেটা দেখায়। প্রায় গোলাকার একটা high-value অঞ্চল মানে দুটো hyperparameter মোটামুটি independent — প্রতিটার জন্য আলাদাভাবে ভালো value খুঁজলেই চলে। একটা লম্বাটে বা diagonal high-value অঞ্চল মানে interaction আছে — এই দুটোকে একসাথে tune করতে হবে।
এই plot প্রতিটা hyperparameter-এর marginal প্রভাব দেখায়, বাকি সব hyperparameter তাদের সেরা মানে স্থির রেখে। এটা বুঝতে সাহায্য করে — কোনো hyperparameter-এর searched range-এর মধ্যেই একটা স্পষ্ট optimum আছে কিনা, নাকি সেরা মানগুলো range-এর একেবারে কিনারায় (যার মানে range আরো বাড়ানো দরকার)। আর objective কোনো hyperparameter-এর সাপেক্ষে সমতল কিনা, যার মানে হয়তো সেই hyperparameter ভবিষ্যতের search থেকে বাদ দিয়ে fixed রাখা যায়।
Neural network HPO-র জন্য প্রতিটা trial-এর validation loss training epoch-এর সাপেক্ষে প্লট করলে training dynamics বোঝা যায়, আর early stopping ঠিকমতো কাজ করছে কিনা সেটাও ধরা পড়ে। কয়েক epoch পরই diverge করা trial মানে learning rate খুব বেশি। খুব দ্রুত plateau-তে পৌঁছানো trial মানে learning rate খুব কম, অথবা model capacity কম। Training আর validation loss-এর মধ্যে বড় ফাঁক মানে overfitting — regularization বাড়ানো দরকার। শেষ epoch-এও validation loss কমতে থাকলে মানে training budget খুব কম, epoch সংখ্যা বাড়ানো দরকার।
একটা বড় search (৫০+ trial) শেষ হলে সব trial-এর objective value-এর একটা histogram প্লট করলে বোঝা যায় সমস্যাটা সামগ্রিকভাবে কতটা কঠিন (বিস্তৃত distribution মানে hyperparameter choice অনেক গুরুত্বপূর্ণ), আর ভালো configuration-এর একটা ছোট্ট, বিরল অঞ্চল আছে নাকি একটা বিস্তৃত সমতল অঞ্চল আছে (মানে tuning সহজ সমস্যা)।