28
PRML#17 (最終回) 14.3 ブースティング 2010-09-11 YOSHIHIKO SUHARA id:sleepy_yoshi @sleepy_yoshi

PRML14.3 Boosting

Embed Size (px)

DESCRIPTION

PRML読書会#17 (最終回)14.3 ブースティング 発表資料

Citation preview

Page 1: PRML14.3 Boosting

PRML#17 (最終回) 14.3 ブースティング

2010-09-11

YOSHIHIKO SUHARA

id:sleepy_yoshi

@sleepy_yoshi

Page 2: PRML14.3 Boosting

1

目次

• 14.3 ブースティング

– 指数誤差の最小化

– ブースティングのための誤差関数

Page 3: PRML14.3 Boosting

2

本節の概要

• ブースティング

– AdaBoostアルゴリズム

• 指数誤差最小化の導出

• 指数誤差最小化の意味

Page 4: PRML14.3 Boosting

3

14.3 ブースティング

Page 5: PRML14.3 Boosting

4

ブースティング

• 複数の「ベース」分類器を統合する手法

– 弱学習機 (weak learner) とも呼ばれる

• 様々な手法が提案されている

– 本節では最も有名なAdaBoostを紹介

• ベース分類器を逐次的に学習

– バギングでは独立した訓練データからモデルを学習

– 並列化が困難

Page 6: PRML14.3 Boosting

5

AdaBoostのイメージ

訓練データ

重み付き訓練データ

重み付き訓練データ

M

試行回数

y1

y2

yM

ベース分類器

… 重み付け和

ベース分類器を

×

× ×

分類器

y1が苦手とする事例を

適切に分類

Page 7: PRML14.3 Boosting

Algorithm: AdaBooost

6

𝐽𝑚 = 𝑤𝑛𝑚𝐼(𝑦𝑚(𝒙𝑛) ≠ 𝑡𝑛)

𝑁

𝑛=1

𝜖𝑚 = 𝑤𝑛

𝑚𝐼(𝑦𝑚(𝒙𝑛) ≠ 𝑡𝑛)

𝑁𝑛=1

𝑤𝑛(𝑚)𝑁

𝑛=1

𝛼𝑚 = ln1 − 𝜖𝑚𝜖𝑚

𝑌𝑀 = sign 𝛼𝑚𝑦𝑚(𝒙)

𝑀

𝑚=1

𝑤𝑛(𝑚+1)= 𝑤𝑛(𝑚)exp*𝛼𝑚𝐼(𝑦𝑚(𝒙𝑛) ≠ 𝑡𝑛)+

1. n=1,…,Nのデータの重み {wn} を 𝑤𝑛(1)= 1/𝑁 で初期化

2. m=1,…,Mについて以下を繰り返す:

(a) 分類器 𝑦𝑚 𝑥 を,以下の誤差関数を最小化するように学習

(b) 𝜖𝑚の値を計算し,𝛼𝑚を求める

(c) データ点の重みを以下の式で更新

3. 以下の式で最終モデルの予測を構成

(14.15)

(14.16) (14.17)

(14.18)

(14.19)

Page 8: PRML14.3 Boosting

図14.1

7

Page 9: PRML14.3 Boosting

決定株 (decision stump)

• ベース分類器の訓練に利用

• ひとつの素性でクラスを決定するような分類器

– 重み付き誤差を最小にするような株を選ぶ

8

x1

+1 -1

Page 10: PRML14.3 Boosting

補足: 事例の重みを利用できない場合

• Q. 重み付き訓練データを利用できない学習アルゴリズムを用いてベース分類器を生成する方法は?

• A. 事例の重みに基づいて復元抽出することにより,ベース分類器の訓練データを作成する

9 なかなか記述を見つけられない…

[Hastie 02]に記述があった記憶が…

Page 11: PRML14.3 Boosting

10 ※ 非線形な分離平面を構築

Page 12: PRML14.3 Boosting

11

14.3.1 指数誤差の最小化

Page 13: PRML14.3 Boosting

指数誤差の最小化

• 指数誤差関数

12

𝐸 = exp*−𝑡𝑛𝑓𝑚(𝒙𝑛)+

𝑁

𝑛=1

(14.20)

• fmはベース分類器の線形結合で表現

𝑓𝑚 𝒙 =1

2 𝛼𝑙𝑦𝑙(𝒙)

𝑚

𝑙=1

(14.21)

重み係数αlとylのパラメータについて

誤差関数を最小化したい

Page 14: PRML14.3 Boosting

最適化の方針 (1/2)

• α1…αm-1とy1…ym-1が固定されていると仮定し,αm,ymのみについて最小化を行う

13

𝐸 = exp −𝑡𝑛𝑓𝑚−1 𝒙𝑛 −1

2𝑡𝑛𝛼𝑚𝑦𝑚(𝒙𝑛)

