2012年12月31日月曜日

ビッグデータ

 先日、とある学会の講演会「ビッグデータが拓く新しい情報通信の世界」~サイバーとリアルの間を取り持つデータ同化技術を中心として~を聴いてきました。講師は樋口知之先生で、なかなか面白いお話でした。2時間、あっという間でした。
 昨今、ビッグデータ大ブームですが、それはどこから始まったのか、漠然としか理解していませんでした。講演の中で3つのレポートが紹介され、大ブームの火付け役として大きな役割を果たしていると述べておられました。一つは、The Fourth Paradigm: Data-Intensive Scientific Discovery。データから深い知識が獲得できるか問うています。二つ目は、MGI report。ビッグデータは、イノベーション、競争、生産性においてKeyになると説いています。そして、三つ目は、アメリカがビッグデータ関連の研究に$200 millionという巨額投資をするという通達です。
 樋口先生の指摘で面白かったことは、日本の産業は「いつまでも”プロジェクトX”の感傷に浸っていては世界から取り残される」というものです。「玄人しかできない代物を造るのではなく、データを使って素人でもできる仕組みを作れ」と説いていました。確かに、日本では後者の視点が欠落しているように思います。

2012年11月23日金曜日

ヒストグラム

 ビジネスとしてサービスを提供する場合、顧客個人の行動を知る必要はあまりありません。もちろん、顧客が10人しか居なくて、それぞれの顧客への販売額が1千万円とかならば、顧客個人の行動が重要になるでしょう。しかし、単価が何千円とか、何百円とかの商品やサービスを販売するならば、顧客の数は多くなり、一人ひとりの行動を把握することは事実上できません。そこで、集団としての行動パターンを統計的に把握することになります。
 例えば、あるコンビニで挽きたてコーヒーの販売額(一週間)は顧客毎に調べると、下表のようになったとします。すべての顧客の購買記録はポイントカードの導入によって残されていると仮定します。顧客は全部で1000人ですね(あくまで仮の人数です)。顧客は、一週間にいくらコーヒーを買っているでしょうか。まず、横軸に顧客番号をとって、縦軸に売上額をプロットしてみます。顧客毎に売上額をプロットしてみても、400円以上の売上げがある顧客は少ないということはわかりますが、売上額が300円以下の顧客の状況がどうなっているかはよくわかりません。それに、どのくらいの顧客がコーヒーにいくら使っているのかもわかりません。
 そこで、売上額に対する顧客の数を集計します。これは、ヒストグラムと呼ばれます。これで、週当たりコーヒーをいくら購入しているかの様子が知れます。これを見ると、700人を超す顧客が100円、もしくは200円ということがわかります。このコンビニではコーヒーを100円で販売していますから、一人1杯か2杯ということです。3杯以上飲む人は少ないのですが、500円購入している顧客が多いのはどうしてでしょうか。実は、このコンビニではコーヒー1杯に対して1つスタンプが付いて、5つスタンプが貯まると、コーヒー1杯がタダになるというサービスを実施しています。400円購入した人はあともう1杯、300円購入した人はもう2杯飲んで、タダのコーヒーにありつこうと考えたとしても不思議ではありません。

顧客と売上額

顧客に対する売上額

売上額に対する顧客数

2012年11月13日火曜日

