Optuna के साथ हाइपरपैरामीटर ऑप्टिमाइज़ेशन

Python में Deep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

हाइपरपैरामीटर क्या हैं

 

 

  • DRL एल्गोरिदम में हाइपरपैरामीटर बहुत होते हैं
  • प्रदर्शन पर बड़ा असर डाल सकते हैं
  • हाइपरपैरामीटर बढ़ने पर सर्च की जटिलता बढ़ती है

 

उदाहरण
डिस्काउंट रेट
PPO: क्लिपिंग एप्सिलॉन, एंट्रॉपी बोनस
एक्सपीरियंस रिप्ले: बफर साइज, बैच साइज
डिकेइड एप्सिलॉन ग्रीडिनेस शेड्यूल
फिक्स्ड Q-टार्गेट्स: $\tau$
लर्निंग रेट
लेयर्स की संख्या, प्रति लेयर नोड्स...
Python में Deep Reinforcement Learning

हाइपरपैरामीटर मान कैसे चुनें

 

उद्देश्य: औसत संचयी रिवार्ड्स

हाइपरपैरामीटर सर्च तकनीकें:

  • हाथ से ट्रायल-एंड-एरर
  • ग्रिड सर्च
  • रैंडम सर्च
  • समर्पित एल्गोरिदम

दर्जनों नॉब और डायल वाली एक बड़ी मैकेनिकल मशीन

Python में Deep Reinforcement Learning

Optuna का लोगो

 

Optuna वर्कफ़्लो:

  • एक ऑब्जेक्टिव फंक्शन परिभाषित करें
  • एक Optuna study बनाएँ
  • Optuna को ट्रायल्स पर इटरेट करने दें

 

 

import optuna

def objective(trial): ...
study = optuna.create_study()
study.optimize(objective, n_trials=100)
study.best_params
{'learning_rate': 0.001292481, 'batch_size': 8}
Python में Deep Reinforcement Learning

ऑब्जेक्टिव फंक्शन निर्दिष्ट करना

 

ऑब्जेक्टिव फंक्शन में:

  • रुचि के हाइपरपैरामीटर परिभाषित करें
  • ऑप्टिमाइज़ करने के लिए मेट्रिक(s) तय करें

हाइपरपैरामीटर स्पेसिफिकेशन में पूरी लचीलापन:

  • float
  • integer
  • categorical

 

def objective(trial: optuna.trial.Trial):

# Hyperparameters x and y between -10 and 10
x = trial.suggest_float('x', -10, 10) y = trial.suggest_float('y', -10, 10)
# Return the metric to minimize return (x - 2) ** 2 + 1.2 * (y + 3) ** 2
Python में Deep Reinforcement Learning

Optuna स्टडी

 

  • स्टडी सेव करने के लिए sqlite का उपयोग करें
  • डिफॉल्ट सैंपलर (TPE) से n_trials सैंपल करें
    • शुरुआत में हाइपरपैरामीटर रैंडमली चुनता है
    • फिर अधिक उम्दा क्षेत्रों पर फोकस करता है
  • यदि n_trials छोड़ा: इंटरप्ट होने तक ट्रायल्स चलेंगी
  • बाद में डेटाबेस से स्टडी लोड कर सकते हैं

 

import sqlite
study = optuna.create_study(
                 storage="sqlite:///DRL.db",
                 study_name="my_study")

study.optimize(objective, n_trials=100)
loaded_study = optuna.load_study(
                        study_name="my_study", 
                        storage="sqlite:///DRL.db")
Python में Deep Reinforcement Learning

स्टडी के परिणाम एक्सप्लोर करना

optuna.visualization.plot_param_importances(study)

x और y के लिए हाइपरपैरामीटर महत्त्व दिखाता बार चार्ट; y 0.71 और x 0.29 पर है.

optuna.visualization.plot_contour(study)

एक कंटूर प्लॉट जिसमें प्रति ट्रायल एक डॉट है. डॉट्स x = 2, y = -3 के आसपास केंद्रित हैं.

Python में Deep Reinforcement Learning

अभ्यास करते हैं!

Python में Deep Reinforcement Learning

Preparing Video For Download...