𝑁

𝑛=1

= 𝑤𝑛(𝑚)exp −

1

2𝑡𝑛𝛼𝑚𝑦𝑚(𝒙𝑛)

𝑁

𝑛=1

𝑤𝑛(𝑚)= exp −𝑡𝑛𝑓𝑚−1 𝒙𝑛

(14.22)

ここで

Page 15: PRML14.3 Boosting

最適化の方針 (2/2)

14

𝐸 = 𝑒−𝛼𝑚/2 𝑤𝑛(𝑚)+ 𝑒𝛼𝑚/2 𝑤𝑛

(𝑚)

𝑛∈𝑀𝑚𝑛∈𝑇𝑚

𝐸 = 𝑒𝛼𝑚2 − 𝑒−

𝛼𝑚2 𝑤𝑛

𝑚

𝑁

𝑛=1

𝐼 𝑦𝑚 𝑥𝑛 ≠ 𝑡𝑛 + 𝑒−𝛼𝑚2 𝑤𝑛

(𝑚)

𝑁

𝑛=1

• ym(x)により正しく分類されるデータ点の集合をTmとし,残りの誤分類される点をMmとする

正解 不正解

(14.23)

• ym(x)に関する最小化 ⇔ (14.15)の最小化

• αmに関する最小化 (演習14.6)

(14.15)

Page 16: PRML14.3 Boosting

演習14.6 • αmについての最小化を考える

– (14.23)をαmについて微分して0とおく

15

𝜕

𝜕𝛼𝑚𝐸 = 0

1

2𝑒𝛼𝑚2 +1

2𝑒−𝛼𝑚2 𝑤𝑛

𝑚

𝑁

𝑛=1

𝐼 𝑦𝑚 𝑥𝑛 ≠ 𝑡𝑛 −1

2𝑒−𝛼𝑚2 𝑤𝑛

𝑚

𝑁

𝑛=1

= 0

𝑒𝛼𝑚2 + 𝑒−

𝛼𝑚2 𝑤𝑛

𝑚

𝑁

𝑛=1

𝐼 𝑦𝑚 𝑥𝑛 ≠ 𝑡𝑛 = 𝑒−𝛼𝑚2 𝑤𝑛

𝑚

𝑁

𝑛=1

𝑤𝑛𝑚𝑁

𝑛=1 𝐼 𝑦𝑚 𝑥𝑛 ≠ 𝑡𝑛

𝑤𝑛𝑚𝑁

𝑛=1 =

𝑒−𝛼𝑚2

𝑒𝛼𝑚2 + 𝑒−

𝛼𝑚2

=1

𝑒𝛼𝑚 + 1

𝜖𝑚 =1

𝑒𝛼𝑚 + 1

𝜖𝑚

𝑒𝛼𝑚 =1 − 𝜖𝑚𝜖𝑚

∴ 𝛼𝑚= ln1 − 𝜖𝑚𝜖𝑚

Page 17: PRML14.3 Boosting

データ点の重み更新

• (14.22)に基づき,得られたαm,ym(x)を利用してデータ点の重みを更新する

16

𝑤𝑛(𝑚+1)= 𝑤𝑛(𝑚)exp −𝛼𝑚/2 exp*𝛼𝑚𝐼(𝑦𝑚(𝒙𝑛) ≠ 𝑡𝑛)+

𝑡𝑛𝑦𝑚 𝒙𝑛 = 1 − 2𝐼(𝑦𝑚(𝒙𝑛) ≠ 𝑡𝑛)

𝑤𝑛(𝑚+1)= 𝑤𝑛(𝑚)exp −

1

2𝑡𝑛𝛼𝑚𝑦𝑚(𝒙𝑛) (14.24)

参考: 𝑤𝑛(𝑚)= exp −𝑡𝑛𝑓𝑚−1 𝒙𝑛

今までのエラーの蓄積

(14.25)

過去のベース分類器の

エラーの情報を保持

(14.25)を利用すると

(14.26)

これより(14.18)を得る

Page 18: PRML14.3 Boosting

データ点の分類

• 全てのベース分類器の訓練が終われば (14.21) の符号によって分類できる

– 符号に影響を与えない1/2を省略すると(14.19)を得る

17

𝑌𝑀 = sign 𝛼𝑚𝑦𝑚(𝒙)

𝑀

𝑚=1

(14.19)

Page 19: PRML14.3 Boosting

18

14.3.2 ブースティングのための誤差関数

Page 20: PRML14.3 Boosting

指数誤差再考

19

𝐸𝒙,𝑡 exp −𝑡𝑦 𝒙 = exp −𝑡𝑦 𝒙 𝑝 𝑡 𝒙 𝑝 𝒙 𝑑𝒙

𝑡

𝑦 𝒙 =1