データのバラツキ

 何かデータを集めたとして、その数値が色々な値を取っていれば、バラツキが存在していることになります。一見無意味なバラツキの中にも、有用な情報が潜んでいるかも知れません。このバラツキの様子を調べるのが、データ分析です。
 今、男性女性をそれぞれ100人集めてきて、コインを投げてもらいました。男性女性には背の高い人もいれば、低い人もいて、背の高さはばらばらでしょう。また、コインは「表」と「裏」にばらつくでしょう。この場合、男女間の背の高さには差が現れると予想されますが、コインの「表」が出る割合は男女間で大きな差が生じるとは考えにくいです。男女間の差に対して、背の高さは有益な情報を与えますが、「表」の割合にあまり意味は無いでしょう。
 男女の身長の分布がわかっていたとすれば、165cmの人が男か女か、どちらの確率が高いかは予想がつきます。一方、コインの「表」か「裏」かの確率は、それぞれ$\frac{1}{2}$になるでしょう。これを知ったとして、その情報量(の期待値)は$I = -\Sigma_{i=1} ^n p_i \log {p_i} = -\frac{1}{2} \log {\frac{1}{2}} -\frac{1}{2} \log {\frac{1}{2}} = 1$となります。これは不確定な状況を確定するのに必要な平均情報量と考えることができ、この不確定度を表す量がエントロピーです。もし、表だけ、あるいは裏だけしか出ないコインがあったとして、この場合のエントロピーは$0$になります。表(あるいは裏)が出ることが決まっていますから、不確定度は$0$です。表か裏か、どちらが出るかわからない場合に、不確定度が最大になります。
 上記の話は常識的に考えるとそうなるというだけで、数値で表されたわけではありません。しかし、どんな値がどんな割合で生じているかわかれば、その様子が把握できたと言って良いでしょう。バラツキの様子は、分布と呼ばれます。分布を調べるには、図にしてみれば一目瞭然です。
男女の身長の分布
男女の裏表の分布

2012年11月8日木曜日

正規分布

 100人の人が集まったとき、背の高さが全員全く同じということはあり得ません。確率的な言い方をすれば、その確率は相当低いと言えます。普通は、背の高い人もいれば、低い人もいて、背の高さはばらばらでしょう。実際に測って、分布図にしてみると、以下のようになりました。 図:背の高さの分布

 横軸に身長を、縦軸に度数をとりました。バラツキはありますが、170cm付近に集中している分布になっていることが見て取れます。近似曲線を引けば、赤線のようになるでしょう。実は、この赤線は正規分布になっています。自然現象や社会現象など、複雑な現象は、この正規分布で近似できると言われています。  正規分布は、平均と分散が決まれば、分布が決まります。平均を$\mu$、分散を$\sigma^2$とすれば、正規分布を表す関する$f(x)$は、次式のようになります。
\begin{equation} f(x) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp \left \{ -\frac{(x-\mu)^2}{2\sigma^2} \right \} \end{equation}
$\pi$は円周率で、$\exp$は指数関数を表します。平均0、分散1の正規分布は、標準正規分布と呼ばれます。
 横軸は身長を何cm間隔かで区切って、その範囲の身長の人の数が縦軸になっています。人数が多くなっている身長の範囲では、その身長の人が存在しやすいことを示しています。つまり、身長の範囲に対する人数は、その起こりやすさと考えることができます。実は、この身長の範囲に対する人数で表される面積は、確率になります。身長の範囲を限りなく小さくしていったとき、この確率は確率密度になります。このとき、正規分布の赤線は確率密度関数と呼ばれます。
 確率変数$X$が連続的な値をとり、$\alpha \leqq X \leqq \beta$の範囲にあれば、その確率は次式で表されます。
\begin{equation} P(\alpha \leqq X \leqq \beta) = \int ^{\beta} _{\alpha} f(x) dx \end{equation} $f(x)$は、$X$の確率密度関数です。

2012年11月5日月曜日

平均と分散

 データの代表値は、例えば、平均値でしょう。今、人が100人居て、身長を測ったとします。この集団の特徴を表す代表的な値として、身長の平均値は有用でしょう。100人の身長を$x_1$、$x_2$、...、$x_{100}$とおけば、平均値$\bar{x}$は次式であらわされます。
\begin{equation} \bar{x} = \frac{x_1 +x_2 +...+x_{100}}{100} \end{equation}
 でも、身長の平均値が175cmだったとして、100人全員の身長が偶然175cmだったのと、身長が100cmの人が半数、250cmの人が半数だったのとでは、意味合いが異なります。つまり、平均値だけでは情報として不十分であり、どのようにばらついているかが重要な情報になります。ばらつき具合を示す量として、分散があります。分散は、各データが平均値からどの程度ずれているかの平均を示します。分散$\sigma^2$は、次式で表されます。
\begin{equation} \sigma^2 = \frac{(x_1 -\bar{x})^2 +(x_2 -\bar{x})^2 +...+(x_{100} -\bar{x})^2}{100} \end{equation}
 人数を一般化して、$n$個の数値データが得られたとすれば、その平均と分散は、次式であらわされます。
