Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
ランダムフォレストと
そのコンピュータビジョンへの応用
2015年7月27日
近畿大学理工学部情報学科
波部 斉(Hitoshi HABE)
habe@kindai.ac.jp @habhit
MIRU 2015 Random Forest Tutorial2015/7/27 1
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 2
本日の構成
1. ランダムフォレストの特徴
1. コンピュータビジョンと機械学習
2. ランダムフォレストとは
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 3
コンピュータビジョンと機械学習(1)
• 歴史的な流れ
– ニューラルネット(NN)
• 顔検出 [Rowley-Kanade PAMI 1998]
• 深層学習
– ブースティング
• 顔検出 [Viola-Jones IJCV 2003]
– サポートベクトルマシン(SVM)
• HOG 人物検出 [Dalal CVPR 2005]
2015/7/27 MIRU 2015 Random Forest Tutorial 4
コンピュータビジョンと機械学習(2)
• 取り扱う情報の単位
– 候補全体を一つの単位として対象かどう
かを判定する
• HOG 人物検出 [Dalal CVPR 2005]
– 局所領域での判定結果を統合して対象か
どうかを判定する
• Implicit Shape Model [Leibe ECCVWS 2004]
• Deformable Part Model [Felzenswalb CVPR 2008 ]
– より複雑な事象の理解へ
• データセット
– サイズ大,時空間情報
• 出力
– クラスラベルのみから多種情報
2015/7/27 MIRU 2015 Random Forest Tutorial 5
ランダムフォレストとは?
• アンサンブル学習
– 複数の決定木(弱識別器)の結
果をあわせて識別・回帰・クラ
スタリングを行う
• バギング
– 入力学習データからのランダム
サンプリングを繰り返して弱識
別器を構成
2015/7/27 MIRU 2015 Random Forest Tutorial 6
ランダムフォレスト
• メリット
– シンプル・わかりやすい・精度も良い・テストが高
速
三人よれば文殊の知恵?
• 三人の多数決をチームの答えにする
2015/7/27 7
よくデキるが得意分野が
重なる三人組
それほどデキないが
得意分野が異なる三人組
ふつうの三人組の方が良い成績!
MIRU 2015 Random Forest Tutorial
多数決 多数決
正解
人物A
人物B
人物C
人物D
人物E
人物F
不正解
70%正解 80%正解
アンサンブル学習
• 𝐵𝐵 個の弱識別器それぞれの出力が分散 𝜎𝜎 の分
布にしたがう 確率変数 𝑋𝑋𝑖𝑖 であるとする
• 変数の間の相関係数が 𝜌𝜌 であるとするとその
平均の分散は
2015/7/27 MIRU 2015 Random Forest Tutorial 8
𝜌𝜌𝜎𝜎2
+
1 − 𝜌𝜌
𝐵𝐵
𝜎𝜎2
個々の識別器(人物)の能力が特別優れていなくても
微妙に違うものを統合すれば結果がよくなる
𝜌𝜌𝜎𝜎2
分散を小さく
相関を小さく
弱識別器の
個数大
決定木のアンサンブル
• 決定木の特徴
– 深さを大きくすれば学習データによく適合できる
→ バイアス小
• 決定木のアンサンブル
– 相関の小さい決定木を集めることができれば分散
を小さくできる → 学習にランダムな要素を導入
2015/7/27 MIRU 2015 Random Forest Tutorial 9
相関小
ブートストラップサンプリング
• 学習データ全体から個々の決定木の学習に利
用する学習データをランダムに選ぶ
2015/7/27 MIRU 2015 Random Forest Tutorial 10
学習データ
ランダム
サンプリング
相関小
ランダムフォレストの歴史
• Tin Kam Ho 1995
– Random decision forests, ICDAR 1995
– ランダムに抽出した部分空間を使って学習した決定木を
統合
• Amit & Geman 1997
– Shape Quantization and Recognition with Randomized
Trees, Neural Computation,1997
• Leo Breiman 2001
– Random Forests , Machine Learning, 2001
– バギングによって決定木を学習
– 理論的考察
2015/7/27 MIRU 2015 Random Forest Tutorial 11
Randomized Decision Trees
Randomized Decision Forests など様々な名前で呼ばれている
コンピュータビジョンへの応用
• 特徴点認識 [Lepetit CVPR 2005]
• 画像分割&認識 [Shotton CVPR 2008]
• 人体部位認識 [Shotton CVPR 2011]
2015/7/27 MIRU 2015 Random Forest Tutorial 12
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
1. 基本構造
2. ランダムフォレストの学習
3. ランダムフォレストのテスト
4. 回帰などへの応用
5. ランダムフォレストの性質
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 13
準備
• 対象とするデータ 𝒗𝒗 = 𝑥𝑥1, 𝑥𝑥2, … , 𝑥𝑥𝑑𝑑 ∈ ℝ𝑑𝑑
• 目標 𝑡𝑡
• 教師データ集合 𝑆𝑆 = {(𝒗𝒗, 𝑡𝑡)}
2015/7/27 MIRU 2015 Random Forest Tutorial 14
𝑆𝑆
𝒗𝒗1, 𝑡𝑡1
学習
𝒗𝒗3, 𝑡𝑡3
𝒗𝒗4, 𝑡𝑡4
𝒗𝒗2, 𝑡𝑡2
+
未知
データ
• クラス識別:c ∈ ℕ
• 回帰: y ∈ ℝ𝑛𝑛テスト
𝒗𝒗 𝑡𝑡
決定木(二分決定木)
2015/7/27 MIRU 2015 Random Forest Tutorial 15
𝒗𝒗
𝑝𝑝(𝑡𝑡| 𝒗𝒗)
ℎ( 𝒗𝒗, 𝜃𝜃)
分岐関数
ℎ 𝒗𝒗, 𝜃𝜃 = {0,1}
パラメータ
10
𝒗𝒗
特徴空間
決定木判定結果の統合(パターン識別)
2015/7/27 MIRU 2015 Random Forest Tutorial 16
𝑝𝑝𝑡𝑡(𝑐𝑐|v)
∑𝑝𝑝𝑡𝑡(𝑐𝑐|v)
2クラス識別問題
𝑝𝑝𝑡𝑡(𝑐𝑐|v)
+
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
1. 基本構造
2. ランダムフォレストの学習
3. ランダムフォレストのテスト
4. 回帰などへの応用
5. ランダムフォレストの性質
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 17
学習アルゴリズムの流れ
• 入力:学習データ集合 𝑆𝑆 = {𝒗𝒗, 𝑡𝑡}
• 𝑇𝑇個の決定木 T1, T2, … , T𝑇𝑇 それぞれについて
– 学習データ集合からサンプリング:𝑆𝑆 ⇒ 𝑆𝑆0
– サンプリングしたデータを根ノード(𝑗𝑗 = 0)に与え
以下を再帰的に繰り返す
• ノード 𝑗𝑗 での最適な分岐関数 ℎ∗(𝒗𝒗, 𝜃𝜃∗) を求める
• ℎ∗
に従って 𝑆𝑆𝑗𝑗 を分割して 𝑆𝑆𝑗𝑗
𝐿𝐿
と 𝑆𝑆𝑗𝑗
𝑅𝑅
を得る
• 終了条件をみたす? No→𝑆𝑆𝑗𝑗
𝐿𝐿
と𝑆𝑆𝑗𝑗
𝑅𝑅
を子ノードに与えて学習継
続,Yes→それより深くはしない
– すべての葉ノードが終了条件をみたす→木の学習終了
• すべての木の学習終了→Forestの学習終了
2015/7/27 MIRU 2015 Random Forest Tutorial 18
並列化可能!!
学習アルゴリズムの流れ
• 入力:学習データ集合 𝑆𝑆 = {𝒗𝒗, 𝑡𝑡}
• 𝑇𝑇個の決定木 T1, T2, … , T𝑇𝑇 それぞれについて
– 学習データ集合からサンプリング:𝑆𝑆 ⇒ 𝑆𝑆0
– サンプリングしたデータを根ノード(𝑗𝑗 = 0)に与え
以下を再帰的に繰り返す
• ノード 𝑗𝑗 での最適な分岐関数 ℎ∗(𝒗𝒗, 𝜃𝜃∗) を求める
• ℎ∗
に従って 𝑆𝑆𝑗𝑗 を分割して 𝑆𝑆𝑗𝑗
𝐿𝐿
と 𝑆𝑆𝑗𝑗
𝑅𝑅
を得る
• 終了条件をみたす? No→𝑆𝑆𝑗𝑗
𝐿𝐿
と𝑆𝑆𝑗𝑗
𝑅𝑅
を子ノードに与えて学習継
続,Yes→それより深くはしない
– すべての葉ノードが終了条件をみたす→木の学習終了
• すべての木の学習終了→Forestの学習終了
2015/7/27 MIRU 2015 Random Forest Tutorial 19
学習データ集合からのサンプリング
• ブートストラップサンプリング
– 学習データ集合全体から個々の決定木の学習に
利用するデータをランダムに選ぶ
• 重複を許す(w/ replacement)
• 使われないデータがあっても良い
2015/7/27 MIRU 2015 Random Forest Tutorial 20
𝑆𝑆
𝒗𝒗1, 𝑡𝑡1
𝒗𝒗3, 𝑡𝑡3
𝒗𝒗4, 𝑡𝑡4
𝒗𝒗2, 𝑡𝑡2
𝒗𝒗1, 𝑡𝑡1
𝒗𝒗3, 𝑡𝑡3 𝑆𝑆1 𝒗𝒗3, 𝑡𝑡3 𝑆𝑆2
𝒗𝒗4, 𝑡𝑡4
𝒗𝒗3, 𝑡𝑡3
𝒗𝒗4, 𝑡𝑡4
学習アルゴリズムの流れ
• 入力:学習データ集合 𝑆𝑆 = {𝒗𝒗, 𝑡𝑡}
• 𝑇𝑇個の決定木 T1, T2, … , T𝑇𝑇 それぞれについて
– 学習データ集合からサンプリング:𝑆𝑆 ⇒ 𝑆𝑆0
– サンプリングしたデータを根ノード(𝑗𝑗 = 0)に与え
以下を再帰的に繰り返す
• ノード 𝑗𝑗 での最適な分岐関数 ℎ∗(𝒗𝒗, 𝜃𝜃∗) を求める
• ℎ∗
に従って 𝑆𝑆𝑗𝑗 を分割して 𝑆𝑆𝑗𝑗
𝐿𝐿
と 𝑆𝑆𝑗𝑗
𝑅𝑅
を得る
• 終了条件をみたす? No→𝑆𝑆𝑗𝑗
𝐿𝐿
と𝑆𝑆𝑗𝑗
𝑅𝑅
を子ノードに与えて学習継
続,Yes→それより深くはしない
– すべての葉ノードが終了条件をみたす→木の学習終了
• すべての木の学習終了→Forestの学習終了
2015/7/27 MIRU 2015 Random Forest Tutorial 21
1. 根ノードから学習開始
2. 再帰的に以下を実行
A) ノード 𝑗𝑗 での最適な分
岐関数 ℎ∗
(𝒗𝒗, 𝜃𝜃∗
) を求め
る
B) ℎ∗に従って 𝑆𝑆𝑗𝑗 を分割
した 𝑆𝑆𝑗𝑗
𝐿𝐿
と 𝑆𝑆𝑗𝑗
𝑅𝑅
を与えて
子ノードを生成
C) 終了条件をみたす?
No→子ノードで学習
継続,Yes→終了
3. 全葉ノードで終了→終了
決定木学習の流れ
2015/7/27 MIRU 2015 Random Forest Tutorial 22
n
0
1 2
𝑝𝑝(𝑡𝑡|v)
ℎ∗ = arg max 𝐼𝐼0
𝑆𝑆0
根ノード 𝑆𝑆0
𝑆𝑆𝑛𝑛
終了?→Yes
𝑆𝑆1 = 𝑆𝑆0
𝐿𝐿
𝑆𝑆2 = 𝑆𝑆0
𝑅𝑅
𝑆𝑆0
𝐿𝐿
𝑆𝑆0
𝑅𝑅
分岐関数の学習(1):イメージ
2015/7/27 MIRU 2015 Random Forest Tutorial 23
𝑗𝑗 𝑆𝑆𝑗𝑗
𝑆𝑆𝑗𝑗
𝐿𝐿
𝑆𝑆𝑗𝑗
𝑅𝑅
𝑆𝑆𝑗𝑗
𝑆𝑆𝑗𝑗
𝐿𝐿 𝑆𝑆𝑗𝑗
𝑅𝑅
ランダムに選んだ
分岐関数候補から選ぶので
たとえ同一の学習データでも
試行ごとに微妙に異なる
決定木となる
分岐関数の学習(2):定式化
2015/7/27 MIRU 2015 Random Forest Tutorial 24
𝑗𝑗
ℎ 𝒗𝒗, 𝜃𝜃𝑗𝑗 = {0, 1}
𝒗𝒗:入力データ
𝜃𝜃𝑗𝑗:パラメータ
𝑆𝑆𝑗𝑗
𝑆𝑆𝑗𝑗
𝐿𝐿
𝑆𝑆𝑗𝑗
𝑅𝑅
最適なパラメータ 𝜃𝜃∗
= arg max
𝜃𝜃𝑗𝑗∈ℑ𝑗𝑗
𝐼𝐼𝑗𝑗
目的関数: 𝐼𝐼𝑗𝑗= 𝐼𝐼 𝑆𝑆𝑗𝑗, 𝑆𝑆𝑗𝑗
𝐿𝐿
, 𝑆𝑆𝑗𝑗
𝑅𝑅
, 𝜃𝜃𝑗𝑗
パラメータ候補:ℑ𝑗𝑗 ∈ ℑ
分岐関数の学習(3):目的関数(1)
パターン識別の場合(クラスラベル集合𝐶𝐶)
• エントロピー(平均情報量)
𝐻𝐻 𝑆𝑆 = − �
𝑐𝑐∈𝐶𝐶
𝑝𝑝 𝑐𝑐 log(𝑝𝑝 𝑐𝑐 )
2015/7/27 MIRU 2015 Random Forest Tutorial 25
2クラスの場合
𝐻𝐻 𝑆𝑆
𝑝𝑝 𝑐𝑐
それぞれのクラスが
等確率で存在するとき最大
𝐻𝐻 𝑆𝑆 :小
𝐻𝐻 𝑆𝑆 :大
分岐関数の学習(3):目的関数(2)
• 情報利得:分割前後のエントロピーの差
𝐼𝐼 = 𝐻𝐻 𝑆𝑆 − �
𝑖𝑖∈{𝐿𝐿,𝑅𝑅}
𝑆𝑆𝑖𝑖
𝑆𝑆
𝐻𝐻(𝑆𝑆𝑖𝑖
)
2015/7/27 MIRU 2015 Random Forest Tutorial 26
分割前
分割後(重み付き平均)
𝐻𝐻 𝑆𝑆 = 0.7 𝐼𝐼1 = 0.7 − 0.7 = 0
𝜃𝜃1
𝜃𝜃2
𝐼𝐼2 = 0.7 − 0 = 0.7
分岐関数の学習(4):パラメータ候補
• すべてのパラメータ候補を試すのは非現実的
• 学習結果に適当な「ぶれ」を与える
• ランダムに抽出したものを利用
2015/7/27 MIRU 2015 Random Forest Tutorial 27
ℑ𝑗𝑗 ∈ ℑ 全パラメータ
ノード𝑗𝑗の学習に
利用する
パラメータ
ランダム度合い: 𝜌𝜌 =
|ℑ𝑗𝑗|
|ℑ|
1. 根ノードから学習開始
2. 再帰的に以下を実行
A) ノード 𝑗𝑗 での最適な分
岐関数 ℎ∗
(𝒗𝒗, 𝜃𝜃∗
) を求め
る
B) ℎ∗に従って 𝑆𝑆𝑗𝑗 を分割
した 𝑆𝑆𝑗𝑗
𝐿𝐿
と 𝑆𝑆𝑗𝑗
𝑅𝑅
を与えて
子ノードを生成
C) 終了条件をみたす?
No→子ノードで学習
継続,Yes→終了
3. 全葉ノードで終了→終了
決定木学習の流れ
2015/7/27 MIRU 2015 Random Forest Tutorial 28
n
0
1 2
𝜃𝜃∗ = arg max 𝐼𝐼0
𝑆𝑆0
根ノード 𝑆𝑆0
𝑆𝑆𝑛𝑛
終了?
𝑆𝑆1 = 𝑆𝑆0
𝐿𝐿
𝑆𝑆2 = 𝑆𝑆0
𝑅𝑅
𝑆𝑆0
𝐿𝐿
𝑆𝑆0
𝑅𝑅
決定木学習の終了
終了条件
1. あらかじめ定めた深さ𝐷𝐷に達
した場合
2. ノードに割り当てられた学
習データの個数|𝑆𝑆𝑛𝑛|が一定値
以下になったとき
3. 分割による情報利得𝐼𝐼𝑛𝑛が一定
値以下になったとき
終了すると𝑆𝑆𝑛𝑛から事後確率
𝑝𝑝(𝑡𝑡|v) の推定値を計算して保持
2015/7/27 MIRU 2015 Random Forest Tutorial 29
n
𝑆𝑆𝑛𝑛
𝐷𝐷
𝑝𝑝(𝑡𝑡|v)
学習アルゴリズムの流れ
• 入力:学習データ集合 𝑆𝑆 = {𝒗𝒗, 𝑡𝑡}
• 𝑇𝑇個の決定木 T1, T2, … , T𝑇𝑇 それぞれについて
– 学習データ集合からサンプリング:𝑆𝑆 ⇒ 𝑆𝑆0
– サンプリングしたデータを根ノード(𝑗𝑗 = 0)に与え
以下を再帰的に繰り返す
• ノード 𝑗𝑗 での最適な分岐関数 ℎ∗(𝒗𝒗, 𝜃𝜃∗) を求める
• ℎ∗
に従って 𝑆𝑆𝑗𝑗 を分割して 𝑆𝑆𝑗𝑗
𝐿𝐿
と 𝑆𝑆𝑗𝑗
𝑅𝑅
を得る
• 終了条件をみたす? No→𝑆𝑆𝑗𝑗
𝐿𝐿
と𝑆𝑆𝑗𝑗
𝑅𝑅
を子ノードに与えて学習継
続,Yes→それより深くはしない
– すべての葉ノードが終了条件をみたす→木の学習終了
• すべての木の学習終了→Forestの学習終了
2015/7/27 MIRU 2015 Random Forest Tutorial 30
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
1. 基本構造
2. ランダムフォレストの学習
3. ランダムフォレストのテスト
4. 回帰などへの応用
5. ランダムフォレストの性質
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 31
テスト
• 与えられた入力を全ての決定木に入力して統合
2015/7/27 MIRU 2015 Random Forest Tutorial 32
𝒗𝒗
𝑝𝑝1(𝑡𝑡|𝒗𝒗) 𝑝𝑝2(𝑡𝑡|𝒗𝒗) 𝑝𝑝𝑇𝑇(𝑡𝑡|𝒗𝒗)
𝑝𝑝 𝑡𝑡 v =
1
𝑇𝑇
�
𝑡𝑡=1
𝑇𝑇
𝑝𝑝𝑡𝑡(𝑡𝑡|𝒗𝒗) • 多数決
• 積をとる場合もある
並列化可能!!
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
1. 基本構造
2. ランダムフォレストの学習
3. ランダムフォレストのテスト
4. 回帰などへの応用
5. ランダムフォレストの性質
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 33
ランダムフォレストによる回帰
• 出力
– パターン識別問題:c ∈ ℕ
– 回帰問題:y ∈ ℝ𝑛𝑛
2015/7/27 MIRU 2015 Random Forest Tutorial 34
𝒗𝒗
𝒚𝒚
𝒗𝒗
𝒄𝒄
1
2
3
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
1. 基本構造
2. ランダムフォレストの学習
3. ランダムフォレストのテスト
4. 回帰などへの応用
5. ランダムフォレストの性質
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 35
ランダムフォレストの性質
• パラメータチューニング
– 少々チューニングは必要だが比較的容易
• わかりやすさ
– 決定木なので識別規則が一目瞭然
• 複雑な対象の取り扱い
– 多クラス識別や回帰にもそのまま適用可能
– 非線形な対象の取り扱いも可能
• 処理コスト
– テストは高速
– 学習・テスト共に並列化に適している
2015/7/27 MIRU 2015 Random Forest Tutorial 36
RFの汎化誤差推定
• Out-of-Bag Estimates
– ブートストラップサンプルに含まれなかったサン
プルを使って汎化誤差を推定
– 交差検定(cross-validation)を実行する必要はな
い
2015/7/27 MIRU 2015 Random Forest Tutorial 37
𝒗𝒗
𝑝𝑝1(𝑡𝑡|𝒗𝒗) 𝑝𝑝𝑇𝑇(𝑡𝑡|𝒗𝒗)
𝒗𝒗 ∉ 𝑆𝑆1 𝒗𝒗 ∈ 𝑆𝑆2
𝒗𝒗 ∉ 𝑆𝑆𝑇𝑇
変数重要度
• 目的関数の改善に貢献
した度合いを積算
• OOBサンプルのうちラ
ンダムに選んだ変数を
置換
2015/7/27 MIRU 2015 Random Forest Tutorial 38
𝑗𝑗 𝑆𝑆𝑗𝑗
𝑆𝑆𝑗𝑗
𝐿𝐿
𝑆𝑆𝑗𝑗
𝑅𝑅
𝜃𝜃∗
= arg max 𝐼𝐼
𝜃𝜃∗ に相当する変数に
対し 𝐼𝐼 を積算していく
𝒗𝒗𝑖𝑖 ∉ 𝑆𝑆
𝑣𝑣1
0
, 𝑣𝑣2
0
, 𝑣𝑣3
0
, … , 𝑣𝑣𝑑𝑑
0
𝑣𝑣1
1
, 𝑣𝑣2
1
, 𝑣𝑣3
1
, … , 𝑣𝑣𝑑𝑑
1
𝑣𝑣1
2
, 𝑣𝑣2
2
, 𝑣𝑣3
2
, … , 𝑣𝑣𝑑𝑑
2
性能の低下が
顕著であれば重要
顔認識における変数重要度
2014/4/17 ランダムフォレストセミナー:補足資料 39
Scikit-learn のサンプル
木の深さと過学習
• 木の深さ𝐷𝐷
– あまり深くしすぎると過学習を起こす
2015/7/27 MIRU 2015 Random Forest Tutorial 40
木の深さと過学習:実例 [Criminisi 2011]
2015/7/27 MIRU 2015 Random Forest Tutorial 41
max tree depth, D
overfittingunderfitting
T=200, D=3, w. l. = conic T=200, D=6, w. l. = conic T=200, D=15, w. l. = conic
Training points: 4-class mixed
ブースティングとの比較(1)
2015/7/27 MIRU 2015 Random Forest Tutorial 42
ブースティングとの比較(2)
2015/7/27 MIRU 2015 Random Forest Tutorial 43
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
1. CV問題への適用
2. 識別の応用例
3. 識別+回帰の応用例
4. 条件付き回帰の応用例
5. コードブックとしての応用例
6. 問題点と対策
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 44
CV問題への適用:入力データ
• 入力データ 𝒗𝒗 = 𝑥𝑥1, 𝑥𝑥2, … , 𝑥𝑥𝑑𝑑 ∈ ℝ𝑑𝑑
– 画像/デプスマップ/3次元ボリュームの局所領
域を単位とする
– 局所領域における以下の特徴量で 𝒗𝒗 を構成(例)
• 輝度/色成分そのまま
• フィルタリング結果(微分など)
• HOGなどの特徴抽出結果
2015/7/27 MIRU 2015 Random Forest Tutorial 45
𝒊𝒊 𝒗𝒗
𝒊𝒊
𝒆𝒆
𝒇𝒇
フィルタ
特徴検出
CV問題への適用:分岐関数
• 分岐関数の定義 ℎ 𝒗𝒗, 𝜃𝜃𝑗𝑗 = {0, 1}
– データ 𝒗𝒗 の2要素の差分をとって閾値処理
– 一様な明度変化などに対してロバスト
( cf. Haar-like 特徴)
2015/7/27 MIRU 2015 Random Forest Tutorial 46
𝜙𝜙 = −
𝜙𝜙 = 𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑗𝑗,
( 𝑖𝑖, 𝑗𝑗 ∈ 1, … , 𝑑𝑑 2
)
ℎ 𝒗𝒗, 𝜃𝜃𝑗𝑗 = �
1 𝜙𝜙 ≥ 𝜏𝜏 ,
0 𝜙𝜙 < 𝜏𝜏 .
𝒗𝒗
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
1. CV問題への適用
2. 識別の応用例
3. 識別+回帰の応用例
4. 条件付き回帰の応用例
5. コードブックとしての応用例
6. 問題点と対策
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 47
リアルタイム特徴点認識
2015/7/27 MIRU 2015 Random Forest Tutorial 48
[Lepetit et al., 2006]
リアルタイム特徴点認識
• 目標
– 姿勢・照明変化などにロバストな特徴点認識
• ランダムフォレストを利用
– マルチクラス
– 高速
• 学習
– 様々な変形を加えて大量の学習データを生成
2015/7/27 MIRU 2015 Random Forest Tutorial 49
[Lepetit et al., 2006]
学習データの生成
2015/7/27 MIRU 2015 Random Forest Tutorial 50
[Lepetit et al., 2006]
(アフィン変換+ノイズ)
テスト
2015/7/27 MIRU 2015 Random Forest Tutorial 51
[Lepetit et al., 2006]
局所勾配ヒストグラムを使った場合との比較も
デプスマップからの身体部位推定
2015/7/27 MIRU 2015 Random Forest Tutorial 52[Shotton et al. 2011]
left
hand
right
shoulder neck
right
foot
Input depth image Visual features
• 人間の身体を31個の部位
に分割
• 入力:デプスマップ
• 出力:部位ラベル
2画素の奥行きの差
学習データの生成
2015/7/27 MIRU 2015 Random Forest Tutorial 53
[Shotton et al. 2011]
モーションキャプチャをベースにCGでデプスマップを生成
身体部位推定結果
2015/7/27 MIRU 2015 Random Forest Tutorial 54
[Shotton et al. 2011]
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
1. CV問題への適用
2. 識別の応用例
3. 識別+回帰の応用例
4. 条件付き回帰の応用例
5. コードブックとしての応用例
6. 問題点と対策
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 55
Hough Forest
• 局所パッチ&投票ベースの物体検出
– Implicit Shape Model [Leibe et al. 2003]
• ランダムフォレストで識別・回帰を行う
2015/7/27 MIRU 2015 Random Forest Tutorial 56
[Gall et al. 2009]
[Okada 2009]
11, xc
22 , xc
3c
44 , xc
5c
ランダムフォレスト
入力:
・局所パッチ
出力:
・クラスラベル
・オフセット
Hough Forest の学習結果
2015/7/27 MIRU 2015 Random Forest Tutorial 57
[Gall et al. 2009]
葉ノードに対応づいた
クラス分布と
オフセット量
根ではクラス優先
葉ではオフセット量優先
Hough Forests の検出結果
2015/7/27 MIRU 2015 Random Forest Tutorial 58
[Gall et al. 2009]
CT画像中の臓器検出
2015/7/27 MIRU 2015 Random Forest Tutorial 59
[ Criminisi et al. 2010]
入力:
・局所ボクセル
出力:
・臓器の位置
Hough Forest の問題点と改良(1)
• スケール変化を別途扱う必要あり
• バウンディングボックスは固定
• 最後に極大点検出が必要 → 遅い
2015/7/27 MIRU 2015 Random Forest Tutorial 60
• DOT(Dominant Orientation
Template)による高速特徴抽出
• 粗密(Coarse-to-fine)探索を用いる
[Tang BMVC 2012]
カスケード接続による高速推定
2015/7/27 MIRU 2015 Random Forest Tutorial 61
全体検出用のRF 局所パッチを
用いるRF
YouTubeでのデモ
https://youtu.be/m_2tb9Khj8A
Hough Forest の問題点と改良(2)
• スケール変化を別途扱う必要あり
• バウンディングボックスは固定
• 最後に極大点検出が必要 → 遅い
2015/7/27 MIRU 2015 Random Forest Tutorial 62
• アスペクト比を推定対象にする
• ウィンドウ全体を処理対象にする
[Schulter CVPR 2014]
アスペクト比の推定
2015/7/27 MIRU 2015 Random Forest Tutorial 63
Hough Forests は局所パッチから
・クラス(対象物体かどうか)
・物体中心からのオフセット
を推定
検出対象候補全体
(横幅は正規化)
・クラス(対象物体かどうか)
・縦の高さ(アスペクト比)
[Schulter CVPR 2014]
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
1. CV問題への適用
2. 識別の応用例
3. 識別+回帰の応用例
4. 条件付き回帰の応用例
5. コードブックとしての応用例
6. 問題点と対策
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 64
Conditional Regression Forests
• ランダムフォレスト出力は互いに独立と仮定
• 何らかの条件付きでの回帰ができれば効率化
が可能
– 対象物体の位置・姿勢
2015/7/27 MIRU 2015 Random Forest Tutorial 65
𝑆𝑆 𝑥𝑥𝑗𝑗 𝐼𝐼 = �
𝑙𝑙∈𝐿𝐿
�
𝑐𝑐𝑙𝑙∈𝐶𝐶
𝑝𝑝(𝑥𝑥𝑗𝑗, 𝑐𝑐𝑙𝑙|𝐼𝐼𝑙𝑙)
= �
𝑙𝑙∈𝐿𝐿
�
𝑐𝑐𝑙𝑙∈𝐶𝐶
𝑝𝑝 𝑥𝑥𝑗𝑗 𝑐𝑐𝑙𝑙 𝑝𝑝(𝑐𝑐𝑙𝑙|𝐼𝐼𝑙𝑙)
CRF による顔特徴検出
2015/7/27 MIRU 2015 Random Forest Tutorial 66
[Dantone CVPR 2012]Real-time Facial Feature Detection using
Conditional Regression Forests
CRF による人物姿勢推定
2015/7/27 MIRU 2015 Random Forest Tutorial 67
[Sun CVPR 2012]Conditional Regression Forests for
Human Pose Estimation
胴体方向などを Latent Variable として
そのもとでの条件付き回帰を行う
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
1. CV問題への適用
2. 識別の応用例
3. 識別+回帰の応用例
4. 条件付き回帰の応用例
5. コードブックとしての応用例
6. 問題点と対策
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 68
決定木によるクラスタリング
2015/7/27 MIRU 2015 Random Forest Tutorial 69
𝑆𝑆
教師なしの場合
距離尺度で分割してく
BoF における
コードブックとして利用
RF の出力をコードブックに
2015/7/27 MIRU 2015 Random Forest Tutorial 70
Classifier
[Moosmann NIPS 2007]
Semantic Texton Forests
2015/7/27 MIRU 2015 Random Forest Tutorial 71
Input Image Ground Truth
A[r] + B[r] > 363A[b] > 98
A[g] - B[b] > 28
A[g] - B[b] > 13A[b] + B[b] > 284
|A[r] - B[b]| > 21|A[b] - B[g]| > 37
Example
Patches
[Shotton CVPR 2008]
Bag of Semantic Textons
2015/7/27 MIRU 2015 Random Forest Tutorial 72
[Shotton CVPR 2008]
複数スケールでの
セグメンテーション結果を利用
セグメンテーション結果
2015/7/27 MIRU 2015 Random Forest Tutorial 73
[Shotton et al. 2008]
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
1. CV問題への適用
2. 識別の応用例
3. 識別+回帰の応用例
4. 条件付き回帰の応用例
5. コードブックとしての応用例
6. 問題点と対策
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 74
ランダムフォレストの問題点
• 高い能力を得るには
– フォレストの規模が大きくなる
– メモリ使用量大
2015/7/27 MIRU 2015 Random Forest Tutorial 75
・ 構造を工夫するもの
・ 構築(学習)過程を工夫するもの
尤度の導出
2015/7/27 MIRU 2015 Random Forest Tutorial 76
• ナイーブベイズ
– 𝑃𝑃 𝑓𝑓1, 𝑓𝑓2, … , 𝑓𝑓𝑁𝑁 𝐶𝐶 = 𝑐𝑐𝑖𝑖 = ∏𝑘𝑘=1
𝑁𝑁
𝑃𝑃(𝑓𝑓𝑘𝑘|𝐶𝐶 = 𝑐𝑐𝑖𝑖)
• Semi-naïve Bayesian Approach
– 𝑃𝑃 𝑓𝑓1, 𝑓𝑓2, … , 𝑓𝑓𝑁𝑁 𝐶𝐶 = 𝑐𝑐𝑖𝑖 = ∏𝑘𝑘=1
𝑀𝑀
𝑃𝑃(𝐹𝐹𝑘𝑘|𝐶𝐶 = 𝑐𝑐𝑖𝑖)
– 𝐹𝐹𝑘𝑘 = 𝑓𝑓𝜎𝜎 𝑘𝑘,1 , 𝑓𝑓𝜎𝜎 𝑘𝑘,2 , … , 𝑓𝑓𝜎𝜎 𝑘𝑘,𝑆𝑆 , 𝑘𝑘 = 1, … , 𝑀𝑀
[Ozuysal CVPR 2007]
[Ozuysal PAMI 2010]
画像特徴は完全に独立ではない
RF vs. Random Fern
2015/7/27 MIRU 2015 Random Forest Tutorial 77
事後確率
𝑃𝑃(𝑐𝑐|𝑓𝑓0, 𝑓𝑓2, 𝑓𝑓5)
決定木 Fern 𝐹𝐹𝑘𝑘
𝑃𝑃 𝑓𝑓0, 𝑓𝑓1, 𝑓𝑓2 𝐶𝐶 = 𝑐𝑐𝑖𝑖
𝐹𝐹𝑘𝑘
尤度
特徴点認識結果
2015/7/27 MIRU 2015 Random Forest Tutorial 78
[Ozuysal et al. 2010]
Extremely Randomized Trees
• ランダムフォレストとの違い
– ブートストラップサンプルではなく学習サンプ
ル全体を利用
– 分岐関数の決定を完全にランダムに
2015/7/27 MIRU 2015 Random Forest Tutorial 79
[Geurts ML 2006]
𝑆𝑆
𝒗𝒗1, 𝑡𝑡1
𝒗𝒗3, 𝑡𝑡3
𝒗𝒗4, 𝑡𝑡4
𝒗𝒗2, 𝑡𝑡2
𝒗𝒗1, 𝑡𝑡1
𝒗𝒗3, 𝑡𝑡3 𝑆𝑆1 𝒗𝒗3, 𝑡𝑡3 𝑆𝑆2
𝒗𝒗4, 𝑡𝑡4
𝒗𝒗3, 𝑡𝑡3
𝒗𝒗4, 𝑡𝑡4
最適なパラメータ 𝜃𝜃∗
= arg max
𝜃𝜃𝑗𝑗∈ℑ𝑗𝑗
𝐼𝐼𝑗𝑗
分散低減の効果大
計算コスト低減
Decision Jungles
• ランダムフォレストとの違い
– 複数の親ノードから一つの子ノードへの結合を
許す
2015/7/27 MIRU 2015 Random Forest Tutorial 80
[Shotton NIPS 2013]
Microsoft Azure に実装
ランダムフォレストの問題点
• 高い能力を得るには
– フォレストの規模が大きくなる
– メモリ使用量大
2015/7/27 MIRU 2015 Random Forest Tutorial 81
・ 構造を工夫するもの
・ 構築(学習)過程を工夫するもの
Alternating Decision Forests
• 深さ優先ではなく,幅優先で木を構築する
• 損失関数を大域的に最小化
• 通常の Random Forests よりも良い結果
2015/7/27 MIRU 2015 Random Forest Tutorial 82
[Schulter CVPR 2013]
Boosted Random Forest
• ブースティングで順に決定木の精度向上
2015/7/27 MIRU 2015 Random Forest Tutorial 83
[Mishima VISIGRAPP 2014]
誤差
重みづけ
誤差
重みづけ
構築したRFの最適化(1)
• 葉ノードに与えられた予測値の最適化
2015/7/27 MIRU 2015 Random Forest Tutorial 84
[Ren CVPR 2015]
𝑥𝑥
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0Φ(𝑥𝑥)
Indicator Vector
𝑦𝑦 = 𝑊𝑊Φ(𝑥𝑥)
Global Refinement of Random Forest
初期学習で葉ノードに
与えられた予測値の集合
• SVMと同様の目的関数で
最適な 𝑊𝑊 を導出できる
• 木同士が相補的な働きを
するようになる
構築したRFの最適化(2)
• 不要な葉ノードの統合(Pruning)
2015/7/27 MIRU 2015 Random Forest Tutorial 85
[Ren CVPR 2015]
𝑤𝑤𝑡𝑡
• 隣接葉ノードでベクトルの L2 ノルムの和をとる
• 全体の中で下位の組みあわせを統合する
本日の構成
1. ランダムフォレストの特徴
2. ランダムフォレストの基礎
3. ランダムフォレストの応用
4. ランダムフォレストの実際
2015/7/27 MIRU 2015 Random Forest Tutorial 86
どの手法を使えばよいの?
• Choosing the right estimator
http://scikit-learn.org/stable/tutorial/machine_learning_map/
2015/7/27 87MIRU 2015 Random Forest Tutorial
識別のところを拡大
2015/7/27 88MIRU 2015 Random Forest Tutorial
線形サポートベクトルマシンや
k 最近傍法でうまくいくときはそれを使うべき
そうでないときにカーネルSVMはアンサンブル学習を
ランダムフォレストのパラメータ調整
• 基本的にはデータセット・タスク依存!
• 一般的に目にする議論としては
– 木を深くすると過学習につながるがあまり神経
質になる必要はない
– 節点で試す分岐関数の個数はあまり多くてはい
けない
2015/7/27 MIRU 2015 Random Forest Tutorial 89
利用可能なライブラリ
• Open CV
– CvRTrees
• Python
– scikit-learn
– http://scikit-learn.org/stable/
• Waffles
– http://waffles.sourceforge.net/
• Randomforest-matlab
– http://code.google.com/p/randomforest-matlab/
• Leo Breiman
– http://www.stat.berkeley.edu/~breiman/RandomF
orests/cc_home.htm
2015/7/27 MIRU 2015 Random Forest Tutorial 90
scikit-learn
• Python で利用できる機械学習ライブラリ
• ランダムフォレストを初めとしてSVM,ブー
スティングなどよく利用されている機械学習
手法が実装されている
• ドキュメントが非常に丁寧
2015/7/27 MIRU 2015 Random Forest Tutorial 91
scikit-learn のサンプル
2015/7/27 MIRU 2015 Random Forest Tutorial 92
IRISデータを使った比較
顔認識における変数重要度
入手可能な参考資料(1)
• ICCV 2009 tutorial by Jamie Shotton
– http://www.iis.ee.ic.ac.uk/~tkkim/iccv09_tutorial
• ICCV 2011 tutorial by Antonio Criminisi
– http://research.microsoft.com/en-us/projects/decisionforests/
• ICCV 2013 tutorial by Jamie Shotton
– http://research.microsoft.com/en-us/um/cambridge/projects/iccv2013tutorial/
• 中部大学機械知覚&ロボティクスグループ
– http://mprg.jp/tutorials
2015/7/27 MIRU 2015 Random Forest Tutorial 93
入手可能な参考資料(2)
• Elements of Statistical Learning (T. Hastie et
al., 2009)
– 和訳:統計的学習の基礎:データマイニング・
推論・予測,共立出版,2014
• Decision Forests for Computer Vision and
Medical Image Analysis (Antonio Criminisi et al.,
2013)
2015/7/27 MIRU 2015 Random Forest Tutorial 94
まとめ
• ランダムフォレストの利点
– テストが高速/わかりやすい/そこそこ高性能
– 拡張が容易
• 今後
– 研究者/技術者の改良によって新たな展開?
2015/7/27 MIRU 2015 Random Forest Tutorial 95
ご静聴ありがとうございました
2015/7/27 MIRU 2015 Random Forest Tutorial 96

More Related Content

ランダムフォレストとそのコンピュータビジョンへの応用