Hyperparameter Tuning মডেলের পারফরম্যান্স উন্নত করার জন্য মডেলের হাইপারপ্যারামিটারগুলো পরিবর্তন ও পরীক্ষা করার প্রক্রিয়া। এটি অত্যন্ত গুরুত্বপূর্ণ কারণ সঠিক হাইপারপ্যারামিটার মডেলের দক্ষতা অনেকাংশে বাড়িয়ে তুলতে পারে।
নিচে Hyperparameter Tuning-এর কিছু প্রধান কৌশল ও পদ্ধতি আলোচনা করা হলো:
১. ম্যানুয়াল সার্চ
এটি খুবই সাধারণ একটি পদ্ধতি, যেখানে বিভিন্ন হাইপারপ্যারামিটার মান নিজের ইচ্ছা মতো নির্বাচন করা হয় এবং সেই সেটিংস অনুযায়ী মডেল Training করানো হয়। তবে এটি ছোট মডেলের জন্য কার্যকর হলেও বড় মডেল ও বড় হাইপারপ্যারামিটার স্পেসের জন্য সময়সাপেক্ষ এবং অকার্যকর হতে পারে।
২. Grid Search
Grid Search-এ প্রতিটি সম্ভাব্য হাইপারপ্যারামিটার কম্বিনেশনের জন্য মডেল Training করা হয়। এটি মডেল পারফরম্যান্সের জন্য সর্বোত্তম কম্বিনেশন খুঁজে পেতে সহায়ক, তবে এটি computationally খুবই ব্যয়বহুল এবং বড় মডেলের জন্য খুব বেশি সময় নেয়।
উদাহরণ:
from sklearn.model_selection import GridSearchCV
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
def create_model(learning_rate=0.01):
model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(input_dim,)))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer=Adam(learning_rate=learning_rate), loss='categorical_crossentropy', metrics=['accuracy'])
return model
model = KerasClassifier(build_fn=create_model, epochs=10, batch_size=32, verbose=0)
param_grid = {'batch_size': [16, 32, 64], 'learning_rate': [0.001, 0.01, 0.1]}
grid = GridSearchCV(estimator=model, param_grid=param_grid, cv=3)
grid_result = grid.fit(X_train, y_train)
print("Best parameters:", grid_result.best_params_)
print("Best accuracy:", grid_result.best_score_)
৩. Random Search
Random Search হলো Grid Search-এর একটি বিকল্প পদ্ধতি, যেখানে সম্ভাব্য সমস্ত কম্বিনেশনের পরিবর্তে কিছু নির্দিষ্ট র্যান্ডম কম্বিনেশন পরীক্ষা করা হয়। এটি computationally বেশি কার্যকর এবং বড় ডেটাসেটে কার্যকর।
উদাহরণ:
from sklearn.model_selection import RandomizedSearchCV
param_dist = {'batch_size': [16, 32, 64], 'learning_rate': [0.001, 0.01, 0.1]}
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=5, cv=3)
random_result = random_search.fit(X_train, y_train)
print("Best parameters:", random_result.best_params_)
print("Best accuracy:", random_result.best_score_)
৪. Bayesian Optimization
Bayesian Optimization হলো একটি বুদ্ধিমান অনুসন্ধান পদ্ধতি, যেখানে সম্ভাব্য কম্বিনেশনগুলোর মধ্যে অগ্রাধিকারের ভিত্তিতে সবচেয়ে উপযোগী প্যারামিটার চিহ্নিত করা হয়। এটি তুলনামূলকভাবে কম সময়ে কার্যকর সমাধান দিতে পারে। Hyperopt এবং Scikit-Optimize এর মতো লাইব্রেরিগুলো Bayesian Optimization-এর জন্য জনপ্রিয়।
Hyperopt উদাহরণ:
from hyperopt import fmin, tpe, hp, Trials
from hyperopt import STATUS_OK
def objective(params):
model = Sequential()
model.add(Dense(int(params['units']), activation='relu'))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer=Adam(learning_rate=params['learning_rate']), loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=10, verbose=0)
accuracy = history.history['accuracy'][-1]
return {'loss': -accuracy, 'status': STATUS_OK}
space = {
'units': hp.quniform('units', 32, 256, 32),
'learning_rate': hp.uniform('learning_rate', 0.0001, 0.01)
}
best = fmin(fn=objective, space=space, algo=tpe.suggest, max_evals=20)
print("Best parameters:", best)
৫. Genetic Algorithm (Genetic Programming)
Genetic Algorithm হলো একটি প্রাকৃতিক নির্বাচনের ভিত্তিতে কাজ করা একটি পদ্ধতি, যেখানে বিভিন্ন হাইপারপ্যারামিটার "জনসংখ্যা" তৈরি করে ক্রমাগত তাদের পারফরম্যান্সের উপর ভিত্তি করে বিবর্তিত হয়। TPOT এবং DEAP এর মতো লাইব্রেরিগুলোতে Genetic Algorithm ব্যবহার করে টিউন করা যায়।
৬. Keras Tuner
Keras Tuner হলো Keras লাইব্রেরির উপর ভিত্তি করে একটি Hyperparameter Tuning টুল। এটি Hyperband, Random Search এবং Bayesian Optimization সমর্থন করে এবং Neural Network-এর বিভিন্ন প্যারামিটার টিউন করতে সহজতর করে তোলে।
উদাহরণ:
from keras_tuner import Hyperband
def build_model(hp):
model = Sequential()
model.add(Dense(units=hp.Int('units', min_value=32, max_value=512, step=32), activation='relu'))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer=Adam(learning_rate=hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])), loss='categorical_crossentropy', metrics=['accuracy'])
return model
tuner = Hyperband(build_model, objective='val_accuracy', max_epochs=10, factor=3, directory='my_dir', project_name='intro_to_kt')
tuner.search(X_train, y_train, epochs=10, validation_data=(X_val, y_val))
best_model = tuner.get_best_models(num_models=1)[0]
৭. Automated Machine Learning (AutoML)
AutoML টুলস যেমন H2O.ai, Google AutoML এবং TPOT-এর মাধ্যমে স্বয়ংক্রিয়ভাবে মডেল তৈরি ও Hyperparameter Tuning করা যায়। AutoML-এর মাধ্যমে মডেল তৈরির প্রক্রিয়া সম্পূর্ণভাবে স্বয়ংক্রিয় হতে পারে, যা Hyperparameter Tuning সহ কাস্টম মডেল নির্বাচন এবং মেট্রিকের ভিত্তিতে সেরা মডেল চিহ্নিত করে।
সারসংক্ষেপ
- ম্যানুয়াল সার্চ: ছোট মডেল বা কম হাইপারপ্যারামিটার স্পেসের জন্য ব্যবহারযোগ্য।
- Grid Search: সব সংমিশ্রণ পরীক্ষা করার মাধ্যমে সেরা ফলাফল দেয় তবে সময়সাপেক্ষ।
- Random Search: কম সময়ে কার্যকর ফলাফল দেয়।
- Bayesian Optimization: দ্রুত কার্যকর ফলাফল দিতে পারে।
- Genetic Algorithm: জেনেটিক বিবর্তনের ভিত্তিতে পারফরম্যান্স উন্নয়ন।
- Keras Tuner: নির্দিষ্টভাবে কেরাসের জন্য।
- AutoML: পুরো প্রক্রিয়াকে স্বয়ংক্রিয় করে।
এই কৌশলগুলো ব্যবহার করে Hyperparameter Tuning প্রক্রিয়া আরো দক্ষভাবে সম্পন্ন করা যায়, যা আপনার মডেলের কার্যকারিতা উন্নয়ন করবে।
Read more