【機械学習】マルチビュー学習(Multi-view learning)入門

こんにちはたくまろです。今回は、自分の研究分野に関係するマルチビュー学習(Multi-view learning)について紹介したいと思います。日本ではあまり浸透していない分野だと思います。しかし、マルチビュー学習は精度をさらに向上させるすごい方法論です。

マルチビューとはなんですか?

どうしてマルチビュー学習が最近流行っているか?」

そんな疑問に答えたいと思います!統計学や機械学習が初心者の人でも分かるようになるべく数式を使わず書いているのでよかったらご覧下さい。今回の記事はこちらの論文を参考にしています。

Keyword: マルチビュー、共訓練、マルチカーネル、部分空間法、正準相関分析

マルチビューデータとは

名前の通り複数の見方や視点をもっているデータです。まずは簡単な例を紹介します。

当たり前ですが、犬を横から見た時(view1), 正面から見た時(view2), 斜め後ろから見た時(view3)で同じ犬を見たとしても違った見方ができますよね。3Dの物体を様々な視点から撮影した画像データもマルチビューデータのひとつです。

他にもWebページのデータは、テキスト、ドキュメント(写真や動画)、URLなどの情報が含まれているのでそれぞれのデータをビューとみなせば、マルチビューデータと考えられます。さらに動画データも画像と音声に分けて考えることもできます。

マルチビュー学習とは

複数の視点の情報を相互に使って学習するのがマルチビューである最大のポイントです。

それでは、先の犬の画像を使って犬と猫の判別を例題にしてみたいと思います。いままでのシングルビューデータの学習の場合は、犬と猫の顔が写っている正面からの画像(先の例題だとview2に対応したもも)をたくさん集めて判別器を作っていました。

マルチビューデータの場合は正面だけの情報だけでなく他の角度から撮った写真(view1, view3)も使えばもっと判別性能が上がるのではないか?という考えのものview1,2,3全てを使って学習します。

マルチビューとシングルビューの違い

view1,2,3全てを使って学習をするときに全てのデータを統合すればシングルビューデータと変わらないです。どうゆうことかというと次の図を使って説明します。

画像データというものは小さなピクセルの集合と見れます。よくテレビなどで50万画素という言葉を聞きますよね。この50万というのがピクセル数です。例えばピクセル数がp個だった場合、ピクセルを縦に並べてベクトルにすればp次元のベクトルになりますね。ビューが3つの場合、それらを統合すれば3p次元のベクトルができますね。

こうすれば、ピクセル数が3p個の画像になるのでマルチビューをシングビューと見ることができますね。そうすれば今までの判別法(SVMやニューラルネットなど)で扱うことができますね。

ただ、そんな安直な事はしません。何故かというと理由は3つあります。

1. 単純に計算量が大きくなる

例えば、ピクセル数が50万個で視点の数が3の場合、考えるベクトルの長さは150万です。視点の数に比例して、計算量が大きくなります。

2. サンプルが十分にないと過学習(オーバーフィッティング)を起こしやすい

データの変数が多くなればなるほど、自由度が高くなるので学習データが少ないとそのデータのみにしかフィットしない判別器ができてしまいます。これを過学習やオーバーフィッティングと呼びます。犬の学習データは多いのに、猫の学習データは少ないと猫の画像を正しく猫と判別するのが難しくなる事が起こります。

3. 結果に意味が合いがなくなってしまう

単純にデータをくっつけてしまうと、本来のデータの構造を壊してしまうかもしれません。分散が大きなビューがあった場合に、分散が小さなビューが大きい部分おおわれてしまって無視されてしまうことがあります。なので、単純に統合するのはあまり良くないです。

マルチビュー学習の種類

データを統合してシングルビューと見てしまうと良くないということが分かったかと思います。では、具体的にどのような方法があるのでしょうか?ここではわかりやすくするために、犬と猫の2値分類を考えたいと思います。視点の数は2とします。

共訓練(Co-training)

一般的なラベルありシングルビューデータの場合、

ラベルありデータで判別器を作る→ラベルなしデータを分類→分類されたデータを使って判別器を強化

という流れで学習をします。これを自己訓練(Self-training)といいます。しかしながら、自己訓練でラベルなしデータ分類する場合に間違ってラベリングしてそのまま判別器を更新する可能性があります。

マルチビューデータを使った共訓練(Co-training)の場合、それぞれのビューでまず判別器A, Bをつくりラベルなしデータを各ビューで分類するところまでは同じです。そのうち信頼性が高いラベルなしのデータをいくつかピックアップします。ビュー1のラベルなしデータで判別器Aで判別の信頼性が高いデータにラベリングしてそれを判別器Bの更新に使います。逆もしかりです。

共訓練の良い点は片方の性能が良い分類器であれば、もう片方の分類器の性能を上げることが出来ます。相互に学習させることで性能を大きく上昇させることが出来ます。

マルチカーネル(Multi kernel)

これは、各視点でのピクセル数が同じで与えられる画像データのマルチビュー学習でよく使われる方法です。カーネル関数はデータ同士の特徴(線形、非線形問わず)を見つける関数です。マルチカーネルはそのカーネル関数は複数組み合わせたものです。

2つの視点からN枚の画像を犬と猫でそれぞれ撮ったとします。すると2N枚の画像データが得られたと考えることができます。view1同士、view2同士、view1とview2のデータの特徴はそれぞれ異なるので、複数個カーネルを用意することによって異なるビューの特徴をピックアップすることが出来るようになります。

マルチカーネル自体はさまざまな使い方がありますが、サポートベクターマシン(SVM)と合わせて使うことが多いです。だったら最初からすべての問題をマルチカーネルにして考えればよいのでは?と思いますが、実は最適化の面でマルチカーネルはやや不便です。

部分空間法

猫と犬の潜在空間をそれぞれ求めて、その空間に射影させて判別を行う手法です。潜在空間とは、データの特徴を表す低次元空間を指しています。データすべてを見比べるのではなく潜在空間の情報だけを見比べて猫と犬の判別を行うのが部分空間法の考え方です。

シングルビューの場合、潜在空間は主成分分析(PCA)という手法で求めることができます。マルチビューの場合、正準相関分析(CCA)を使っています。正準相関分析は各ビュー同士の相関が強まるような潜在空間を求める手法です。

イメージを図式します。まず猫と犬の潜在空間(ここでは1次元空間)を求めてデータをそれぞれの潜在空間に射影させます。その射影させたときの大きさを比べて、犬と判別しています。

ナイーブな正準相関分析はサンプル数が次元に比べて大きくないと正則性が満たされないので使うことが出来ません。なのでオリジナルを拡張したカーネル正準相関分析ディープ正準相関分析などを実用上では使うことが多いです。

マルチビュー学習の良さをまとめると

  1. マルチな視点で見ることによって情報をより補完することが出来る。
  2. 単純に統合させたシングルビューデータよりも過学習や計算量を抑えることが出来る。
  3. 各ビューの相互関係を使って学習を行うことが出来る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です