HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

機械学習の基礎への入門:統計的学習理論の初歩

 

 

follow us in feedly

はじめに

統計的学習理論では予測損失と経験損失の2つの損失を比較する術を与えることで、学習機ないし学習アルゴリズムの汎化性能について議論します。具体的には、入力変数を $x$ とし出力変数を $y$ とする関数 $f : x \rightarrow y$ に関して、手元にある訓練データ集合 $D = \{ (x _ 1, y _ 1), \cdots , (x _ N, y _ N)\}$ を用いて $f$ を具体的に構築し、それが今後、未知のデータ $(x', y')$ に対してどのような予測性能を有するかを議論します。

統計的学習理論では、何らかの目的関数を最適化するという形で学習が定式化されますが、実行する最適化自体が本質的に解きたい問題では無い(機械学習 ≠ 最適化)ということも理解できるかと思います。

学習

まず、関数 $f$ の取りうる範囲としては、この世に存在する全ての関数 $f$ から探すというわけにはいきません。通常は関数を $D$ 次元のパラメータ $\theta$ によってパラメタライズし、仮説集合 $\mathcal F = \{f _ \theta| \theta \in R ^ D\}$ を決めてしまって、その中から $\theta$ を具体的に決めることで関数 $f _ \theta$ を選び出します。この行為を学習と呼びます。また、関数の集合 $\mathcal F$ を仮説集合、 $f$ の具体的な形式それぞれを仮説と呼ぶ場合もあります。

例: 線形モデル

パラメータ $\theta = \{\theta _ 0, \theta _ 1 \}$ を用いて $f _ \theta (x) = \theta _ 0 + \theta _ 1 x$ を仮定することで、仮説集合を決める。具体的に $\theta$ の値を決めること仮説を選び出すことを学習と呼ぶ。

学習は訓練データ集合 $D$ を受け取ってパラメータを $\hat \theta$ であると決定します。例えば、単回帰モデルに対する学習の1つとして下記のようなものが挙げられます。

例: 最小二乗解

$$ \begin {align} \hat \theta _ 1 &= \frac {{\rm Cov}(x, y)}{{\rm Var}(x)} \\ \hat \theta _ 0 &= {\rm mean}(y) - \hat \theta _ 1 {\rm mean}(x) \end {align} $$

このような学習方法はどのように導出されるのかを説明します。とある仮説 $f _ \theta : x \rightarrow y$ は今後予測したい未知のデータ集合 $D' = \{(x _ 1, y _ 1), \cdots, \}$ に関して上手く予測ができてほしいという問題設定でした。その予測のできなさ具合を