\begin{equation} \bar{x} = \frac{x_1 +x_2 +...+x_{n}}{n} \end{equation}
\begin{equation} \sigma^2 = \frac{(x_1 -\bar{x})^2 +(x_2 -\bar{x})^2 +...+(x_{n} -\bar{x})^2}{n} \end{equation}

2012年11月1日木曜日

識別部

 識別部は、パターンがどのクラスに属するかをその特徴に基づいて判別します。このとき、パターンの特徴が識別辞書と照合されます。もし、識別辞書に、パターンの特徴の組み合わせが全て格納されていて、その組み合わせに対してクラスのラベルが割り当てられていれば、パターンは識別辞書の中のどれかに一致するはずです。そのパターンに付けられたクラスのラベルから、パターンを識別することができるでしょう。
 でも、このやり方、本当に実現できるのでしょうか。パターンの特徴の組み合わせは膨大な数になりますから、個々のパターンにクラスのラベルを割り当てる作業には膨大な時間がかかります。記憶容量だって必要です。「前処理部:パターン化の方法は重要」のところで、数字「2」のパターン化に$10 \times 10$のメッシュを使いました。特徴の組み合わせは$2^{100}$通りありますから、全てのパターンを識別辞書に格納することは現実的ではありません。
 そこで、代表的なお手本となるパターンだけ格納しておきます。つまり、そのクラスに属するパターンの典型例となる特徴の組み合わせを記憶しておくわけです。このようなパターンを、プロトタイプといいます。クラスは$m$種類あって、それぞれ$\omega_1$、$\omega_2$、$...$、$\omega_m$と表します。プロトタイプは各クラスに一つずつ用意されたとして、図1のように${\mathbb p_1}$、${\mathbb p_2}$、$...$、${\mathbb p_m}$とします。特徴空間上で近接しているパターン同士はその特徴が似ているという意味ですから、同じクラスに属すると考えてよいでしょう。
図1:特徴空間上のクラスとプロトタイプ

 さて、識別したいパターンの特徴ベクトルが${\mathbb x}$だったとして、この${\mathbb x}$がどのクラスに識別されるか判定するのが識別部の役割です。${\mathbb x}$と${\mathbb p_i}$との距離の近いクラス$\omega_i$に識別する方法(最近傍法)などがありますが、これは後に詳しく説明します。
 もう一つ、重要な問題があります。それは、プロトタイプをどう決めたらよいかということです。プロトタイプは、代表的なお手本となるパターンと書きました。手書き文字ならば、習字の先生が書いた模範がお手本になるかも知れません。しかし、文字認識ではどの人が書いた「あ」でも、「あ」と認識されるのが重要であり、美しさは必要ありません。そのため、通常は多くの人が書いた文字の平均(あるいは重心)をお手本とします。

2012年10月28日日曜日

データの無相関化

 特徴抽出処理で、もう一つやっておくべき重要なことがあります。それは、データの無相関化です。詳細は後の主成分分析のところで説明しますが、ここで簡単に述べておきます。特徴を増やしていくと、中には、似たような性質のものが混じってしまうことがあります。例えば、図1のように、2次元特徴空間上にデータが分布していたとします。主な傾向として、特徴軸$x_1$(横軸)の値が大きくなると、特徴軸$x_2$(縦軸)の値も大きくなっています。これを、相関があるといいます。 図1:相関がある特徴空間

 特徴間に相関があれば、識別のときには片方の特徴があればよく、もう片方の特徴は無駄でしょう。そこで、相関のある特徴を取り除く処理を施します。図2のように、データの分布が広がっている方向に$u_1$軸を設け、この$u_1$軸上にデータを射影します。$u_1$軸を中心に考えても、データのばらつき具合はあまり変化しません。特徴空間がこの$u_1$軸だけで済めば、特徴空間の次元が2次元から1次元に減ったことになります。では、この$u_1$軸はどのように決めればよいでしょうか。実は、データの分散が最大になる方向に、この$u_1$軸を取ることになるのですが、詳細は後の主成分分析のところで述べると致しましょう。 図2:1次元空間への射影

2012年10月27日土曜日