2ln𝑝(𝑡 = 1|𝒙)

𝑃(𝑡 = −1|𝒙)

• AdaBoostで用いられている指数誤差を考える

(14.)

• AdaBoostは逐次的な最適化という制約の下,最良の対数オッズ比の近似を探索する (演習14.7)

Page 21: PRML14.3 Boosting

演習14.7: 対数オッズ比の導出 • AdaBoostで用いられている指数誤差を考える

– 変分最小化を行う (参考: 付録D)

20

𝐸𝒙,𝑡 exp −𝑡𝑦 𝒙 = exp −𝑡𝑦 𝒙 𝑝 𝑡 𝒙 𝑝 𝒙 𝑑𝒙

𝑡

𝐹 𝑦 = exp −𝑡𝑦 𝒙 𝑝 𝑡 𝒙 𝑝 𝒙 𝑑𝒙

𝑡

= exp −𝑦 𝒙 𝑝 𝑡 = +1 𝒙 𝑝 𝒙 + exp 𝑦 𝒙 𝑝 𝑡 = −1 𝒙 𝑝 𝒙 𝑑𝒙

𝜕𝐺(𝑦 𝑥 , 𝑥)

𝜕𝑦(𝑥)= 0

𝐺は𝑦′ 𝑥 に依存していないので𝑦 𝑥 で微分すればよい

−exp −𝑦 𝒙 𝑝 𝑡 = +1 𝒙 𝑝 𝒙 + exp 𝑦 𝒙 𝑝 𝑡 = −1 𝒙 𝑝 𝒙 = 0

exp 𝑦 𝒙 𝑝 𝑡 = −1 𝒙 𝑝 𝒙 = exp −𝑦 𝒙 𝑝 𝑡 = +1 𝒙 𝑝 𝒙

exp*𝑦(𝒙)+

exp*−𝑦(𝒙)+=𝑝(𝑡 = +1|𝒙)

𝑝(𝑡 = −1|𝒙) 2𝑦(𝒙) = ln

𝑝(𝑡 = +1|𝒙)

𝑝(𝑡 = −1|𝒙)

𝐺(𝑦 𝑥 , 𝑥)

Page 22: PRML14.3 Boosting

その他の誤差関数との関係

• 交差エントロピー誤差 (Logistic regression): 赤線

• ヒンジ誤差 (SVM): 青線

• 0-1損失: 黒線

21

指数誤差の欠点:

ty(x)が負の大きな値を持つ場合に

交差エントロピーに比べて強い

ペナルティを与えてしまう

⇒ 外れ値に対して頑健性が低い

※ AdaBoostは指数誤差を必ず減少させるが、

0-1損失を必ずしも減少させるわけではない

Page 23: PRML14.3 Boosting

指数誤差の欠点

• 外れ値に対して頑健性が低い (再掲)

• 対数尤度関数として解釈できない (演習14.9)

• 多クラスへの問題に容易に一般化できない

22

Page 24: PRML14.3 Boosting

回帰問題への拡張

• 二乗和誤差関数を利用

– 新しいベース分類器を,それ以前のモデルの残留誤差 𝑡𝑛 − 𝑓𝑚−1(𝒙𝑛) で適合すればよい (演習14.9)

– 二乗和誤差も外れ値に頑健ではないので絶対値誤差 |𝑦 − 𝑡| を利用することで対処できる

23

Page 25: PRML14.3 Boosting

演習14.9

• 二乗誤差関数の逐次最小化

24

𝐸 =1

2 𝑡𝑛 − 𝑓𝑚 𝒙

2

𝑁

𝑛=1

𝑓𝑚 𝒙 =1

2 𝛼𝑙𝑦𝑙(𝒙)

𝑚

𝑙=1

𝑓𝑚 𝒙 = 𝑓𝑚−1 𝒙 +1

2𝛼𝑚𝑦𝑚(𝒙)

(14.21)

𝐸 =1

2 𝑡𝑛 − 𝑓𝑚−1 𝒙 −

1

2𝛼𝑚𝑦𝑚(𝒙)

2𝑁

𝑛=1

ひとつ前のモデルの残差

誤差Eを𝑦𝑚(𝒙)について最小化

⇒ 𝑦𝑚(𝒙)を残差にフィットさせる

(14.21)を用いると

Page 26: PRML14.3 Boosting

ブースティングこぼれ話

• さまざまなブースティング手法

– 損失関数の違い (参考資料)

• 並列化しづらい?

• モデルを改造しづらい?

• ブースティング職人?

25

Page 27: PRML14.3 Boosting

まとめ

• ブースティング

– AdaBoostの概要

– AdaBoostアルゴリズム

• 指数誤差最小化の導出

– 更新式の妥当性

• 指数誤差最小化の意味

– 指数誤差の欠点

26

Page 28: PRML14.3 Boosting

おわり

27