パターン認識と機械学習 学習ノート - 多項式曲線によるフィッティング1


この記事は「パターン認識と機械学習 (丸善出版社)」の読書ノートです。


単純な回帰問題を解くことを考える。この例を通して機械学習における多くの重要な概念を説明する。

今、実数値の入力変数$${x}$$に対する実数値関数$${t}$$が次のように与えられるとする。

$$
t(x) = \sin (2\pi x)
$$

やりたいことは、実際に関数$${t}$$の形を知らない状態で、可能な限り$${t}$$に近い関数$${y}$$を導出することである。

何もない状態でこれは不可能なので、データとして入力値ベクトル$${\bold x = (x_1, \cdots , x_N)}$$とそれぞれの入力値に対する目標値のベクトル$${\bold t' = (t'_1, \cdots , t'_N)}$$が与えられるとする。目標値$${t'_i}$$は単純に$${t'_i = \sin(2\pi x)}$$とするのではなく、小さなランダムノイズを加える。これにより目標ベクトル$${\bold t}$$は現実である$${t}$$の規則性を保持しつつも、ランダムノイズによって不正確なものとなる。

このように目標ベクトル$${\bold t'}$$を不正確にするわけは、$${\bold t'}$$自身はあくまで観測された値であり、現実に$${\bold t'}$$は観測されていない$${\bold x}$$以外の要因パラメータと相互作用していることが往々にしてあるからである。その相互作用をランダムノイズという形で押しこむのだ。

さて、有限個、つまり$${N}$$個のデータから$${t}$$を予測したいわけだが、これは非常に難しい問題だ。ここでは曲線フィッティングに基づく単純なアプローチを考えることにする。さらに曲線の中でも多項式曲線フィッティングによって予測しよう。

多項式関数$${y(x, \bold w)}$$を次のように与えることにする。

$$
y(x, \bold w) = w_0 + w_1 x + w_2 x^2 + \cdots + w_M x^M = \sum_{i=0}^M w_i x^i
$$

ここで$${\bold w \equiv (w_0, \cdots, w_M)}$$と定義することにしよう。つまり多項式係数のベクトルである。$${y}$$を予測結果、つまりモデルとして扱う。このため私達のやりたいことは、新しい入力$${\hat{x}}$$が与えられたときに$${y(\hat{x}, \bold w)}$$が$${t(\hat{x})}$$に可能な限り近づくような$${\bold w}$$を見つけることになる。これは誤差の最小化によって達成できる。

誤差関数$${E(\bold w)}$$に採用する関数候補はいくつかあるが、ここでは以下の二乗和誤差を採用する。この採用の妥当性については今後の議論として残しておくことにする。

$$
E(\bold w) \equiv \frac{1}{2} \sum_{i = 0}^N \left\{ y(x_i, \bold w) - t_i \right\}^2
$$

誤差関数は次の性質を持つ。

  1. $${E(\bold w) \ge 0}$$

  2. $${E(\bold w) = 0 \Leftrightarrow \forall i, y(x_i, \bold w) = t_i}$$

二乗和誤差はこの性質を満たすため、最低限誤差関数としては使えるであろうことを理解してほしい。

さて、二乗和誤差は$${\bold w}$$の各パラメータに対して二次関数となっているため、微分は一次関数となる。つまり微分は$${\bold w}$$に関して線形となっている。このことと二乗和誤差が常に0以上、つまり下に有界であることから$${y(x, \bold w)}$$は下に凸である。以上を踏まえると二乗和誤差を最小にする$${\bold w}$$はただ1つだけ求まる。これを$${\bold w^*}$$と置くことにしよう。

私達は数学的にモデル$${y(x, \bold w^*)}$$を得たが、まだ問題として多項式の次数$${M}$$を決定する問題が残っている。この問題は言ってみればモデル比較(選択)の問題の一例である。

実際、$${M = 0, 1, 2}$$のときはモデル$${y}$$はそれぞれ定数、1次、2次関数となり、$${\sin (2\pi x)}$$を表現するには自由度が低い。これに対し$${M \ge 3}$$のときは二乗和誤差をかなり抑え込むことができる。しかし、$${M = N}$$のときはパラメータ数、つまり$${\bold w}$$の次元が$${N}$$となり、代数的に$${E(\bold w)}$$が0になるような$${\bold w}$$ ($${= \bold w^*}$$)が求まる。

誤差がないという意味でこのときのモデル$${y}$$は良いモデルのように思えるが、あくまで有限個のデータに対する近似でしかないため、実際のモデルの形は無茶苦茶に発振した形になってしまう。このような振る舞いは
過学習として知られている。

モデルが実際にフィットしているかどうかを定性的ではなく、定量的に評価するにはどうすればいいか。今回のように二乗和誤差を採用する場合、次に示す平均二乗平方根誤差$${E_{RMS}}$$を採用すると便利だ。

$$
E_{RMS} = \sqrt{2E(\bold w^*)/N}
$$

この尺度は二乗和誤差を$${N}$$で割ることで、サイズの違うデータの学習結果に対する比較を行いやすくなり、また平方根を取ることで目標ベクトルの要素$${t'_i}$$に単位を合わせることができている。つまり単純にモデルと目標値$${t'_i}$$との差が、モデルごとに大体どのくらいあるのかを評価するのに妥当であると言える。

ただこれまでの訓練で使用したデータでは、$${M}$$が大きくなるほど二乗和誤差$${E(\bold w^*)}$$は0に近くなることはわかっているので、訓練データとは違うが、同じやり方で作成したテストデータ$${\bold c \equiv \{c_i\}_{i = 1}^{L}}$$を用意する。平均二乗平方根誤差はテストデータに対して計算し、するとおよそ以下のような傾向が見られる

  • $${M \le 2}$$: $${E(\bold w^*), E_{RMS}}$$はともに大きい

  • $${3 \le M < N}$$: $${E(\bold w^*), E_{RMS}}$$はともに小さい

  • $${M \ge N}$$: $${E(\bold w^*)は0で、E_{RMS}}$$は大きい

この傾向は$${M \le 2}$$においてはフィッティングするにはパラメータが足りず、$${M \ge N}$$においては過学習によって訓練データにフィットしすぎており、訓練データ以外の予測には役に立たないだろうと解釈できる。

次の記事では過学習の問題を回避するためにはどうするか、その手法について説明する。

この記事が気に入ったらサポートをしてみませんか?