データの正規化

 特徴抽出処理によって、入力パターンに対する特徴が取得されます。つまり、特徴ベクトルが得られます。特徴ベクトルの各成分は通常、実数値を取り、異なる単位で計測されたものです。つまり、その単位は長さmであったり、重さkgであったり、時間秒であったり、さまざまです。実は、この単位、つまり、スケールを変えただけで、特徴空間のパターンの分布が一変してしまいます。
 今、2次元特徴ベクトルが${\mathbb x_a}$、${\mathbb x_b}$、${\mathbb x_c}$、${\mathbb x_d}$だったとして、図1(a)の特徴空間上では${\mathbb x_a}$と${\mathbb x_c}$が一つのかたまりで、${\mathbb x_b}$と${\mathbb x_d}$がもう一つのかたまりに見えます。ところが、横軸の単位を変更すると、図1(b)のようになったとします。と、${\mathbb x_a}$と${\mathbb x_b}$が一つのかたまりに、${\mathbb x_c}$と${\mathbb x_d}$がもう一つのかたまりに見えます。
(a) 横軸の単位は細かい
(b) 横軸の単位は粗い
図1:正規化

 こんなの単なる相対的なものだと考えられるかも知れませんが、パターンの類似性は特徴空間上の距離で表されますから、単位をどう取るか、言い換えれば、特徴間のスケーリングをどうするかは重要な問題なのです。そこで、各特徴軸を正規化します。正規化は、各パターン間の距離が最小になるように行われるのですが、詳細は後で説明します。

2012年10月24日水曜日

次元の呪い -- 特徴は多いほど良いか

 特徴抽出部では、パターンの識別に有用な情報を取得する処理を行うのでした。認識対象が顔の場合、人物を特定したいのか、表情を特定したいのかによって異なるのですが、顔の特徴は千差万別です。一見、顔を認識するために、多くの特徴を使った方が良いのではないかと考えたくなります。
 人の顔を認識するために、目鼻口の位置を使うとしましょう。でも、眉毛の位置も使った方がいいかも知れませんし、シミやソバカス、肌の色も使った方がいいかも知れません。より多くの特徴を使えば、顔を正確に認識できそうな気がします。しかし、果たしてそうでしょうか。
 確かに特徴を増やせば、その人の顔の傾向を学習するために使ったデータの中ではその人の顔を認識しやすくなるでしょう。しかし、特徴が増えると、識別器の学習するパラメータが増えますから、学習データが増えなければ、パラメータの推定誤差が大きくなってしまいます。誤差が大きくなれば、その顔が持つ傾向が偶然発見される可能性が高くなります。そのように偶然発見された傾向は、未知のデータに対してうまく働くとは限りません。つまり、特徴を増やせば、認識に有用な特徴が増えるかも知れませんが、認識に役に立たない特徴も増える可能性があるということです。次元数と識別率の関係を、図1に示しました。識別率が最大になる次元数が導出できれば一番良いのですが、これはそう簡単ではありません。
図1:次元数と識別率の関係

 先ほど、「学習データが増えなければ」という条件が付いていました。どういうことなのか、簡単な比喩を用いて説明しましょう。今、コイントスを100回行って、表裏を数えたら、図2のような分布になりました。確率は1/2ですから、表裏は理想的には50回ずつになります。このズレは、誤差ということになります。誤差の割合は試行回数を増やすと減り、確率は1/2に近づいていきます。
図2:コイントスの表裏分布

 次に、サイコロを100回振って、出る目の数を数えたら、図3のようになりました。確率は1/6ですから、各目は理想的には16回あるいは17回ずつになります。このズレは、誤差です。問題は、先ほどのコイントスに比べると、サイコロの目を振った方が、誤差の比率が増えていることです。サイコロの目は6個ですが、仮に100個あったとしましょう。と、一度も目が出ないということもあり得ます。また、サイコロの目の数は6個のままでも、サイコロを6回しか振らなかったら、同じことです。 図3:サイコロの目

 識別器の学習に必要なデータが、次元数の増加と共に急激に増加することを、次元の呪いと呼ぶことがあります。一般に、データを取得するのは大変な作業ですから、そう簡単にデータを増やすわけにはいきません。したがって、識別性能を向上させるにためには、次元を小さくする必要があります。次元を小さくする操作を、次元圧縮と呼んでいます。次元圧縮の具体的な方法として、学習と評価を繰り返して最適な特徴を求める方法や主成分分析を用いる方法などがありますが、詳細は後に説明致します。

