Contenu connexe
Similaire à Inspection of CloudML Hyper Parameter Tuning (20)
Inspection of CloudML Hyper Parameter Tuning
- 3. About me
• nagachika
• Ruby committer, Stable branch maintainer
• Fukuoka.rb organizer
• GCPUG
• TFUG (TensorFlow User Group)
• TensorFlow contributor ← NEW
- 6. Cloud Machine Leaning
• Training
• TensorFlow が(分散環境、GPU環境含め)
⽤意されている実⾏環境のホスティングサービス
• TensorFlow 専⽤のPaaS(Heroku)
• Prediction
• TensorFlow Serving のホスティングサービス
• API で Training したモデルを利⽤できる
- 8. Hyper Parameter Tuning
• Hyper Parameter とは?
• モデル(SVM, Random Forest, MLP, CNN 等々なんであれ)の学習に
先⽴って決定しないといけないパラメータ
• モデルの精度に影響する
• より良い Hyper Parameter の探索が望ましい
- 11. Hyper Parameter Tuning
• Machine Learning Model
Input Output
トレーニング可能な
パラメータ
トレーニング不可な
パラメータ
期待する Output が得られるように
トレーニング可能なパラメータを
変更するのが
(教師あり)機械学習における
「学習」
- 12. Hyper Parameter Tuning
• Machine Learning Model
Input Output
トレーニング可能な
パラメータ
トレーニング不可な
パラメータ
Expectation
Error
期待(Expectation)と実際の
Outputの差を定量化したもの
(Error)を最⼩にする。
勾配を⽤いた⼿法が主流
- 14. Hyper Parameter Tuning
• Machine Learning Model
Input
(Hyper Parameter)
Output
(Error)
Hyper Parameter を⼊⼒として
誤差(Error)を出⼒とする関数とみなすこともできる
↓
Output(Error)を最⼩にする Input(Hyper Parameter)を
探索する最適化問題
- 15. Hyper Parameter Tuning
• Machine Learning Model
Input
(Hyper Parameter)
Output
(Error)
ただし、⼀般的に
• 勾配はわからない(そもそもInputが距離の概念がある空間と限らない)
• F(x) の評価には時間がかかる
- 16. Hyper Parameter Tuning
• Derivative-free optimization
(勾配によらない最適化⼿法)
• Simulated Annealing(焼きなまし法)
• Genetic Algorithm(遺伝的アルゴリズム)
→ ⼤量の試⾏が必要で実⾏コストが⼤きい
- 17. Hyper Parameter Tuning
• Scikit learn
• Grid Search(グリッドサーチ)
• パラメータ毎に有限の候補の組み合わせ試⾏
• Random Search(ランダム探索)
→ シンプルだけどいまいち賢くない
- 24. 実験1
• Cloud Machine Learning に Hyper Parameter
Tuning で 既知の関数の最適化をさせる
• F(x) を明⽰的に式として与える
• Hyper Parameter を受け取って F(x) を計算し
て報告するだけの Python モジュールを作成
- 35. 実験1
• あきらかに Grid Search ではない
• 低次元の多項式(?)くらいだとかなり賢い
(少ない試⾏回数で最適値の近くを当てる)
• 難しい形状の関数もそれなりに
(⼤域探索している? 局所解に落ちたりはなさそう)
➡ どうやってるんだろう???
- 44. 実験2
• 実験1と同じF(x)に対して Bayesian Optimization
• 最初の3点は実験1の(Cloud MLの)結果を流⽤
(Bayesian Optimization は初期何点かはランダム探索)
• PythonのBayesianOptimizationパッケージを利⽤
[https://github.com/fmfn/BayesianOptimization]
• Acquisition function には GP-UCB, kappa=0.5 を選択
- 54. 実験2
• Bayesian Optimization > Grid Search
• Cloud Machine Learning の Hyper Parameter
Tuning と似ているといえなくもない?
• Bayesian Optimization⾃体にも
Hyper Parameterがある(acquisition function
の選択, そのパラメータ etc..)
- 55. Summary
• Cloud Machine Learning のHyper Parameter
Tuning はかしこくて便利
• Hyper Parameter に対して複雑な関数になる時は
多めに試⾏回数を取ろう
• Hyper Parameter Tuning の裏側は
Bayesian Optimization?
• オレオレ Cloud Machine Learning の構築も夢では
ない!?