久しぶりに欲しいものができたんですよね。無印の「軽量オーストラリアダウンポケッタブルマフラー」なんですけどオンラインでも全部在庫がないみたいで入荷を心待ちにしています。
そんなことはおいておいて、本日はハイパーパラメータ最適化についてです。
ハイパーパラメータとは
ハイパーパラメータの前にパラメータがありますよね、違いはなんでしょう?LassoとRidgeを例に取りましょう。上の記事で解説したのでそちらもみていただきたいのですが、モデルを定義する際に学習させる変数がありますよね。よく






これでパラメータとハイパーパラメータの違いが理解できたと思います。真相学習や機械学習の問題の一つはこのハイパーパラメータの最適化です。例えばニューラルネットワークにおいて活性化関数に何を使うかや決定木において深さをどうするかめっちゃ悩みますよね?それを最適化したいんです。
Grid Search
よくある手法の一つがグリッドサーチです。これは格子状にハイパーパラメータの候補を作り、総当たりしてその結果を見てハイパーパラメータを選ぶという手法です。sklearnにあるのでみてみましょう。Optuna
あの最強のPreferred Networks, Inc.さんが開発しました。Optuna はハイパーパラメータの最適化を自動化するためのソフトウェアフレームワークです。ハイパーパラメータの値に関する試行錯誤を自動的に行いながら、優れた性能を発揮するハイパーパラメータの値を自動的に発見します。現在は Python で利用できます。これがすごいんです。論文にもなったようです。
Optuna は次の試行で試すべきハイパーパラメータの値を決めるために、完了している試行の履歴を用いています。そこまでで完了している試行の履歴に基づき、有望そうな領域を推定し、その領域の値を実際に試すということを繰り返します。そして、新たに得られた結果に基づき、更に有望そうな領域を推定します。具体的には、Tree-structured Parzen Estimator というベイズ最適化アルゴリズムの一種を用いています。

使い方






- https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf
- https://www.slideshare.net/hskksk/hyperopt
- https://pythonoum.wordpress.com/2018/09/09/parameter-tuning/
- https://qiita.com/kenchin110100/items/ac3edb480d789481f134