2012年10月22日月曜日

特徴抽出部:特徴ベクトル

 特徴抽出部では、識別に有用な特徴を抽出します。特徴量の計算や特徴の選択によって、パターンがどのクラスに属するかを判定するための情報を取得する処理を行います。この特徴抽出部の出力は、特徴ベクトルになります。
 一つの特徴だけで、完璧に分類できることは稀でしょう。で、幾つかの特徴を組み合わせます。例えば、人の顔を認識するのであれば、目や鼻や唇の位置、形、色など、複数の特徴を使います。特徴は、以下のように特徴ベクトルで表現されます。
${\mathbb x} = (x_1, x_2, ..., x_d)^T$
ここで、$T$は転置を表します。成分$x$が、各特徴を表しています。つまり、特徴ベクトルは特徴を並べてベクトルで表したものです。$d$は特徴の個数であり、特徴ベクトルの次元を表します。この$d$次元空間は、特徴空間と呼ばれます。特徴ベクトルは、特徴空間上の1点で表されます(図1)。 図1:特徴空間

 音声を識別する場合を例にとって説明しましょう。日本語の母音は、第1フォルマントと第2フォルマントが図2のようになり、2次元面上でグループに分けることができます(重なりがあるので、完全に分類できない)。フォルマントというのは、音声信号を周波数変換したときに現れる山の周波数で、共振周波数を表します。周波数の低い方から、第1フォルマント、その次が第2フォルマント、その次が第3フォルマントと呼ばれます。フォルマントは共振周波数を表しており、音声を識別するのに有用な情報になります。この図2の場合、特徴を2つ用いていることになります。つまり、特徴の次元は2ということになります。 図2:日本語母音の音響的特徴

2012年10月18日木曜日

前処理部:パターン化の方法は重要

 先日、前処理部について説明しました。そのとき、「データからノイズを除去したり、正規化したりして、特徴を抽出しやすくなるように処理する」と述べました。要はデータを取るだけなのですが、実はデータをどのようにパターン化するかは、重要な問題です。例えば、文字認識の場合、パターン化の方法は幾つも存在します。数字の「2」を認識する場合を例に考えてみましょう
 最も単純な方法は、文字の領域をメッシュに区切り、各メッシュの2値で表すことでしょう(図(a))。数字を表現するにはかなり細かいメッシュにする必要がありますので、パターンのデータが増大してしまいます。では、文字を囲む枠から文字線までの距離で表した場合(図(b))は、どうなるでしょうか。文字までの距離では決められた数の決められた方向に対して距離データがあれば良いですから、データ量を大幅に削減できます。 さらに、文字線の長さと方向で表した場合(図(c))は、どうでしょうか。文字線の方向表現では文字線の長さと方向と始点位置が必要であり、文字線でどの程度細かく表現するかによりますが、各メッシュの2値よりもパターンのデータは少なそうです。それに、枠内の位置や文字のサイズに関係なくなりますので、入力データの変化に頑健になります。


(a) メッシュの2値  (b) 文字までの距離  (C) 文字線の長さと方向
図:数字「2」のパターン化

 同じクラスに属するパターンでは、そのパターンの元になっているデータが類似している必要があります。上記述べましたように、パターン化の仕方がパターン認識の性能を大きく左右することがあります。つまり、パターン化の方法が、後のパターン認識の過程や認識率に大きな影響を与えることになります。したがって、前処理部も侮ることはできません。

2012年10月15日月曜日

