Upload
nagachika-t
View
1.479
Download
0
Embed Size (px)
Citation preview
Inspection of
Cloud Machine Leaning Hyper Parameter Tuning
nagachika GCPUG Fukuoka
Agenda
• Hyper Parameter Tuning とは?
• Hyper Parameter Tuning の性能を実験
• Hyper Parameter Tuning の探索⽅法を推測
About me• nagachika
• Ruby committer, Stable branch maintainer
• Fukuoka.rb organizer
• GCPUG
• TFUG (TensorFlow User Group)
• TensorFlow contributor ← NEW
Pull Requests to TensorFlow
Cloud Machine Learning
Cloud Machine Leaning• Training
• TensorFlow が(分散環境、GPU環境含め) ⽤意されている実⾏環境のホスティングサービス
• TensorFlow 専⽤のPaaS(Heroku)
• Prediction
• TensorFlow Serving のホスティングサービス
• API で Training したモデルを利⽤できる
Hyper Parameter Tuning
Hyper Parameter Tuning
• Hyper Parameter とは?
• モデル(SVM, Random Forest, MLP, CNN 等々なんであれ)の学習に先⽴って決定しないといけないパラメータ
• モデルの精度に影響する
• より良い Hyper Parameter の探索が望ましい
Hyper Parameter Tuning• Machine Learning Model
Input Output
Hyper Parameter Tuning• Machine Learning Model
Dog or Cat
Hyper Parameter Tuning• Machine Learning Model
Input Output
トレーニング可能なパラメータ
トレーニング不可なパラメータ
期待する Output が得られるようにトレーニング可能なパラメータを
変更するのが(教師あり)機械学習における
「学習」
Hyper Parameter Tuning• Machine Learning Model
Input Output
トレーニング可能なパラメータ
トレーニング不可なパラメータ
Expectation
Error
期待(Expectation)と実際の Outputの差を定量化したもの
(Error)を最⼩にする。勾配を⽤いた⼿法が主流
Hyper Parameter Tuning• Machine Learning Model
Input Output
トレーニング可能なパラメータ
トレーニング不可なパラメータ
Expectation
Error
Hyper Parameter Tuning• Machine Learning Model
Input (Hyper Parameter)
Output (Error)
Hyper Parameter を⼊⼒として誤差(Error)を出⼒とする関数とみなすこともできる
↓ Output(Error)を最⼩にする Input(Hyper Parameter)を
探索する最適化問題
Hyper Parameter Tuning• Machine Learning Model
Input (Hyper Parameter)
Output (Error)
ただし、⼀般的に
• 勾配はわからない(そもそもInputが距離の概念がある空間と限らない)
• F(x) の評価には時間がかかる
Hyper Parameter Tuning
• Derivative-free optimization (勾配によらない最適化⼿法)
• Simulated Annealing(焼きなまし法)
• Genetic Algorithm(遺伝的アルゴリズム)
→ ⼤量の試⾏が必要で実⾏コストが⼤きい
Hyper Parameter Tuning
• Scikit learn
• Grid Search(グリッドサーチ)
• パラメータ毎に有限の候補の組み合わせ試⾏
• Random Search(ランダム探索)
→ シンプルだけどいまいち賢くない
Hyper Parameter Tuning
Cloud Machine Learning の Hyper Parameter Tuning は
どんな⽅法で探索をしているのだろうか?
Motivation
Motivation• 多層ニューラルネットワーク
• 層の数
• (各層の)ユニット(ニューロン)の数
• etc…
Layer-1 Layer-2
Motivation
• 層の数
• (各層の)ユニット(ニューロン)の数
➡ 1つのパラメータで表現したいな
➡ 極度に多峰的な関数になりそう…
Motivation
• 多峰性関数→最適化が困難な性質
➡ Cloud Machine Learning はこんな関数に対してどのくらい賢く最適化してくれるんだろう?
単峰性関数 多峰性関数
実験1
実験1
• Cloud Machine Learning に Hyper Parameter Tuning で 既知の関数の最適化をさせる
• F(x) を明⽰的に式として与える
• Hyper Parameter を受け取って F(x) を計算して報告するだけの Python モジュールを作成
実験1• Hyper Parameter
• 1変数(x), 2変数(x, y)
• 範囲は全て [-1, 1]
• 最⼩値を求める
• 探索回数(N)は
• 1変数 → N=10 or 15
• 2変数 → N=30
実験1
N=10
実験1
N=10
実験1
N=10
実験1
N=15
実験1
N=15
実験1
実験1
N=30
実験1
Ackley 関数
実験1
Ackley 関数 N=30
実験1
• あきらかに Grid Search ではない
• 低次元の多項式(?)くらいだとかなり賢い(少ない試⾏回数で最適値の近くを当てる)
• 難しい形状の関数もそれなりに(⼤域探索している? 局所解に落ちたりはなさそう)
➡ どうやってるんだろう???
Bayesian Optimization ベイズ最適化
Bayesian Optimization
http://mathetake.hatenablog.com/entry/2016/12/19/145311
Bayesian Optimization
https://www.youtube.com/watch?v=pQHWew4YYao
ベイズ的最適化の⼊⾨と応⽤ 機械学習による機械学習の実験計画
Bayesian Optimization
おおざっぱな理解では
• 既に得た⼊⼒の結果を元に推測しつつ
• まだ調べてないあたりも調べるようにしつつ
いい感じに探索するために、最適化したい関数の形状を(各⼊⼒に対する) 確率分布として捉える。
Bayesian Optimization• 関数を確率分布として捉える?
Bayesian Optimization• 関数を確率分布として捉える?
• x をある値に固定した時にF(x)が取る値を確率分布
• 既知の⼊⼒ x = x1, x2, … を元に計算する
Bayesian Optimization
• Acquisition function
• 次にテストすべき点を決めるための「重要度」みたいなのを決める関数
• GP-UCB
平均 分散
= 活⽤ = 探索
実験2
実験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 を選択
実験2
N=10
Cloud Machine Learning Hyper Parameter Tuning
BayesianOptimization
実験2
N=10
Cloud Machine Learning Hyper Parameter Tuning
BayesianOptimization
実験2
N=10
Cloud Machine Learning Hyper Parameter Tuning
BayesianOptimization
実験2
N=15
Cloud Machine Learning Hyper Parameter Tuning
BayesianOptimization
実験2
N=15
Cloud Machine Learning Hyper Parameter Tuning
BayesianOptimization
実験2
実験2N=30
Cloud Machine Learning Hyper Parameter Tuning
BayesianOptimization
実験2
Ackley 関数
実験2N=30
Cloud Machine Learning Hyper Parameter Tuning
BayesianOptimization
実験2
• Bayesian Optimization > Grid Search
• Cloud Machine Learning の Hyper Parameter Tuning と似ているといえなくもない?
• Bayesian Optimization⾃体にもHyper Parameterがある(acquisition function の選択, そのパラメータ etc..)
Summary• Cloud Machine Learning のHyper Parameter
Tuning はかしこくて便利
• Hyper Parameter に対して複雑な関数になる時は多めに試⾏回数を取ろう
• Hyper Parameter Tuning の裏側は Bayesian Optimization?
• オレオレ Cloud Machine Learning の構築も夢ではない!?