機械学習のための
ベイズ最適化⼊⾨
2017/07/01
牧⼭ 幸史
db analytic showcase 2017
1
⾃⼰紹介
•  ヤフー株式会社
データサイエンティスト
•  SBイノベンチャー (株)
AI エンジニア
•  株式会社ホクソエム
代表取締役 CEO
2
本⽇の内容
•  ベイズ最適化 (Bayesian Optimization)
を機械学習のハイパーパラメータ探索に
利⽤
•  効率的な探索を実現
•  実⾏⽅法まで
•  詳しくはこの本で →
3
⽬次
1.  はじめに
2.  ハイパーパラメータ探索
3.  グリッドサーチ
4.  ベイズ最適化
5.  獲得関数
6.  ガウス過程
7.  実⾏ツール
4
1. はじめに
•  ベイズ最適化が注⽬を集めている
•  ベイズ最適化:
形状の分からない関数(ブラックボックス関数)の
最⼤値または最⼩値を求める⼿法
•  機械学習のハイパーパラメータ探索に利⽤
•  効率的に精度の良い学習モデルを発⾒
5
ベイズ最適化
•  ベイズ最適化とは
– ⼤域的最適化問題 (Global Optimization)
– 逐次最適化⼿法 (Sequential Optimization)
•  適⽤対象
– ブラックボックス関数 (関数の形が不明)
– 計算コストが⼤きい (時間、お⾦)
•  要求: 少ない評価回数で最適値を求めたい
6
⼤域的最適化問題
•  局所解に陥らずに最適値を求めたい
7
局所解 ⼤域解
逐次最適化法
•  これまでの結果をもとに次の観測点を決
める
8
ここら辺
良さそう
良くない
逐次最適化の⾃動化
•  これまでの結果を⾒て次にどこを観測し
たらいいかは⼈間にはなんとなくわかる
➡︎ これを⾃動化したい
•  ベイズ最適化
– ⼈間の直観的な判断を再現している
9
1. まとめ
•  ベイズ最適化は⾼コストなブラックボッ
クス関数の最適点を効率良く求める⼿法
•  何に使いたいか?
➡︎ 機械学習のハイパーパラメータ探索
10
⽬次
1.  はじめに
2.  ハイパーパラメータ探索
3.  グリッドサーチ
4.  ベイズ最適化
5.  獲得関数
6.  ガウス過程
7.  実⾏ツール
11
2. ハイパーパラメータ探索
•  ほとんどの機械学習⼿法には、ハイパー
パラメータが存在
•  ハイパーパラメータ:
–  データの学習では決定されないパラメータ
–  学習の前にあらかじめ決めておく
12
例: RBF SVM
•  RBF カーネルでデータを⾼次元空間へ
•  マージン最⼤化
•  判別境界
13出典: 1.4. Support Vector Machines ー scikit-learn documentation
例: RBF SVM
•  ハイパーパラメータ 2つ
•  gamma:
–  1つのサポートベクタが影響を及ぼす範囲
–  ⼤きいほど影響範囲が⼩さく過学習
•  cost:
–  判別境界の単純さと誤分類のトレードオフ
–  ⼤きいほど誤分類が少ないが過学習
14
例: RBF SVM
15出典: RBF SVM parameters — scikit-learn documentation
cost:
⼤
gamma: ⼤
ベスト
ハイパーパラメータ探索
•  ハイパーパラメータの選び⽅によって 
精度が劇的に変わる
•  意味を考えて慎重に選択する必要
•  データと学習モデルに対する深い理解
•  職⼈芸
16
2. まとめ
•  ハイパーパラメータは学習前に決める
•  決め⽅で精度が劇的に変わる
•  チューニングは職⼈芸
•  もっと簡単にできないか?
➡︎ グリッドサーチ
17
⽬次
1.  はじめに
2.  ハイパーパラメータ探索
3.  グリッドサーチ
4.  ベイズ最適化
5.  獲得関数
6.  ガウス過程
7.  実⾏ツール
18
3. グリッドサーチ
•  ハイパーパラメータの選択は職⼈芸
•  もっと簡単にやる⽅法としてグリッド
サーチがある
19
グリッドサーチ
•  探索範囲を格⼦状(グリッド)にする
20
グリッドサーチ
•  ハイパーパラメータの格⼦を作る
•  gamma = (10-5, 10-4, … , 102, 103)
•  cost = (10-4, 10-3, … , 103, 104)
•  それぞれの組み合わせでモデルを学習
•  例:
•  cost = 10-4, gamma = 10-5 ➡︎ 正答率
•  cost = 10-4, gamma = 103 ➡︎ 正答率
21
グリッドサーチ
•  すべての格⼦点で正答率を求める
22
グリッドサーチ
•  すべての組み合わせに対して正答率を求
め、最も良いものを選択する
※正答率はクロスバリデーションで求めた
•  シンプルでわかりやすい
•  しかし、グリッドのすべての組み合わせ
(今回は10 ✖ 10 = 100) に対して正答率を
計算するのは時間がかかる
23
3. まとめ
•  グリッドサーチはハイパーパラメータの
すべての組み合わせに対して正答率を計
算し最良のものを選ぶ
•  データが多い場合、1回のモデルの学習に
多⼤な時間がかかる
•  効率的に探索したい
➡︎ ベイズ最適化
24
⽬次
1.  はじめに
2.  ハイパーパラメータ探索
3.  グリッドサーチ
4.  ベイズ最適化
5.  獲得関数
6.  ガウス過程
7.  実⾏ツール
25
4. ベイズ最適化
•  グリッドサーチは、すべての組み合わせ
についてモデルを学習
➡︎ 時間がかかる
•  ベイズ最適化により効率的な探索が可能
26
ベイズ最適化
•  次の4点の正答率が求まっているとする
27
ベイズ最適化
•  次にどこを観測するか?
–  右下が良さそう
–  真ん中がスカスカ
•  ベイズ最適化
–  正答率が良さそうなエリアを優先的に観測
–  局所解に陥らないようにスカスカのエリアも
たまに観測
28
観測数 = 15
•  右下を重点的に観測、スカスカエリアも観測
29
観測数 = 30
•  評価値の良さそうなエリアが⼤体⾒える
30
観測数 = 50
•  良さそうなエリアが埋まり、最適解が求まる
31
4. まとめ
•  ベイズ最適化を使って、効率的に最適解
に到達
•  100個の格⼦点に対して 50回
•  これまでの評価値に基づいて次の観測点
を⾃動的に判断
•  どうやって判断しているか?
➡︎ 獲得関数
32
⽬次
1.  はじめに
2.  ハイパーパラメータ探索
3.  グリッドサーチ
4.  ベイズ最適化
5.  獲得関数
6.  ガウス過程
7.  実⾏ツール
33
5. 獲得関数
•  ベイズ最適化は次の観測点を⾃動で判断
•  様々な戦略が提案されている
①  PI 戦略
②  EI 戦略
③  UCB 戦略
•  獲得関数は、それぞれの戦略で最⼤化さ
れる関数
34
① PI 戦略
•  PI 戦略
–  Probability of Improvement (改善確率)
–  現在の最⼤値 ybest
–  ybest を超える確率が最も⾼い点を次に観測
•  シンプルで分かりやすいが局所解に陥る
ことも
35
② EI 戦略
•  PI 戦略は改善確率のみを考えた
•  確率が⾼くても改善量が⼩さいと⾮効率
•  EI 戦略
–  Expected Improvement (期待改善量)
–  評価値とベストの差 y – ybest の期待値が最も
⾼くなる点を次に観測
•  最も⼀般的に使われている
36
③ UCB 戦略
•  UCB 戦略
–  Upper Confidence Bound (上側信頼限界)
–  評価値の信頼区間の上限が最も⾼い点を次に
観測
•  最適解にたどり着く理論的保証がある
37
獲得関数
•  それぞれの戦略は何らかの関数を最⼤化
する点を次に観測する
–  PI(x) : y が ybest を超える確率
–  EI(x) : y – ybest の期待値
–  UCB(x): y の信頼区間の上限
•  このような関数を獲得関数と呼ぶ
38
5. まとめ
•  ベイズ最適化では獲得関数を最⼤化する
点を次に選ぶ
•  獲得関数は確率、期待値、信頼区間など
を使⽤
•  どうやって計算するか?
➡︎ ガウス過程
39
⽬次
1.  はじめに
2.  ハイパーパラメータ探索
3.  グリッドサーチ
4.  ベイズ最適化
5.  獲得関数
6.  ガウス過程
7.  実⾏ツール
40
6. ガウス過程
•  ベイズ最適化では獲得関数を最⼤化する
点を次に観測
•  獲得関数には確率や期待値が使われる
•  これらを計算するために、最適化したい
関数がガウス過程に従うと仮定する
41
ガウス過程
•  関数がガウス過程に従う?
•  例: 形状の分からない関数 y = f(x)
•  次の5点を観測
42
x y
0.1 0.08
0.4 −0.30
0.5 −0.48
0.7 0.46
0.9 0.37
ガウス過程
•  観測点から関数のだいたいの形を予想
43
ガウス過程
•  未観測点の期待値 µ と分散 σ2 を算出可能
44
σ
µ
ガウス過程
•  未観測点の期待値 µ と分散 σ2 を算出可能
•  µ が⼤きい: 周囲の観測点が⼤きい
•  σ が⼤きい: 周囲が観測されていない
•  µ が⼤きい点を次の観測点に選べば、⼤き
い値が期待できる
•  しかし、そればかりでは局所解に陥る
•  適度に σ の⼤きい点を探索する必要あり
45
ガウス過程
•  ガウス過程を仮定することで獲得関数が
計算可能に
•  カーネル関数の選択が必要
–  Squared Exponential:
–  Matern:
46
カーネル関数
•  観測点同⼠がどれぐらい影響し合うか
•  例: Squared Exponential
•  距離 d が遠いほど影響は⼩さくなる
➡︎「近い観測点は同じぐらいの値」を表現
47
6. まとめ
•  獲得関数を計算するためにガウス過程を
仮定する
•  未評価点は近隣の評価点と近い値を取る
•  どれぐらい近くの評価点が影響するかは
カーネル関数で決まる
48
⽬次
1.  はじめに
2.  ハイパーパラメータ探索
3.  グリッドサーチ
4.  ベイズ最適化
5.  獲得関数
6.  ガウス過程
7.  実⾏ツール
49
7. 実⾏ツール
•  ベイズ最適化を⾏うツールはたくさん
–  SMAC
–  Spearmint (Python; ⾮商⽤)
–  COMBO (Python; 東京⼤学 津⽥研)
–  GPyOpt (Python)
–  bayesian-optimization (Python)
–  rBayesianOptimization (R)
50
bayesian-optimization
51
rBayesianOptimization
52
7. まとめ
•  ベイズ最適化の実⾏ツールはたくさん
•  特に Python ライブラリが多い
•  簡単に実⾏できる
–  グリッド範囲の指定
–  獲得関数の指定
–  カーネル関数の指定
•  ぜひ実⾏してみて下さい!
53
本⽇のまとめ
•  ベイズ最適化は⾼コストなブラックボッ
クス関数の最適点を効率良く求める⼿法
•  ガウス過程を⽤いて⽬的関数を表現
•  獲得関数が最⼤となる点を次の観測点に
選ぶ
•  ツールがたくさんあり簡単に実⾏できる
54
おまけ
55
ランダムサーチ
•  Bergstra & Bengio (JMLR 2012)
•  ⼀部の機械学習⼿法において、ハイパー
パラメータ探索はランダムサーチが有効
である
•  これは、機械学習の精度を左右するハイ
パーパラメータは少数だからである
56
ランダムサーチ
•  Bergstra & Bengio (JMLR 2012)
57
58
SMAC:
 ベイズ最適化ツール