パターン認識の大まかな流れ

 パターン認識の大まかな流れを述べます。「パターン認識とは」で、パターン認識は大きく「前処理部」「特徴認識部」「識別部」で構成されると書きました。もう少し、具体的にご説明しましょう。例えば、自販機で缶コーヒーを購入する場合を考えます。硬貨を入れると、その真偽や種類を判定し、缶コーヒーとおつりを返却します。
 硬貨の真偽や種類を判定するには、硬貨の大きさ、重さ、材質などを測定するでしょう。実際に、どのように判定しているかは別にして、とにかく、硬貨を観測しなければ、何事も始まりません。「パターン認識とは」で、データが「前処理部」に入力されていますが、観測ではこのデータを取得します。これは、「硬貨という認識対象を数値化する」と言い換えることができます。したがって、ここでのデータは、適切に標本化と量子化が行われたデジタル・データを意味します。実は、実際上の問題として、この観測は重要なプロセスです。適切な測定ができるかどうかは、その後の判定の善し悪しに影響します。
 「前処理部」では、データからノイズを除去したり、正規化したりして、特徴を抽出しやすくなるように処理します。認識対象のデータは、常に理想的なものが得られるとは限りません。硬貨であれば、傷がついているかも知れませんし、錆びているかも知れませんし、刻印がすり減っているかも知れません。これらがデータに与える影響が予めわかっていれば、これを取り除きます。この処理が、雑音除去です。また、硬貨を測定して、直径23.5mm、重さ4.5g、電気伝導率50.0×106 [S/m]が得られたとすれば、これら特徴は数値的に大きく異なりますから、そのまま比較するわけにはいきません。数値的な尺度を合わせるために、正規化を行います。正規化の規準として、各尺度の分散が等しくなるようにします。
 「特徴抽出部」では、データに基づいて判定を行うために本質的な特徴を抽出します。硬貨判定の例では、特徴として大きさや重量、電気伝導率などが取得できます。しかし、どの特徴を利用すれば良いかは、認識対象のクラスを何に設定するかによります。例えば、その硬貨が10円なのか、100円なのかを判定したいのか、それとも、500円玉の真偽を判定したいのかで、どの特徴を使うのか異なるでしょう。各特徴は数値で表され、その数値を表す座標軸が特徴軸です。その特徴軸で構成される空間は、特徴空間と呼ばれます。特徴を並べて表したものを、特徴ベクトルと呼びます。
 「識別部」では、特徴空間上の特徴ベクトルがどのクラスに属するか判定します。特徴ベクトルを用いてクラスに分類するための規則を、識別規則といいます。この識別規則に基づいて、認識対象が正しいクラスに分類されるように、どの特徴がどんな数値ならば、どのクラスに属するかといった対応関係を決めていく過程が、学習です。これを、統計的推定ということがあります。

2012年10月9日火曜日

記号の説明

 機械学習やパターン認識を難しくしている要因の一つに、記号の表記があると思います。機械学習やパターン認識の考え方自体は比較的単純なのですが、考えるパラメータが多いため、似たような変数がいくつも出てきて、しかもベクトル表記になっていたりすると、混乱してしまいます。そこで、ここでは、この「機械学習への細道」の中で扱う記号を簡単に定義しておきます。

$m$..................................クラスの数
$\omega_i$.................................$i$番目のクラス
$n_i$..................................クラス$\omega_i$のパターン数
$n$...................................パターンの総数(パターン空間の次元数)
$d$...................................特徴空間の次元数
${\mathbb x} = (x_1, x_2, ..., x_d)^{\rm T}$..........特徴ベクトル($\rm T$は転置を表す)
${\mathbb w} = (w_1, w_2, ..., w_d)^{\rm T}$.......重みベクトル($\rm T$は転置を表す)
${\mathbb t} = (t_1, t_2, ..., t_m)^{\rm T}$.............教師ベクトル($\rm T$は転置を表す)
${\mathbb \mu}_i$...................................クラス$\omega_i$の平均ベクトル
${\mathbb \Sigma}_i$...................................クラス$\omega_i$の共分散行列
$P(\omega_i)$..............................クラス$\omega_i$の事前確率
$P(\omega_i | {\mathbb x})$............................クラス$\omega_i$の事後確率
$p({\mathbb x} | \omega_i)$............................クラス$\omega_i$の条件付き確率密度
$p({\mathbb x})$................................${\mathbb x}$の確率密度

2012年10月3日水曜日

