2012年10月24日水曜日

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

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

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

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

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

0 件のコメント:

コメントを投稿