カテゴリー別アーカイブ: Machine Learning

パターン認識と機械学習のネタ

[BCI] Classification of covariance matrices using a Riemannian-based kernel for BCI applications

概要
空間分散共分散行列を特徴量として使用することは、BCIの運動想起によるEEGの識別で研究されている。新しいカーネルは対称正定値行列のリーマン幾何による接続を確立することにより導出される。過去のBCIコンペのデータに対し、異なるカーネルをSVMとの組み合わせでテストした。この新しいアプローチが、従来からの空間フィルタリングによるアプローチに代わるような性能であることを示す。

キーワード
Brain-Computer Interface, 分散共分散行列, カーネル, Support Vector Machine, リーマン幾何

内容
運動想起(MI; motor imagery)は、実際の身体の動きをイメージすることで、結果として、感覚運動野sensorimotor cortexの広い皮質領域で特定の脳波の周波数帯(μ、β周波数帯)においてERS; event related synchronization / ERD; event related desynchronizationが起きる。 (Pfurtscheller and Lopes da Silva, 1999)

運動想起に基づくEEG識別のスタンダートなアプローチとしては、バンドパスフィルタリング、空間フィルタリングをして線形分類を行う方法が用いられ、分類にはFisherのLDA; linear discriminat analysisが用いられる。

空間フィルタリングの手法としては、CSP; common spatial pattern (Ramoser, 2000)がよく使用される。
このアルゴリズムは、データ依存の次元削減法とみなすことができ、2つのコンディションの分散の差を強調する目的で使用される。
その際は、分散共分散行列はユークリッド空間で扱われ、SPD; symmetric positive definite対称正定値行列の空間の歪みは考慮されない。

EEGの分類のためのリーマン幾何を考慮するシンプルな方法
このアプローチは、過去にレーダー信号と画像処理においてうまくいった。
その上、新しいカーネルはSPD行列のリーマン幾何での接続をすることによって導出できる。
似たようなアプローチ (Harandi et al., 2012; Wang et al., 2010)
リーマン計量に依存する異なるカーネルの定義も導出

SVMと組み合わせてテスト
カーネルトリックが適用できる他の分類法 ロジスティック回帰 logistic regression も行った。
現在の手法よりも優れているのは、空間フィルタリングをする必要がなく、直接適用できること。(Barachant et al., 2010)

対称正定値行列に対する新しいカーネル
EEG信号は、試行 trials とよばれる短い時間セグメントで解析される。
入力信号 {\mathbf X} \in {\mathbb R}^{E\times T} (チャンネル数E x サンプル数Tの行列)
異なるEEG信号にバンドパスフィルタを適用すると仮定、μ(8-14Hz)とβ(14-30Hz) バンドを考慮して8-35Hzのバンドパスフィルタを適用。
2クラス分類  y_p \in \{-1, +1\}

EEGのランダム信号の空間分散共分散行列はExEのサンプル分散共分散行列(SCM)
C_p = \frac{1}{T-1} {\mathbf X_p}{\mathbf X^T_p}
によって計算。
SPD ExE行列空間をP(E)をする。
SCMは外れ値 outlier に敏感なため、robustな分散共分散行列推定か正則化が推定法を改良するために適用可能

空間フィルタリングを次元削減と異なる運動クラスのEEG試行同士の分散比を強調するために使用するのはMI-basedなBCIでは一般的 (Blankertz et al., 2008)

空間フィルタ後の分散の対数 log-variance は線形分類器(LDA)への入力として使用される。

CSP (Ramoser et al., 2000) は2クラスの運動想起タスクのEEGのクラス分類のための特徴量抽出のための手法としてうまくいっている
この手法は2つのコンディションで得られるクラス内分散共分散行列を同時対角化するもの

提案手法では、EEG-basedなBCIの信号分類のための入力として、空間分散共分散行列を直接利用

分散共分散行列を識別で特徴量として使用する場合、自然な選択はこの量をベクトルとして利用するためにベクトル化することであり、それによりvector-basedな分類アルゴリズムが使用可能
対称行列であることを利用して、半ベクトル化演算子を考える
Cの上三角行列を
 \frac{(E+1)E}{2}
のカラムベクトルへ変換
 vect({\mathbf C}) = \left[ C_{(1,1)}, {\sqrt 2}C_{(1,2)}, C_{(2,2)}, {\sqrt 2}C_{(1,3)}, {\sqrt 2}C_{(2,3)}, C_{(3,3)}, \dots , C_{(E,E)} \right]^T
一般性を失わないために、{\mathbf C}の非対角成分に対して係数{\sqrt 2}を掛ける。これにより\|{\mathbf C}\|_{F} = \|{\rm vect({\mathbf C})}\|_2
{\rm unvect}({\mathbf x})により反対の操作を定義
こういうアプローチは (Farquhar, 2009; Reuderink et al., 2011)でやってる
線形分類にかけるCSPライクな空間フィルタリングは、分類のための特徴量として分散共分散のベクトル化を考えることで高次元空間において単一のステップとなることを示唆
実際、分類スコア関数 h(.) は、空間フィルタリング後のEEG信号の時間分散 \sigma^2 に線形分類器 ({\mathbf u}, b) と適用することで得られる。
空間フィルタ {\mathbf W} を用いると、
 h({\mathbf \sigma^2}) = \langle {\mathbf u}, {\mathbf \sigma^2} \rangle + b = \sigma_k u_k {\mathbf w_k^T C w_k} + b = {\rm tr}({\rm diag}({\mathbf u}) {\mathbf W^T C W}) + b = \langle {\mathbf U}, {\mathbf C} \rangle_{F} + b

