ここから本文です

機械学習のハイパーパラメーターを自動最適化、Preferred Networksがライブラリを公開

2018/12/5(水) 8:00配信

@IT

 Preferred Networksは2018年12月3日、ハイパーパラメーター自動最適化フレームワーク「Optuna(オプチュナ)」のβ版をオープンソースソフトウェアとして公開した。

 Optunaは、ニューラルネットワークを実装する際に必要な、隠れ層の数やノード数、学習の際の繰り返し回数といったハイパーパラメーターの最適値を自動的に発見する。ハイパーパラメーターを開発者が手作業で調整すると、試行錯誤を含むため、かなりの時間を費やす必要がある。

 Optunaは、Python 2.7または3.4以降向けのライブラリとして実装されている。Optunaからハイパーパラメーターを受け取るコードを記述し、その関数をOptunaに渡すと、Optunaがハイパーパラメーターを変化させて自動的に何度もそのコードを呼び出し、最適なハイパーパラメーターを発見する。

```
% pip install optuna
```
▲Optunaのインストール

```
import optuna

def objective(trial):
x = trial.suggest_uniform('x', -10, 10)
return (x - 2) ** 2

study = optuna.create_study()
study.optimize(objective, n_trials=100)
print(study.best_params)
```
▲Optunaを利用したサンプルコード trialオブジェクトを用いてハイパーパラメーターの値を最適化している。目的関数(x-2)の2乗をxが-10から10の範囲で最適化(関数の値を最小化する)する。試行回数は100回


 Preferred Networksが開発する機械学習ライブラリ「Chainer」だけでなく、「scikit-learn」や「XGBoost」「LightGBM」といったPython向けの機械学習ライブラリを利用した場合でも、ハイパーパラメーターの自動最適化が可能だ。

 「Hyperopt」や「Spearmint」「SMAC」など、ハイパーパラメーターの自動最適化ライブラリは他にもあるが、Optunaはこれらと比べて最適化対象のユーザーコードが複雑であっても高いモジュール性を保ったまま最適化できるという。

 さらに、反復アルゴリズムを用いて学習する場合、学習曲線から学習結果を予測し、良い結果が見込まれないときは試行を早期に終了して最適化を効率化する。複数の試行を同時に実施する非同期分散最適化にも対応する。

@IT

最終更新:2018/12/5(水) 8:00
@IT

あなたにおすすめの記事