参考となる本

 幾つか、機械学習やパターン認識を勉強する上で参考になる書籍をご紹介します。隅から隅まで読んでいるわけではありません。古い書籍の中には優れたものも多いのですが、入手のしやすさを考慮して、最近出版されたものを中心に挙げています。数学的に高いレベルを要求するものもありますので、自分のレベルに合ったものを選んでいくのが良いと思います。

・わかりやすいパターン認識
 石井健一郎, 上田修功, 前田英作, 村瀬洋
 オーム社, 1998
・フリーソフトでつくる音声認識システム
 荒木雅弘
 森北出版, 2007
・はじめてのパターン認識
 平井有三
 森北出版, 2012
・はじめての機械学習
 小高知宏
 オーム社, 2011
・初歩から学ぶ統計的学習-画像処理で体験してみよう-
 熊沢逸夫
 オーム社, 2012
・統計的パターン認識入門
 浜本義彦
 森北出版, 2009
・統計的機械学習-生成モデルに基づくパターン認識-
 杉山将
 オーム社, 2009
・パターン認識と機械学習(上)ベイズ理論による統計的予測
 C.M.ビショップ
 シュプリンガー・ジャパン, 2007
・パターン認識と機械学習(下)ベイズ理論による統計的予測
 C.M.ビショップ
 シュプリンガー・ジャパン, 2008

2012年10月1日月曜日

パターン認識理論を俯瞰する

 パターン認識理論には色んな理論や手法が提案されており、とても複雑に見えます。ただ、一つ一つ整理すれば、一見複雑に見えることでも、納得して先に進めます。ここで、パターン認識理論全体を俯瞰して、これから辿る道しるべにしましょう。表1に、パターン認識理論の概要を示します。

表1:パターン認識理論

教師あり学習
   識別方法
      確率による方法
      距離による方法
      関数による方法
      部分空間法
   誤識別率推定方法
   特徴抽出方法
      特徴選択
      特徴抽出
教師なし学習
   クラスタ分析
      階層的クラスタリング
      非階層的クラスタリング

 パターン認識ではパターンをクラスに分類する必要があり、そのクラスの決め方には色々な手法があります。きちんとクラス分けできるようにするには、クラスを正しく決定する必要があります。一般にその決定境界が重要になりますので、その決定境界を正しく設定することが学習に当たります。
 学習には、教師あり学習と教師なし学習があります。教師あり学習は、与えられた知識に基づいて学習を進める方法です。パターンが属するべきクラスが与えられ、どのクラスに属しているか判定していきます。教師あり学習は、予測や診断などに応用されます。どのクラスに属するかわかっているパターンを使って、将来観測するパターンがどのクラスに属するか予測します。多変量解析では、判別分析と呼ばれます。これに対し、教師なし学習はクラスの分布がわかっておらず、クラスの分布の構造を明らかにすることに主眼が置かれます。どのクラスに属するか不明なパターンがあり、パターン間の類似性や統計的性質に基づいてグループに分割します。このグループは、クラスタといいます。教師なし学習は、構造や性質の推測などに応用されます。同じような性質を持つと考えられるパターンを集めてクラスタを作り、そのクラスタ同士がどのような関係にあるか推測します。本来的に正解が存在しませんので、推測の正当性が問題になることがあります。導出された構造や性質の意味は、慎重に解釈されなければなりません。多変量解析では、クラスタ分析と呼ばれます。
 パターン認識は、パターンをクラスに分類します。このとき、クラスを代表するパターンを用意して、その代表と個々のパターンを比較することによりそのクラスに属するかどうかを識別します。この識別を行う部分が、識別部です。クラスを代表するパターンは、プロトタイプと呼ばれることがあります。
 ここで、重要なことが2つあります。一つは、クラスのパターン分布が未知だということです。そこで、例えば、クラスの分布を正規分布と仮定して、平均と分散を推定するやり方がパラメトリック識別器です。正規分布といった仮定をおかず、プロトタイプとの距離や確率分布の組合せを使うやり方がノンパラメトリック識別器です。平均と分散を推定するとき、パターン分布からサンプルを取り出します。このサンプルは、識別器の設計(学習)に用いられるサンプルという意味で、訓練サンプルと呼ばれます。もう一つは、平均や分散の推定が正しいかどうか、つまり、識別器の評価が必要だということです。既知の訓練サンプルに対して識別器がうまく働いてもしょうがなく、未知のパターンに対して識別器がうまく働いて欲しいわけです。ところが、パターンはそうそう手に入るものではありません。そこで、訓練サンプルに用いられなかったサンプルを評価に使うことがあります。これは、評価サンプルと呼ばれます。誤識別率推定方法は、訓練サンプルと評価サンプルの決め方と誤識別率の推定法に関する理論です。