SVMによる分類への適用

結果とまとめ

[PRML] 1.1 多項式曲線フィッティング (2)

次数 M の決め方
次に、多項式の次数 M は、どう選べばよいのでしょうか。
この問題はモデル選択(model selection)と呼ばれています。

それでは、実際に M の値をいろいろと変えてみたものを見てみましょう。

(図 作成中)

次数 M が小さすぎる場合、ほとんどの訓練データへの当てはまりが悪いのが分かります。
反対に、次数 M が大きすぎる場合、訓練データへの当てはまりが非常に良くなっています。例えば、次数 M = 9 の例では、E({\mathbf w}^*) = 0 となっていて、誤差が無い状態です。

では M = 9 の場合が一番良いのでしょうか。

そうではなさそうですよね。
関数の形が発振したようにぐにゃぐにゃになってしまっています。
このような状態では、訓練データに対する当てはまりが良すぎて、新しいデータ、つまりテストデータに対しては、うまく目標値を予測することができません
この状態を、過学習(over-fitting)とよびます。

では、よい次数 M はどうやって選べばよいのでしょうか。

…答えは単純です。

いろいろとMを変えてみて、それぞれについて誤差 E({\mathbf w}^*) を求め、比較すればいいのです。

実際には、平均二乗平方根誤差(RMS error, root-mean-square error)という指標を使います。

E_{RMS} = \sqrt{\frac{2E({\mathbf w}^*)}{N}}

この指標は、

  • データ数 N で誤差関数を割っているため、異なるデータ数をもつデータに有効
  • 平方根をとっているため、目標値 t と単位が揃う

というメリットがあります。

次数 M の場合の、E({\mathbf w}^*) を訓練集合とテスト集合それぞれについて調べてみると、以下のような結果になりました。

(図 作成中)

次数が高い多項式は次数が低い多項式を特殊な場合として含むので、次数が高くなるにつれてよいモデルになりそうですが、結果は異なります。
これは多項式の次数が高すぎると、データに含まれるノイズに敏感になってしまうためと考えることができます。

データ集合のサイズを大きくする

今度は、次数 M を固定したうえで、データ集合 N のサイズを変えてみましょう。

(図 作成中)

どうでしょうか。

先ほど問題になっていた複雑な多項式モデル M = 9 ですが、データ数 N が増えたことで過学習が緩和されていることが分かります。

訓練データの数が大きくなると、より複雑なモデルをデータに当てはめることができます。

この議論で行くと、入手できる訓練データの数によって、モデルの複雑さ(この場合の次数 M )を選ばなくてはならなくなってしまうので、違和感があります。

限られたサイズの訓練データに対して複雑で柔軟なモデルを使うことができるようにするために、正則化(regularization)というテクニックがあります。

[PRML] 1. データに潜むパターンを見つけ出す。

パターン認識という学問

計算機アルゴリズムを通じて、データの中の規則性を自動的に見つけ出し、さらにその規則性を使ってデータを異なるカテゴリに分類する、というデータ処理を行う

素直な方法

  • 人力による識別ルールの作成
  • ヒューリスティクスを編み出す

ただし、こういった方法ではあらかじめ作らなくてはいけないルールの数を爆発的に増やさなくてはならなかったり、例外が起きたときのルールも爆発的に増えてしまいます。

パターン認識での方法

  • 訓練集合(training set) \{{\mathbf x}_1,\ldots, {\mathbf x}_N\} の入力 {\mathbf x_i} により関数のパラメータを更新し、出力(target vector) {\mathbf t_i} となるような関数 {\mathbf t} = y({\mathbf x}) を作る
  • テスト集合(test set)の入力 {\mathbf x}_j に対して出力 {\mathbf t}_j  が予測(prediction)できるようになる

処理の手順

  1. 入力データに対する前処理(preprocessing)あるいは特徴抽出(feature extraction)を行う(次元削減とか)
  2. 訓練集合の入力 {\mathbf x} と目標ベクトル {\mathbf t} を対応付ける関数 y の導出
  3. 関数 y によりテスト集合 {\mathbf x'} の目標ベクトル {\mathbf t'} を予測

パターン認識の扱う問題の種類
大きく分けて

  1. 教師あり学習(supervised learning):訓練データが、入力ベクトル {\mathbf x} と目標ベクトル {\mathbf t} の事例で構成される場合
  2. 教師なし学習(unsupervised learning):訓練データが、入力ベクトル {\mathbf x} のみで構成される(それらに対応する目標ベクトルが存在しない)場合

に分けることができます。
このほかに

  • 半教師あり学習(semi-supervised learning):訓練データの中に、目標ベクトルがない事例も含まれる場合
  • 強化学習(reinforcement learning):最適な出力は事例として与えられず、与えられた状況下で、報酬を最大化するように学習を行う場合

などもあります。

教師あり学習
教師あり学習には、大きく分けて2つの場合があり、

  1. クラス分類(classification):各入力ベクトルを離散カテゴリの一つに割り当てる場合
  2. 回帰(regression):各入力ベクトルに対し、一つあるいは複数の連続値を与える場合

教師なし学習
教師なし学習には

  • クラスタリング(clustering):類似した事例のグループを見つけること
  • 密度推定(density estimation):入力空間におけるデータの分布を求めること

などがあります。

パターン認識を学ぶのに必要な知識

  • 微分積分学
  • 線形代数学

は基本として、

  • 確率論
  • 決定理論
  • 情報理論

の知識が必須です。

(言葉だけだと分かりづらいので、図とかTeXとかで更新予定です)