$$ \mathbb E _ {P _ {D'}} [l(f _ {\theta} (x), y)] $$

によって測ります。$P _ {D'}$ は未知のデータ集合の従う確率分布であり、仮説は適当に定められる損失関数 $l$ の未知データに関する期待値が最小化されていることを目標とします。これは予測損失 $R(f _ \theta)$ と呼ばれ、いわゆる本当に知りたい汎化性能そのものになります。実際には、未知のデータ集合は得られておらず、未知のデータ集合の分布も未知です。そこで、未知のデータ集合と似た(あるいは同じ)確率分布から得られたデータ集合 $D$ を訓練データ集合と呼び、下記の経験損失 $\hat R(f _ \theta)$ を学習に用います。

$$ \mathbb E _ {P _ {D}} [l(f _ {\theta} (x), y)] \simeq \frac{1}{N} \sum _ {(x _ i, y _ i) \in D} l(f _ \theta (x _ i), y _ i) = \hat R(f _ \theta) $$

予測損失との違いは、期待値を取る分布が未知のデータに関するもの $P _ {D'}$ であるか、既知のデータに関するもの $P _ {D}$ であるかです。一般にはこれらの分布は違う場合も想定されますが、全く異なるものである場合には、そもそも学習をするというのは筋違いであり、ある程度は似通っている、あるいは同じであるということを想定します。

仮に同じであっても、既知のデータは有限個であるため正確に期待値を計算しているのではなく、有限個の値の平均値で代用されます。したがって、分布が違う可能性があるので予測損失 $R(f _ \theta)$と経験損失$\hat R (f _ \theta)$はどちらにせよ一致はしません。しかし、既知のデータの分布と未知のデータの分布が全く同じであれば、単に有限個しか値を取れていないだけという状況であり、経験損失の期待値は予測損失に一致します(経験損失$\hat R$が予測損失$R$の不偏推定量になる)。また、データ $(x _ i, y _ i)$ が各々独立であるならば( i.i.d.であれば)一致性を有します。

なにか損失関数 $l$ を定めれば、経験損失を記述できるため、学習アルゴリズムは経験損失を最小化するという形で導出されます。

例 : 最小二乗法

損失関数を下記で設定します。

$$ l(f _ \theta (x), y) = (y - f _ \theta (x)) ^ 2 $$

すると、経験損失は

$$ \hat R(f _ \theta) = \frac{1}{N} \sum _ {(x _ i, y _ i) \in D} (y _ i - f _ \theta (x _ i)) ^ 2 $$

となります。これを何らかの最適化法で最小化すると、先程の学習の例の解が得られます。

上記までは仮説集合を$\mathcal F = \{f _ \theta| \theta \in R ^ D\}$ として、$\theta$ を決めることで仮説を選ぶという話をしてきましたが、実際には $\theta$ を用いる必然性はなくノンパラメトリックな関数でも構いません。最小二乗法の解などを例示するためにパラメトリックな関数を想定してましたが、下記では仮説は適当な仮説集合の要素であるとして $f$ と表記し、$\theta$ は仮定しないことにします。

学習の大枠としてはデータ $(x, y)$ の入出力関係を表現する仮説集合 $\mathcal F$ を準備し、その中にある仮説 $f$ の良し悪しを訓練データ $D$ に基づいて数値化する損失関数 $l(f(x), y)$ を準備し、経験損失を最小化することで仮説を選び出すという流れになります。

汎化性能を最も良くする仮説

最終的に最適化問題として学習が実行されることを確認しましたが、最適化を実行する際の目的関数は"経験損失"であって、本来最小化したいと考えている"予測損失"とは異なるのでした。異なる理由は、手元のデータと今後予測したいデータの分布が完全に一致しているとは限らないこと(従って期待値を取る分布が異なること)と、訓練データ集合の分布ですら有限のデータであるので期待値を厳密に知ることはできなく、その推定量である経験損失を使っているということが挙げられるのでした。

経験損失を利用する妥当性は、訓練データとテストデータの分布が同じであるとすれば、経験損失が予測損失の不偏推定量になること、そしてi.i.d.であれば一致性も有することに支えられています。実際の応用においてはこれらがどの程度よく当てはまっているのかを正確に知るすべはありません。

そういうわけで、多くの場面では経験損失と予測損失は別物であり、実際に解くこととなる最適化問題に対して完璧な解を得れば良いというわけではないということには十分留意をする必要があります。

そこで、予測損失$R(f)$と経験損失$\hat R(f)$にどの程度の剥離があるのかを把握する術が必要となります。まず、仮に予測損失を最小化するような仮説 $f _ 0 = {\rm inf} _ f R(f) $ があるとしたら、それはどのようなものであるかを記述しておきましょう。テストデータの分布 $P _ {D'}$ と損失関数 $l$ に関して、予測損失は下記のように展開できます。

$$ \begin {align} R (f ) &= \mathbb E _ {P _ {D'}} [l(f (x), y)] \\ & = \int l(f(x), y) dP(D') \\ & = \int _ x \left( \int _ y l(f(x), y)dP(y \mid x) \right) dP(x) \end{align} $$

この展開は同時分布 $P(x, y)$ に関する期待値を $P(y \mid x)$ の期待値を取ったあとに $P(x)$ で期待値を取るという作業できできる、すなわち $\mathbb E _ {P _ {D'}} [l(f (x), y)] = \mathbb E _ {P _ x} \mathbb E _ {P _ {y\mid x}} [l(f(x), y) \mid x]$ とできることを言っています。

通常は入力 $x$ が与えられたなりに $y$ を上手く出力する $f$ を構成する必要があるので $P(y\mid x)$ による期待値を取る部分を最小化する $f$ がほしい、すなわち

$$ f _ 0 = {\rm inf} _ f R(f) = {\rm inf} _ f \int _ y l(f(x), y)dP(y \mid x) $$

が予測誤差を最小にする仮説となります。この仮説のことをベイズ規則と呼びます。またその時の予測損失の値をベイズ誤差と呼びます。無論、ある仮説集合からこのようなベイズ規則 $f _ 0$ を上手に選び出す学習が実行できるかは別の議論となります。また、そもそも仮説集合がベイズ規則に相当する関数を含んでいるのかもわかりません。

例:仮説集合がベイズ規則を含まない場合

テストデータが $y = \exp(x) + \epsilon$ で $\epsilon \sim N(0, \sigma)$ と生成されるとします。このとき予測損失を最も小さくする規則、ベイズ規則は $f _ 0 : x \rightarrow \exp(x)$ です。しかし、分析者は予測したいデータの真の生成規則を知らないので、訓練データを眺めて仮説集合を決めるしかありません。ひとまず下に凸な関数だと踏んで仮説集合を

$$ \mathcal F = \{\theta _ 0 + \theta _ 1 x + \theta _ 2 x ^ 2 \mid \theta _ 0 \in R, \theta _ 1 \in R, \theta _ 2 \in R ^ + \} $$

と設定したとしましょう。仮説はパラメータをどのようにとってもベイズ規則 $f _ 0$ にはなりえません。 得られる仮説は、上記の仮説集合の中で最も経験損失を小さくするような仮説であり、データが有限であることのみならず、そもそも仮説集合が不適切である可能性もあります。一般的には、ベイズ規則 $f _ 0$ を仮説集合が含むことができていないことを想定して、汎化性能を評価する必要があるということになります。

学習で得られる仮説とベイズ規則、その誤差の比較

通常、経験損失を最小化することを突き詰めると、仮説は訓練データのノイズを表現しようとしてしまいます。その結果、過適合と呼ばれる状態に至ります。今、それを簡単に確認しましょう。

まず、予測損失 $R(f)$ と経験損失 $\hat R(f)$ に関して、何らかの仮説 $f$ を代入して評価することができるとしましょう。まずベイズ規則 $f _ 0$ に関しては定義から明らかに任意の $f$ に対して $R (f _ 0) \leq R(f)$ です。当然のことながら、経験損失を最小にしる学習アルゴリズムによって選び出された仮説 $\hat f = \inf _ f \hat R(f) $ は、ベイズ規則よりも予測損失が大きいです。

ここで、仮説集合に含まれる $f \in \mathcal F$ の中から、神の目で予測損失を最も最小にする仮説 $f _ {\mathcal F}$ を選び出したとします。この仮説に関してもベイズ規則よりは予測損失 $R$ が大きいですが、学習アルゴリズムから得られる仮説 $\hat f$ よりは予測損失を小さくできているはずです(学習アルゴリズムはあくまで経験損失 $\hat R$ を最小化している)。従って

$$ R(f _ 0) \leq R(f _ {\mathcal F}) \leq R(\hat f) $$

という関係性にあるはずです。ここまでは予測損失を評価できるとしたらこういう関係になっているという話でした。しかし実際に我々が評価できるのは経験損失 $\hat R$ だけです。経験損失に関する関係性は明らかに

$$ \hat R(\hat f) \leq \hat R(f _ {\mathcal F}) $$

となっています。なぜなら、仮説集合 $\mathcal F$ の中で $\hat f$ は $\hat R$ を最小化する仮説であるからです。$f _ {\mathcal F}$ は神の目で予測損失を最小化するように選んだものですから、経験損失に関しては学習アルゴリズムに負けているということです。ベイズ規則 $f _ 0$ に関しては、経験損失に関して $\hat f$ と比較は一概にはできません。なぜなら、ベイズ規則は仮説集合 $\mathcal F$ の外にいるケースも想定されているためです。

以上の不等式2つを再び眺めてみます。

$$ R(f _ 0) \leq R(f _ {\mathcal F}) \leq R(\hat f) $$ $$ \hat R(\hat f) \leq \hat R(f _ {\mathcal F}) $$

学習アルゴリズムに関しては下の不等式に関して $\hat f$ を出力するのですが、実際に評価したい予測損失に関する上の不等式を見ると、神の目で選んだ $f _ {\mathcal F}$ を通して、損失の大きさに関する逆転現象が浮き彫りになっています。

結局の所、$f _ {\mathcal F}$ と $\hat f$ の逆転現象は、経験損失に関する最小化(実際に実行する最適化)と予測損失に関する最小化(本当に実施したい最適化)にはギャップが有ることを示しています。願わくば $\hat f$ を $f _ {\mathcal F}$ に近づけたいのです。更に、神の目で選んだ $f _ {\mathcal F}$ すらベイズ規則に及ばないのは、仮説集合の中に $f _ 0$ が含まれていない可能性があり、選択肢にそもそも挙がらないためです。つまり、ここに関しては、仮説集合の取り方で生ずるギャップであると言えます。仮説集合がベイズ規則を含む場合

そう考えると、仮説集合 $\mathcal F$ は可能な限り大きく取り、ベイズ規則 $f _ 0$ がどんな複雑な関数であっても対応できるようにしておきたいと考えてしまうかもしれません。例えば、カーネル法やニューラルネットのように自由度が非常に高いモデルは、仮説集合を非常に大きく取り、ベイズ規則を含むようにするという大きな指針があると考えて良いでしょう。ただし、その方針の場合は経験損失と予測損失が異なることに起因して、$f _ {\mathcal F}$ と $\hat f$ の剥離を大きくする可能性があります。そして過学習はそのような場合に生じます。

また、経験損失関数が複雑な形状になり、学習アルゴリズムで $\hat f = \inf \hat R(f)$ をそもそも求められないということにも繋がります(とは言いつつ、経験損失を最小化することが最終的な目的ではないので、アルゴリズムが出したなりの解が、結局のところ予測損失を小さくできているかが重要である)。

バイアスとバリアンス

さて、予測損失の不等式をもう一度眺めてみます。

$$ R(f _ 0) \leq R(f _ {\mathcal F}) \leq R(\hat f) $$

ここでベイズ規則 $f _ 0$ と神の目で選んだ仮説 $f _ {\mathcal F}$ の差 $R(f _ {\mathcal F}) - R(f _ 0)$を 仮説集合 $\mathcal F$ のバイアスと呼びます。このバイアスは定義から明らかな通り、仮説集合の中で最も予測損失が小さい仮説を選んだ理想的な状況でさえ、予測損失を最小にする関数を選べていないということを表しています。仮説集合 $\mathcal F$ が(未知の!)ベイズ規則を含むように大きめの自由度を持って準備された場合には、バイアスは $0$ になるということです。

ただし、それは、仮説集合から予測損失を最小にするということが実施できる場合であり、実際には経験損失を最小にすることで仮説集合から仮説 $\hat f$を選び出します。神の目で選んだ仮説は常に、理想的な学習を見積もるためのたたき台にすぎません。実際に見積もるべきは、ベイズ規則を選んだときの予測損失 $R (f _ 0)$ と学習によって得られる仮説 $\hat f$ を使うときの予測損失$R (\hat f)$の差です。すなわち

$$ R (\hat f) - R (f _ 0) $$

という量が重要になります。これは、神の目で選んだ $f _ {\mathcal F}$ を介して

$$ R (\hat f) - R (f _ 0) = R (\hat f) - R (f _ {\mathcal F}) + R (f _ {\mathcal F}) - R (f _ 0) $$

と評価できます。 $R (f _ {\mathcal F}) - R (f _ 0)$ の項が既に見たバイアスであり、第1項と第2項がバリアンスと呼ばれる訓練データ次第で学習結果がバラつく指標になります(正確には、本来のデータが持つノイズの項も含まれている)。一般的にバイアスを少なくしようとしたら、バリアンスは大きくなり、バリアンスを小さくしようとするとバイアスが大きくなるというトレードオフにあります。

より詳細な議論は、下記の統計的学習理論(SVMとBoostingを例に深い議論がなされています)を参考にしてください。

本記事程度の理解をしっかり頭に入れた上であれば、パターン認識と機械学習を読んでいくことができるでしょう。バイアス・バリアンス分解に関する導出ももっと詳細に記述されています。また、その他の個別の手法を記述する機械学習の書籍に当たることもできるでしょう。

パターン認識と機械学習 上

パターン認識と機械学習 上

ベイズ理論に基づいて、予測損失と経験損失の差異を理論的に見積もる試みは、特に渡辺ベイズ理論に詳しいです。ただし数学的に難解です。証明・導出を自力でできる必要は無いと思われますが、汎化性能を見積もるいくつかの量とそれらの関係、漸近的性質については把握しておくと良いでしょう。