ゆるふわめも

東京か京都にいます。

Hyperoptなどのハイパーパラメータチューニングとその関連手法についてのメモ

ねむい。SMACとTPEが概要しかつかめていないので次はここを調べよう。

追記:jsaiにて発表があるのを見つけました、行けばよかった…自分で断っといといてあれだけど…

jsai2017:3Q1-7in1 サンプリングを用いた機械学習パイプライン探索手法

データ全てを使って訓練・評価を行うのは時間がかかるため、サンプリングして交差検証の時間を短縮している。参考文献にはないけれども以下のものと同じ考えなように思う、初めは少ないデータで精度が高そうなモデルの選択肢を減らして、厳密に評価していく時にデータ数を増やしていく。

[1601.00024] Selecting Near-Optimal Learners via Incremental Data Allocation

ハイパーパラメータの定義

データセットとモデルが与えられた時に、 モデルが求めるパラメータ以外のあらかじめ決める必要があるパラメータ。

例:Random Forest における n_estimators など

予測モデルを作成するに当たって、新しいデータに対してより評価手法の値を良くするようにハイパーパラメータを定めたい。以下では最大化するほど良い評価手法が与えられた時に、その値を向上させることを「精度向上」とか「性能向上」と書いています。

探索手法

このような予測モデルのアルゴリズムの選択・ハイパーパラメータの探索手法には、異なるデータセットでの実験結果を用いるものと用いないものがある。今回は「用いない」ものについて。

ランダム、全ての選択に対して一様に確率を割り当てて選択する。

Manual coordinate descend

普段行うように、いくつか変更するパラメータの集合を人力で選択して少しずつ精度を改善させてゆく。

ハイパーパラメータを幾つかの離散的な値に分けてしらみつぶしに探す。これをもっともよかったパラメータの組み合わせに対して再帰的に行う。一般的だが、探索空間が広いと適用は難しい。

Particle Swarm Optimization

粒子群最適化とも。連続最適化、組み合わせ最適化両方に適用可能。並列的な探索を行うが、各探索は「どれくらい精度を改善したか」を速度として持つ。 もっとも精度が改善した探索とその探索の際のパラメータの情報を、付近を探索していた探索に伝搬させる。上記ステップを繰り返す。

Genetic Algorithm

Randal S. Olson, Ryan J. Urbanowicz, Peter C. Andrews, Nicole A. Lavender, La Creis Kidd, and Jason H. Moore (2016). Automating biomedical data science through tree-based pipeline optimization. Applications of Evolutionary Computation, pages 123-137.

論文:[1601.07925] Automating biomedical data science through tree-based pipeline optimization

予測モデルのパイプラインを遺伝的アルゴリズムで最適化する。以下のTPOTではこれを用いているらしいけれど、コードの詳細を見れていない。アルゴリズムの探索にXGBoostが含まれているので、一旦これを取り除いて既存手法と同じ設定での比較をしたいところ。また、比較手法がRandomForestのみ?なぜだろう。

Sequential Model-Based Optimization(SMBO)

Particle Swarm Optimizationでは「どれくらい改善したか」の情報を速度として持っていたけれど、SMBOの枠組みでもこれに近いExpected Improvement(EI)を求める。あるハイパーパラメータの選択をした時の精度向上の期待値。FLASHなど最近の手法は時間当たりのEIであるExpected Improvement Per Second[2]を計算する。

各手法の評価については以下を参照。

pdf:Towards an Empirical Foundation for Assessing Bayesian Optimization of Hyperparameters

Tree-structured Parzen Estimator(TPE)

Bergstra, James, Daniel Yamins, and David Cox. “Making a science of model search: Hyperparameter optimization in hundreds of dimensions for vision architectures.” Proceedings of The 30th International Conference on Machine Learning. 2013.

ドキュメント:Tree-structured Parzen Estimator — Optunity 1.1.0 documentation

HyperOptにて使われている手法。後ほど詳細を追記したい。

Sequential Model-Based-optimization for general Algorithm Configuration(SMAC)

Hutter, F. and Hoos, H. H. and Leyton-Brown, K. Sequential Model-Based Optimization for General Algorithm Configuration In: Proceedings of the conference on Learning and Intelligent OptimizatioN (LION 5)

論文:Sequential Model-Based Optimization for General Algorithm Configuration (extended version)

Random Forestを用いて逐次的に最適化を行う。 FLASHなどの多くの実験では SMAC がベースラインとなっているが、[1]にてランダムな探索を使った時と比べあまり精度向上はないとも指摘されている。

Fast LineAr SearcH(FLASH)

Zhang, Yuyu, et al. “FLASH: fast Bayesian optimization for data analytic pipelines.” arXiv preprint arXiv:1602.06468 (2016).

予測アルゴリズムの選択とそのハイパーパラメータの選択を同時に最適化するが、そのまま予測のパイプラインをブラックボックス関数とみなして最適化するには探索空間が大きすぎる。そのため、二段階のベイズ最適化を行い、アルゴリズムの選択+ハイパーパラメータチューニングを行う。各ステップで加わる誤差を線形にモデル化して、性能が高いパイプラインを選択する。高速化のためのキャッシュなども実装。

参考文献

[1] Li, Lisha, et al. “Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization.” arXiv preprint arXiv:1603.06560 (2016).

[2] J. Snoek, H. Larochelle, and R. P. Adams. Practical bayesian optimization of machine learning algorithms. In NIPS, 2012.