パターン認識と機械学習とは
パターン認識は、データから規則性(パターン)を見つけ出すこと。工学を起源とする学問分野。
機械学習は、ヒューリスティックなルールや法則に頼らず、与えられたデータからパターンを見つけ出すこと。計算機科学を起源とする。
機械学習のアプローチ
機械学習のアルゴリズムによって得られるのは関数 $y(x)$
関数 $y(x)$ は入力データ $x$ から見つけ出された規則やパターン。期待される規則やパターンを出力するように関数のパラメータを更新することを**訓練(training)または学習(learning)**という。
与えられるデータと、期待される規則やパターンの性質によって、機械学習の問題は以下のように大別される。
-
教師あり学習(supervised learning)
- クラス分類(classification)
- 回帰(regression)
-
教師なし学習(unsupervised learning)
- クラスタリング(clustering)
- 密度推定(density estimation)
- 視覚化(visualization)
- 強化学習(reinforcement learning)
教師とは、入力ベクトル(input vector)と対になって与えられる教師データのこと。目標ベクトル(target vector)とも呼ばれる。目標ベクトルが離散カテゴリ毎に独立な有限個のベクトルであればクラス分類、連続変数であるような場合は回帰の問題となる。
個人的に、この中では強化学習に関する理解が浅いので、強化したい(上手いこと言った~~!!)
回帰
回帰問題における機械学習
参考: 回帰分析(Wikipedia)
回帰(かいき、英: regression)とは、統計学において、$Y$ が連続値の時にデータに $Y=f(X)$ というモデル(「定量的な関係の構造」)を当てはめる事。
- 訓練データ: **入力ベクトル(input vector) $\vec{x}$と目標ベクトル(target vector) $\vec{t}$**の組
- 訓練集合: 訓練データの集合
$\vec{t}=y(\vec{x})$ は、入力ベクトル $\vec{x}$ と目標ベクトル $\vec{t}$ の関係を $y$ というモデルによって説明する関数である。ここでいう**「説明する」とは、「入力ベクトル $\vec{x}$ に対応する目標ベクトル $\vec{t}$ を予測する」**ことであり、予測 $\vec{\hat{t}}=y(\vec{x})$ と実際の $\vec{t}$ の誤差 $\vec{\hat{t}}-\vec{t}$ が小さいほど $\vec{x}$ と $\vec{t}$ の関係をよく説明できているということになる。したがって、誤差 $\vec{\hat{t}}-\vec{t}$ が小さい $y(\vec{x})$ のパラメータを推定するのが回帰問題における機械学習の目的である。
例えば、ある訓練集合 $A$ の任意の元 $\vec{a}=\{x,t\}$ に対して**「$t$ は $x$ の二次関数である」と説明するとき、「二次関数」がモデル $y$** に相当する。モデル $y$ は $y=ax^2+bx+c$ であり、$a$、$b$、$c$ がモデルパラメータである。
入力ベクトルと目標ベクトルが現実の観測信号の場合、入力ベクトル $\vec{x}$ と目標ベクトル $\vec{t}$ の関係には**不確実性(uncertainty)がある。この不確実性は「$\vec{t}$ が本質的に $\vec{x}$ に対して確率的(stochastic)**である」か「観測されない信号源の存在によって $\vec{t}$ が変動している」か、いずれかによるものである。
この不確実性の存在により、関数 $y(\vec{x})$ のパラメータを厳密に推定することはできない。どんなパラメータを選ぼうとも、予測 $\vec{\hat{t}}=y(\vec{x})$ と目標ベクトル $\vec{t}$ の間には一般に誤差が生じる。したがって全ての訓練データ対して誤差が無い、あるいは小さ過ぎる場合、そのパラメータは妥当とはいえない。このような状態を、**過学習(over-fitting)**という。
とはいえ、$\vec{x}$ と $\vec{t}$ の関係について妥当な説明を得るためには、予測誤差 $y(\vec{x})- \vec{t}$ を小さくする必要がある。基本的なアプローチは、まず何らかの誤差関数を定義し、訓練集合の各データに対する誤差を計算し、それらの累積値が小さくなるようなパラメータを推定するというものである。誤差関数には**二乗平均平方根誤差(RMS error)**がよく用いられるが、目的に応じて適切なものを選択する。
さらに与えられた訓練集合について誤差が少ないだけでなく、まだ与えられていない未知のデータについても誤差が少ないならば、$\vec{t}=y(\vec{x})$ による予測は本質的に正しいと言える。未知のデータに対する誤差を低減することを汎化(generalization)といい、その誤差の少なさを汎化性能という。汎化は、機械学習の中心的な課題である。
雑多なメモ
-
前処理は大事
- 訓練データや評価データが実際の観測である場合、観測されない信号源である観測時のコンテキストが存在する。これにより不確実性が高まり、厳密なパラメータ推定が困難になる。そして取り除ける不確実性は取り除くに越したことはない
- 写真を例に挙げると、撮影する角度、写真内の被写体の配置や大きさ、光源の位置などは全てデータに影響するコンテキストである。被写体の配置や大きさは、拡縮や平行移動によって均一化できる
-
モデルの選択も大事
- 仮定したモデルの表現能力が実際のモデルの表現能力に対して低すぎたりると、そのモデルでは入力ベクトルと目標ベクトルの関係を説明し切れない。しかし仮定したモデルの表現能力が高すぎると過学習の恐れがある。
- だからモデルの選択は重要で、モデルパラメータのチューニングに用いる訓練集合とは別に**検証用集合(validation set)**を用いて汎化性能を評価し、最適なモデルを選択するという方法がある…が訓練データが勿体無いし、もっといい方法があるよ、とのこと(1.3 節)
-
最適なモデルのパラメータを学習することを**フィッティング(fitting)**と呼ぶ。訓練データに対してモデルの形状をフィットさせていくイメージ
-
過学習を抑制する方法として**正則化(regularization)**がある
- 誤差関数にモデルパラメータの増大に対する罰金(penalty)項を付加することで、極端なモデルパラメータになることを抑制するもの。このようなテクニックを**縮小推定(shrinkage)と呼び、正則化項が 2 次の場合を特にリッジ回帰(ridge regression)**と呼ぶ
- ニューラルネットワークの文脈においては**荷重減衰(weight decay)**として知られている
確率論
確率論(probability theory)は不確実性に関する定量化と操作に関して一貫した枠組みを与え、パターン認識の基礎の中心を担っている。
確率の基本法則
-
加法定理(sum rule)
$p(X)=\sum_{Y} p(X,Y)$ -
乗法定理(product rule)
$p(X,Y)=p(Y|X)p(X)$
加えて、
-
対称性
$p(X,Y)=p(Y,X)$
これらから導かれるのが
-
ベイズの定理(Bayes' theorem)
$p(X|Y)=\frac{p(Y|X)p(X)}{p(Y)}$
左辺は事象 $Y$ が生起したという情報が与えられたときに事象 $X$ が生起する(条件付き)確率。右辺中の $p(Y)$ は、$X$ によらず一定であり正規化定数と捉えることができる。したがって、ベイズの定理の式は
$p(X|Y) \approx p(Y|X)p(X)$
と考えることができる。このとき $p(X)$ は、事象 $Y$ が生起したという情報が与えられる以前に分かる確率であるから、**事前確率(prior probability)**と呼ばれる。それに対して、$p(X|Y)$ は、事象 $Y$ が生起したという情報が与えられた後に得られる確率であるから、**事後確率(posterior probability)**と呼ばれる。
用語
-
同時確率(joint probability)
- $X$ と $Y$ の同時確率 $p(X,Y)$ は、事象 $X$ と事象 $Y$ が同時に生起する確率。順序性は無く、$X$ と $Y$ を入れ替えても同じ
-
周辺確率(marginal probability)
- $X$ の $Y$ についての周辺確率 $\sum_{Y} p(X,Y)$は、全ての $y \in Y$ について、事象 $X$ と事象 $y$ が同時に生起する確率を足し合わせた確率。この足し合わせる操作を周辺化という。$p(X)$ に等しい
-
条件付き確率(conditional probability)
- 条件付き確率 $p(X|Y)$ は、事前条件として事象 $Y$ が生起したことが明らかなときに $X$ が生起する確率
-
独立(independent)
- $p(X,Y)=p(X)p(Y)$ が成り立つとき、事象 $X$ と $Y$ は独立である。
- $p(X,Y)=p(Y|X)p(X)=p(X)p(Y)$ ということは、$p(Y|X)=p(Y)$ を意味する。これはつまり、$X$ が生起したことが明らかになろうが、$Y$ の生起する確率には影響がないということである。
確率密度の話
オッ、急に難しい感じになってきたぞ~~
というわけで記事を切ります。