2012年9月26日水曜日

パターン認識とは

 パターン認識とは、観測されたデータを、幾つかのクラス(概念)の一つに対応づける処理のことです。人間を例に考えてみると、例えば、人の顔を見たとき、「あ、Aさんだ。」と、誰であるかを認識します。これは、人の顔というデータを、Aさんというクラスに対応づけたことになります。パターン認識は、これと同じ処理をコンピュータにやらせようというわけです。
 コンピュータに仕事をさせるには、もう少し細かくデータを与えないといけません。人の顔というデータの中には、顔の形、髪型、目の色や形、肌の色など、色んな特徴が含まれます。これらの特徴を使って、Aさんというクラスを導き出していきます。このパターン認識処理をコンピュータで行うために、パターン認識システムが構成されます。パターン認識システムはシステムですから、入力と出力があります。入力はデータで、出力はデータを分類したクラスです。
 パターン認識システムは、図1のように、前処理部、特徴抽出部、認識部から構成されます。


図1:パターン認識システムの構成
 
前処理部は、データをコンピュータで処理しやすいように、あるいは、次の特徴抽出がやりやすいように、データを加工します。例えば、コンピュータで処理しやすいようにするには、アナログ信号をデジタル信号に変換したり、雑音を取り除いたりします。特徴抽出がやりやすいようにするには、手書き文字認識ならば、手書き文字を領域に分割して、線の存在や傾きなどを特徴に設定します。どの特徴を設定すべきかは、認識対象によります。つまり、認識対象ごとに、パターン認識に適した特徴を設定することが重要となります。この特徴は数値で表され、特徴の組はパターンと呼ばれます。このように認識対象を数値で表現できるようにすることを、パターン化といいます。前処理部からの出力は、パターン空間になります。
 特徴抽出部は、次の識別部で、パターンの識別がやりやすい特徴を取り出す役割を担います。取り出される特徴は、パターンの変動に影響されにくいものでなくてはいけません。例えば、手書き文字認識ならば、Aさんが書いた「あ」でも、Bさんが書いた「あ」でも、文字「あ」として認識される必要があります。この場合、誰が書いたかという情報に関連した特徴は必要ありません。つまり、パターンに含まれる特徴の組から、パターン認識にとって真に重要な特徴を抽出するわけです。
 認識部は、入力パターンを、複数のクラスのうちの1つに対応させる処理を行います。このとき考慮する特徴は、パターンに含まれるすべての特徴ではなく、特徴収集部で取り出された特徴だけになります。識別部からは、認識結果として入力パターンが属するクラスが出力されます。

2012年9月20日木曜日

はじめに

 このブログでは、機械学習やパターン認識について統計的扱いを中心に書いていきます。
 機械学習は人工知能研究の一種で、コンピュータに学習機能を構築します。機械学習における学習機能は、コンピュータの内的状態が変化することによって、新たな局面に対応する能力を備えることを意味します。つまり、知的活動ができるようになります。ただ、人間が可能とする知的活動と比較すると、そのレベルは限定的であり、その範囲には特徴があります。
 例えば、インターネット上には情報が溢れていますが、この大量の情報の中から規則性や法則を見つけ出し、有用な知識として抽出することはコンピュータの得意分野です。これは、データマイニングと呼ばれます。知識抽出の過程では、データから特徴を抽出する処理が含まれます。特徴が得られれば、その特徴からいくつかの概念に分類することができます。これが、パターン認識です。
 パターン認識には一般に統計的処理が含まれ、その理解には数学的に幅広い知識が要求されます。一つ一つ積み上げないと、なかなか自分のものにすることが難しい面があります。そこで、統計的にデータのバラツキを分析する方法から、パターン認識の基本的考え方やその応用まで、必要となる数理的扱いを説明しながら進めていきます。