PRML14.3 Boosting
-
Upload
sleepyyoshi -
Category
Technology
-
view
1.672 -
download
4
description
Transcript of PRML14.3 Boosting
PRML#17 (最終回) 14.3 ブースティング
2010-09-11
YOSHIHIKO SUHARA
id:sleepy_yoshi
@sleepy_yoshi
1
目次
• 14.3 ブースティング
– 指数誤差の最小化
– ブースティングのための誤差関数
2
本節の概要
• ブースティング
– AdaBoostアルゴリズム
• 指数誤差最小化の導出
• 指数誤差最小化の意味
3
14.3 ブースティング
4
ブースティング
• 複数の「ベース」分類器を統合する手法
– 弱学習機 (weak learner) とも呼ばれる
• 様々な手法が提案されている
– 本節では最も有名なAdaBoostを紹介
• ベース分類器を逐次的に学習
– バギングでは独立した訓練データからモデルを学習
– 並列化が困難
5
AdaBoostのイメージ
訓練データ
重み付き訓練データ
重み付き訓練データ
…
1
2
M
試行回数
y1
y2
yM
ベース分類器
… 重み付け和
ベース分類器を
…
×
× ×
分類器
y1が苦手とする事例を
適切に分類
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)
図14.1
7
決定株 (decision stump)
• ベース分類器の訓練に利用
• ひとつの素性でクラスを決定するような分類器
– 重み付き誤差を最小にするような株を選ぶ
8
x1
+1 -1
補足: 事例の重みを利用できない場合
• Q. 重み付き訓練データを利用できない学習アルゴリズムを用いてベース分類器を生成する方法は?
• A. 事例の重みに基づいて復元抽出することにより,ベース分類器の訓練データを作成する
9 なかなか記述を見つけられない…
[Hastie 02]に記述があった記憶が…
10 ※ 非線形な分離平面を構築
11
14.3.1 指数誤差の最小化
指数誤差の最小化
• 指数誤差関数
12
𝐸 = exp*−𝑡𝑛𝑓𝑚(𝒙𝑛)+
𝑁
𝑛=1
(14.20)
• fmはベース分類器の線形結合で表現
𝑓𝑚 𝒙 =1
2 𝛼𝑙𝑦𝑙(𝒙)
𝑚
𝑙=1
(14.21)
重み係数αlとylのパラメータについて
誤差関数を最小化したい
最適化の方針 (1/2)
• α1…αm-1とy1…ym-1が固定されていると仮定し,αm,ymのみについて最小化を行う
13
𝐸 = exp −𝑡𝑛𝑓𝑚−1 𝒙𝑛 −1
2𝑡𝑛𝛼𝑚𝑦𝑚(𝒙𝑛)
𝑁
𝑛=1
= 𝑤𝑛(𝑚)exp −
1
2𝑡𝑛𝛼𝑚𝑦𝑚(𝒙𝑛)
𝑁
𝑛=1
𝑤𝑛(𝑚)= exp −𝑡𝑛𝑓𝑚−1 𝒙𝑛
(14.22)
ここで
最適化の方針 (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)
演習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 − 𝜖𝑚𝜖𝑚
データ点の重み更新
• (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)を得る
データ点の分類
• 全てのベース分類器の訓練が終われば (14.21) の符号によって分類できる
– 符号に影響を与えない1/2を省略すると(14.19)を得る
17
𝑌𝑀 = sign 𝛼𝑚𝑦𝑚(𝒙)
𝑀
𝑚=1
(14.19)
18
14.3.2 ブースティングのための誤差関数
指数誤差再考
19
𝐸𝒙,𝑡 exp −𝑡𝑦 𝒙 = exp −𝑡𝑦 𝒙 𝑝 𝑡 𝒙 𝑝 𝒙 𝑑𝒙
𝑡
𝑦 𝒙 =1
2ln𝑝(𝑡 = 1|𝒙)
𝑃(𝑡 = −1|𝒙)
• AdaBoostで用いられている指数誤差を考える
(14.)
• AdaBoostは逐次的な最適化という制約の下,最良の対数オッズ比の近似を探索する (演習14.7)
演習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|𝒙)
𝐺(𝑦 𝑥 , 𝑥)
その他の誤差関数との関係
• 交差エントロピー誤差 (Logistic regression): 赤線
• ヒンジ誤差 (SVM): 青線
• 0-1損失: 黒線
21
指数誤差の欠点:
ty(x)が負の大きな値を持つ場合に
交差エントロピーに比べて強い
ペナルティを与えてしまう
⇒ 外れ値に対して頑健性が低い
※ AdaBoostは指数誤差を必ず減少させるが、
0-1損失を必ずしも減少させるわけではない
指数誤差の欠点
• 外れ値に対して頑健性が低い (再掲)
• 対数尤度関数として解釈できない (演習14.9)
• 多クラスへの問題に容易に一般化できない
22
回帰問題への拡張
• 二乗和誤差関数を利用
– 新しいベース分類器を,それ以前のモデルの残留誤差 𝑡𝑛 − 𝑓𝑚−1(𝒙𝑛) で適合すればよい (演習14.9)
– 二乗和誤差も外れ値に頑健ではないので絶対値誤差 |𝑦 − 𝑡| を利用することで対処できる
23
演習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)を用いると
ブースティングこぼれ話
• さまざまなブースティング手法
– 損失関数の違い (参考資料)
• 並列化しづらい?
• モデルを改造しづらい?
• ブースティング職人?
25
まとめ
• ブースティング
– AdaBoostの概要
– AdaBoostアルゴリズム
• 指数誤差最小化の導出
– 更新式の妥当性
• 指数誤差最小化の意味
– 指数誤差の欠点
26
おわり
27