TPE:
 Tree Parzen Estimator
 (Bergstra+ NIPS 2011)
Random:
 ランダムサーチ
Random_2x:
 2並列ランダムサーチ
Li+ (arXiv 2016) Hyperband
獲得関数 MI (Contal+ 2014)
•  Mutual Information (相互情報量)
•  次の探索点として、獲得関数
MI(x) = µ(x) + K Φt(x)
が最も⼤きい点 x を選ぶ
•  γt^ は f(xt) を観測したときに得られる
相互情報量の下限を表す
59
相互情報量
•  ガウス過程の相互情報量(f と観測値):
•  γT を相互情報量の最⼤値と定義する
60
(Srinivas+2012)
GP-MI の獲得関数
•  相互情報量は最低限これだけ増加する
•  情報量の増加が⼤きい点を次に選ぶ戦略
61
これまでの
情報量の下限
もし点 x を観測したら
得られる情報量の下限
テスト関数
62
(図1) 混合ガウス分布 (図2) Himmelblau
63
アルゴリズムの評価
•  アルゴリズムの評価に Regret (後悔) を使
う。
•  Regret とは、探索点における f(xt) と最適
値 f(x★) の差
•  累積 Regret が⼩さいと良いアルゴリズム
64
Regret (後悔)
65
求めたいのは
ココ!
この点を観測した
ときの後悔の⼤きさ
Regret 上限
「UCBは最適値へ収束する理論的保証あり」
正確には
•  累積 Regret RT が Regret 上限 G(T)√α
以下になる確率が⼤きい
Pr[RT ≦ G(T)√α] ≧ 1 – δ
α = log(2/δ)
•  δ を⼩さくすると上限が緩くなる
66
おしまい
67

機械学習のためのベイズ最適化入門