Download - PRML 4.1 Discriminant Function
PATTERN RECOGNITION AND MACHINE LEARNING
4.1 Discriminant Function
Shintaro TAKEMURA d.hatena.ne.jp/taos
twitter.com/stakemura facebook.com/shintaro.takemura
開発環境、何がお勧め?
• R
– 線形代数や最適化問題が簡単に扱える
– パッケージ管理やExcel連携機能(RExcel)が強み
• Python
– 統計に特化したRと違い、汎用スクリプト言語
– 科学計算モジュールが豊富
– 統合開発環境でお手軽インストール →Pythonxy(無償)やEnthought(有償)
• C++
– 速度を要求するモジュール実装のための言語
– GPUなどハードに特化した最適化が可能
本発表で用いる開発環境の紹介
• Pythonxy
– カスタマイズ済みIDEの提供
• Eclipse+PyDev 一般的な開発はこちらで
• Spider ちょっとした検証に便利
– 膨大なプリインストールライブラリ
• numpy 多次元配列操作や数値解析など
• scipy 統計、最適化、積分、ODE ソルバなど
• cvxopt より強力な数値最適化
• matplotlib R並みのグラフ描画機能
• pylab MATLABライクなインターフェースを提供
– 現時点では、Windows/Ubuntuに対応 (EnthoughtはMacOSなどより幅広く対応)
参考文献(Pythonソースコード)
• id:aidiaryさん「人工知能に関する断想録」より
– 分類における最小二乗
◎高速 △要逆行列計算(大規模化が困難) ×精度 △クラス内において多変量ガウス分布を仮定
– フィッシャーの線形判別
◎高速 △K>2で要特異値分解(大規模化が困難) △精度 △クラス間では平均のみ異なると仮定
– パーセプトロン
◎オンライン学習 ×収束判定が難しい
– ロジスティック回帰 (4.3.2)
○高速 ○大規模データにも適用可能 ◎上記線形判別のような分布、パラメータの制約がない
線形識別モデル
• 目的
– ある入力ベクトル𝐱の要素を、K個の離散クラス𝐶𝑘に分類。各クラスは互いに重ならず、各入力は一つのクラスに割り当てられる
– 分類された入力空間を決定領域、 決定領域の境界を決定境界・決定面と呼ぶ
• 線形識別モデルとは
– 決定面が入力ベクトル𝐱の線形関数
– D次元の入力空間に対し、決定面はD-1次元のモデル
– 線形決定面によって正しく各クラスに分類できるデータ集合を線形分離可能であるという
分類問題の表記方法について
• 回帰問題
– 目的変数𝑡 は実数値ベクトル
• 分類問題
– 離散的なクラスラベルを表現する方法は様々
– 2クラス分類問題の場合、2値表現が一般的
𝑡 ∈ 0,1
– K>2クラスの場合は、目的変数に対して1-of-k表記法を
使用するのが便利。クラスが𝐶𝑗の場合、j番目の要素を除くtの要素がすべて0となる、長さKのベクトルが使用される。
𝑡 = (0,1,0,0,0)T (4.1)
分類問題への3アプローチ
• 識別関数(4.1)
– 入力ベクトル𝐱から直接クラス𝐶𝑘を推定する識別関数を構築。推論と決定を分離しない
• 確率的生成モデル(4.2)
– 条件付き確率分布𝑝(𝐱|𝐶𝑘)と、クラスの事前確率𝑝(𝐶𝑘)をモデル化
– 事後確率𝑝(𝐶𝑘|𝐱)は、モデル化した𝑝(𝐱|𝐶𝑘)と𝑝(𝐶𝑘)から、ベイズの定理で計算する
• 確率的識別モデル(4.3)
– 条件付き確率分布𝑝(𝐶𝑘|𝐱) を直接モデル化
– 𝑝(𝐶𝑘|𝐱)を通じて得られる尤度関数を最大化する
識別関数の表現
• 最も簡単なモデル
– 入力ベクトル𝐱に対して線形の識別関数を考える このとき𝑦は実数値
𝑦 𝐱 = 𝐰T𝐱 + 𝑤0
• モデルの一般化
– 領域(0,1)の値を取る事後確率を予測するため、パラメータ𝐰の線形関数を、非線形関数𝑓(∙)によって変換するように一般化する
𝑦 𝐱 = 𝑓(𝐰T𝐱 + 𝑤0)
– 𝑓(∙)を活性化関数(activation function)とよぶ
– 𝑓(∙)の逆関数は連結関数(link function)
(4.3)
2クラスの線形識別
• 2クラスの線形識別を考える
– 𝑦 𝐱 ≥ 0ならば、 𝐱はクラス𝐶1に割り当てられ、それ以外は𝐶2に割り当てられる
– 𝐰は重みベクトルと呼ばれ、決定境界の傾きを決める
– 𝑤0はバイアスパラメータと呼ばれ、原点からの境界のずれを決める(マイナスの場合は閾値パラメータ)
重みベクトル バイアスパラメータ
入力ベクトル
(4.4) 𝑦 𝐱 = 𝐰T𝐱 + 𝑤0
識別関数の幾何的表現
– 赤で示された決定面は𝐰に垂直である
– 原点から面までの距離はバイアスパラメータ𝑤0によって制御され、決定面(境界)のどちら側にあるかによって、入力ベクトルのクラスを判別する
決定面
重みベクトル
入力ベクトル
多クラスへの拡張・問題点
• 2クラス線形識別をK > 2に拡張
– 複数の2クラス識別関数の組み合わせでKクラスの識別が構成可能
– しかし、単純に行うと曖昧な領域が生まれてしまう
• 1対他分類器(one-versus-the-rest classifier)
– ある特定のクラスに入る点と入らない点を識別する2クラスをK − 1個用意
• 1対1分類器(one-versus-one classifier)
– すべてのクラスの組み合わせを考え、 K(K − 1)/2個の2クラスを用意
多クラスへの拡張・解決案
• 単独のKクラス識別を考える
– 𝐾個の線形関数で構成 𝑘 = 1,… , 𝐾
yk 𝐱 = 𝐰𝑘T𝐱 + 𝑤𝑘0
– 𝑗 ≠ 𝑘としてyk 𝐱 > yj 𝐱 なら点𝐱は 𝐶𝑘に分類。決定境界は、(D-1)次元の超平面に相当
• 決定境界の性質
– 領域ℛ𝑘内の点𝐱𝐀と𝐱𝐁と2点の線分上の点𝐱 を考える
– 0 ≤ 𝜆 ≤ 1とすると、ベクトル𝐱 は次式が成立
𝐱 = 𝜆𝐱A + 1 − 𝜆 𝐱B
– 次式から𝑦𝑘 𝐱 > 𝑦𝑗(𝐱 )が示され、任意の𝐱 はℛ𝑘内に
𝑦𝑘 𝐱 = 𝜆𝑦𝑘 𝐱A + 1 − 𝜆 𝑦𝑘 𝐱B
(4.9)
(4.11)
(4.12)
分類における最小二乗
• 最小二乗法による線形回帰
– 3章でパラメータに関する線形モデルを考えた
– 二乗和誤差の最小化によるパラメータの算出を、分類問題に適用してみる
– 目的変数ベクトルを𝐭とすると、最小二乗法が入力ベクトルが与えられた際の目的変数値の条件付き期待値𝔼,𝐭|𝐱-を近似する
• 結果
– 推定された確率は一般的に非常に近似が悪い
– 線形モデルの柔軟性が低いために、確率の値が(0,1)の範囲を超えてしまうこともある
分類における最小二乗
• ベクトル表記の導入
– K個の識別関数を以下のように記述
yk 𝐱 = 𝐰𝑘T𝐱 + 𝑤𝑘0
𝐲(𝐱) = 𝐖 T𝐱
– 𝐖 は、k番目の列をD+1次元の拡張重みベクトル
𝐰 𝒌 = 𝑤𝑘0, 𝐰𝑘T T
で構成されるパラメータ行列
– 𝐱 = 1, 𝐱TTは、同じくD+1次元の拡張入力ベクトル
– 学習データ集合 *𝐱𝑛, 𝐭𝑛+が与えられたとき、次式の二乗和誤差関数を最小化して、パラメータ行列𝐖 を決定
𝐸𝐷 𝐖 =1
2𝑇𝑟 𝐗 𝐖 − 𝐓
𝑇𝐗 𝐖 − 𝐓
(4.14)
(4.13)
(4.15)
分類における最小二乗
• パラメータ行列𝐖 の決定
– 𝐖 に関する導関数を0とおき、整理すると
𝐖 = 𝐗 T𝐗 −𝟏𝐗 T𝐓 = 𝐗 +𝐓
– 疑似逆行列𝐗+を用いて識別関数を以下のように導出
𝐲 𝐱 = 𝐖 T𝐱 = 𝐓T 𝐗 +T𝐱 .
• 考察
– 最小二乗法は識別関数のパラメータを求めるための解析解を与えるが、外れ値に弱く、3クラスの分類に対しても満足のいく解を与えられない(次スライドにて)
– 最小二乗法は条件付き確率分布にガウス分布を仮定した場合の最尤法であることに起因
(4.17)
(4.16)
識別結果のプロット
• 緑色は4.3.2のロジスティック回帰モデル、紫は最小二乗によって得られる決定面
• 外れ値が右下にある場合最小二乗は過敏に反応していることがわかる
• 下段は3クラスの分類
• 左図は最小二乗による分類.緑色のクラスについては誤識別が大きい
• 右図はロジスティック回帰モデルで、うまく分類できていることがわかる
次元の削減
• 2クラス線形識別モデル
– D次元の入力ベクトルを、1次元に射影
𝑦 = 𝐰T𝐱
– 𝑦に対し−𝑤0を閾値とした、線形識別器が得られる
– 一般的に1次元への射影は相当量の情報の損失が発生 元のD次元空間では分離されていたクラスが、1次元空間では大きく重なり合う可能性がある
• 改善案
– 重みベクトル𝐰の要素を調整することで、クラスの分離を最大にする射影を選択することができる
(4.20)
フィッシャーの線形判別
• クラス分離度の最大化
– 𝐶1に𝑁1個, 𝐶2に𝑁2個、入力ベクトルが属するとき、2つのクラスの平均ベクトル𝐦1,𝐦2は
𝐦1 =1
𝑁1 𝐱𝑛𝑛∈𝐶1
,𝐦2 =1
𝑁2 𝐱𝑛𝑛∈𝐶2
– m𝑘を𝐶𝑘から射影されたデータの平均とおくと、分離度を最大化する単位長の𝐰は次式から𝐰 ∝ (𝒎𝟐 −𝒎𝟏)
𝑚2 −𝑚1 = 𝐰T(𝐦2 −𝐦1)
𝑚𝑘 = 𝐰T𝐦𝑘
– しかしこの方法では、射影結果に 重なりが生じてしまう(右図) →クラス分布の非対角な 共分散が強いため
(4.21)
(4.22)
(4.23)
フィッシャーの線形判別
• クラス内分散を最小化
– 𝐶𝑘から射影されたデータ𝑦𝑛 = 𝐰T𝐱𝑛のクラス内分散
𝑠𝑘2 = 𝑦𝑛 −𝑚𝑘
2
𝑛∈𝐶𝑘
– フィッシャーの判別基準 𝐽 𝐰 は、クラス内分散とクラス間分散の比で定義される
𝐽 𝐰 =𝑚2 −𝑚1
2
𝑠12 + 𝑠2
2
– また𝑚𝑘 = 𝐰T𝐦𝑘から𝐰で以下のように記述可能
𝐽 𝐰 =𝐰T𝐒B𝐰
𝐰T𝐒W𝐰
(4.24)
(4.26)
(4.25)
フィッシャーの線形判別
• フィッシャーの判別基準 𝐽 𝐰 =𝐰T𝐒B𝐰
𝐰T𝐒W𝐰
– クラス間共分散行列
𝐒B = 𝐦2 −𝐦1 𝐦2 −𝐦1T
– 総クラス内共分散行列
𝐒W = 𝐱𝑛 −𝐦1 𝐱𝑛 −𝐦1T
𝑛∈𝐶1
+ 𝐱𝑛 −𝐦2 𝐱𝑛 −𝐦𝟐T
𝑛∈𝐶2
• 𝐽 𝐰 の最大化条件(微分して算出)
(𝐰T𝐒B𝐰) 𝐒W𝐰 = (𝐰T𝐒W𝐰) 𝐒𝐵𝐰
𝐰 ∝ 𝐒W−1 𝐦2 −𝐦1
– クラス内分散が等方的であるとすると、𝐒Wは単位行列に比例し、𝐰はクラス平均の差に比例
(4.27)
(4.28)
(4.29)
(4.30)
フィッシャーの線形判別
• フィッシャーの線形判別
– 単に線形判別分析と称することも
(Linear Discriminant Analysis)
• 結果
– 上の図では、射影空間では無視できないくらいにクラスが重なり合っていることがわかる
– 下の図のプロットはフィッシャーの線形判別に基づく射影を示す
– クラス分離度を大きく改善していることがわかる
最小二乗との関連
• 最小二乗法の目標
– 目的変数値の集合にできるだけ近い予測をすること
• フィッシャーの判別基準の目標
– 出力空間でのクラス分離を最大にすること
– 2クラス問題において、最小二乗の特殊ケースに該当
• 2つのアプローチの関係
– 目的変数値𝐭𝑛として1-of-K表記法を考えてきたが、それとは異なる目的変数値の表記法を使うと、重みに対する最小二乗解がフィッシャーの解と等価になる
– 𝐶1, 𝐶2に対する目的変数値を𝑁/𝑁1, −𝑁/𝑁2とおく
– ここで𝑁は全体のパターンの個数
最小二乗との関連
• 最小二乗法による2クラスフィッシャー判別
𝐸 =1
2 𝐰T𝐱𝑛 +𝑤0 − 𝑡𝑛
2𝑁
𝑛=1
– 𝑤0と𝐰に関する二乗和誤差関数𝐸の導関数を0とすると、バイアス𝑤0と全データ集合の平均𝐦は
𝑤0 = −𝐰T𝐦
𝐦 =1
𝑁 𝐱𝑛
𝑁
𝑛=1
=1
𝑁(𝑁1𝐦1 +𝑁2𝐦2)
– 𝐒B𝐰が常に(𝐦2 −𝐦1)と同じ方向になることから𝐰は
𝐒W +𝑁1𝑁2𝑁
𝐒𝐵 𝐰 = 𝑁(𝐦1 −𝐦2)
𝐰 ∝ 𝐒W−1 𝐦2 −𝐦1
(4.31)
(4.36)
(4.37)
(4.38)
(4.35)
多クラスにおけるフィッシャーの判別
• K>2 クラスへの一般化 (K < D, k=1,...,D’)
– 重みベクトル 𝐰𝑘 を列とする行列Wを考える
𝐲 = 𝐖T𝐱
– クラス内共分散を一般化
𝐒W = 𝐱𝑛 −𝐦𝑘 𝐱𝑛 −𝐦𝑘T
𝑛∈𝐶𝑘
𝐾
𝑘=1
– 総共分散行列 𝐒T = 𝐒W + 𝐒Bからクラス間共分散を算出
𝐒T = 𝐱𝑛 −𝐦 𝐱𝑛 −𝐦 T
𝑁
𝑛=1
𝐒B = 𝑁𝑘 𝐦𝑘 −𝐦 𝐦𝑘 −𝐦 𝑇
𝐾
𝑘=1
(4.39)
(4.43)
(4.41)
(4.46)
多クラスにおけるフィッシャーの判別
• フィッシャー判別基準の最大化
– D’次元に射影 𝐒W → sW 𝐒B → sB
– クラス間共分散が大きく、クラス内共分散が小さい場合に大きくなるようなスカラーを構成(以下その例)
𝐽 𝐖 = Tr sW−1sB
– (4.50)は一般化レイリー商から求められるらしい
• 高村大也, Mining the Web : Chapter 5 (SUPERVISED LEARNING) p.9 より
– 以下の式に書き直すことも可能
𝐽 𝐰 = Tr 𝐖𝐒W𝐖T −1
(𝐖𝐒B𝐖T)
– 𝐒Bのランクは高々(𝐾 − 1)ゆえ(𝐾 − 1)個以上の線形特徴を発見することはできない
(4.50)
(4.51)
パーセプトロンアルゴリズム
• パーセプトロン
– あるきまった非線形変換を用いて、入力ベクトル𝐱を変換して特徴ベクトル𝜙(𝐱)を得て、以下の式で表わされる一般化線形モデルを構成
𝑦(𝐱) = 𝑓(𝐰T𝜙(𝐱))
– 2クラス分類問題では目的変数値の表記法として、𝑡 ∈ 0,1 を用いていたが、パーセプトロンでは𝑓(∙)はステップ関数で与えられる
𝑓 𝑎 =+1(𝑎 ≥ 0)−1(𝑎 < 0)
– 誤差関数として、誤識別したパターンの総数を選択するのが自然だが、アルゴリズム導出が困難
(4.52)
(4.53)
パーセプトロンアルゴリズム
• アルゴリズム導出が困難な理由
– 誤差が𝐰の区分的な定数関数であり、 𝐰の変化に伴い変化する決定境界が、データ点を横切るたびに不連続
– 関数の勾配を使って𝐰を変化させる方法が使えない
• パーセプトロン規準による解決
– 別の誤差関数を導くため、𝐶1のパターン𝐱𝑛に対し𝐰T𝜙 𝐱𝑛 > 0、𝐶2のパターン𝐱𝑛に対し𝐰T𝜙 𝐱𝑛 < 0となるような重みベクトル𝐰を求める
– 𝑡 ∈ −1,+1 という目的変数値の表記方法を用いると、すべてのパターンは𝐰T𝜙 𝐱𝑛 𝑡𝑛 > 0を満たす
– 正しく分類されたパターンには誤差0を割り当て、誤分類されたパターンには−𝐰T𝜙 𝐱𝑛 𝑡𝑛の最小化を試みる
パーセプトロンアルゴリズム
• パーセプトロン基準
𝐸P 𝐰 = − 𝐰T𝜙𝑛𝑡𝑛𝑛∈ℳ
– 𝜙𝑛 = 𝜙(𝐱𝑛)で、ℳは誤分類された全パターンの集合
– 𝐰空間でパターンが正しく分類される領域内ではパターンの誤差への寄与は0、誤分類の場合は線形関数 よって総誤差関数は区分的に線形
– 誤差関数最小化に確率的最急降下アルゴリズムを適用
𝐰𝜏+1 = 𝐰𝜏 − 𝜂𝛻𝐸P 𝐰 = 𝐰𝜏 + 𝜂𝜙𝑛𝑡𝑛
– 𝜂は学習率パラメータ、𝜏はアルゴリズムのステップ数
– 𝜂は1にしても一般性は失われない
(4.54)
(4.55)
パーセプトロンの収束特性
• プロット図の解説
– 初期のパラメータベクトル𝐰を、決定境界(黒直線)とともに黒矢印で表示
– 緑の円で囲まれたデータは誤分類されており、その特徴ベクトルが現在の重みベクトルに追加される
– さらに考慮すべき次の誤分類点の特徴ベクトルをまた重みベクトルに追加、右下の決定領域を得る
パーセプトロンの弱み
• 考察
– 更新の対象としていない誤分類パターンからの誤算関数への寄与は減少しているとは限らない
– 重みベクトルの変化は、以前正しく分類されていたパターンを誤分類させるようなこともあり得る
• パーセプトロンの収束定理
– 厳密解が存在する場合(学習データ集合が線形に分離可能な場合)パーセプトロン学習アルゴリズムは有限回の繰り返しで厳密解に収束することを保証している
– 実用的には、パラメータの初期値、データの提示順に依存してさまざまな解に収束してしまい、また線形分離可能でないデータ集合に対しては決して収束しない