しまてく

学んだ技術を書きためるブログ

ITエンジニアのための機械学習理論入門 3-1

途中の計算式がわからないので補完しながら予習メモ。(といいつつ結構書いてるけど大丈夫なんだろうか...)

3.1 確率モデルの利用

  1. 最尤推定
  2. 「あるデータが得られる確率」を設定して、そこから最良のパラメータを決定する。
  3. パラメトリックモデルの3つのステップ
    1. パラメータを含むモデル(数式)を設定する。
    2. パラメーターを評価する基準を定める。
    3. 最良の評価を与えるパラメータを決定する。

3.1.1 「データ発生確率」の設定

  • 一般に回帰分析では、データの背後にある関数関係を推測する。
  • しかし最小二乗法で見たように「すべての点を正確に通る関数」は未来予測には役立たない。
    • オーバーフィッティングのため。
  • どの程度の誤差を持つのか?を含めて分析する必要がある。
  • 最小二乗法は、誤差による散らばりの中心部分を表す。
  • ここにデータが持つ誤差(散らばり具合)を含めて推測するのが確率モデル。
    • ビジネスでは「どの程度の範囲で予想が外れそうか」が大事。
  • このデータの背後にはM次多項式の関数があり、さらに標準偏差σの誤差が含まれている。と仮定する。
    • M次多項式は最小二乗法のところと同じ。
    • 誤差についての仮定が新しい。

まず、最小二乗法と同じように、特徴変数$x$と目的変数$t$の間にはM次多項式の関係があるとする。

$$ \begin{eqnarray} f(x) &=& ω_0 + ω_1x + ω_2x^2 + \cdot\cdot\cdot + ω_Mx^M \nonumber \\ &=& \sum_{m=0}^{M}ω_mx^m \tag{3.1} \end{eqnarray} $$

その上で、「観測点$x_n$における観測値$t$は、$f(x_n)$を中心として、およそ$f(x_n)\pmσ$の範囲に散らばる」と考える。

分布

$μ$を中心として、およそ$μ\pmσ$の範囲に散らばる乱数は、平均$μ$、分散$σ^2$の正規分布で表現できる。

正規分布は釣鐘型の確率で散らばる乱数なので、この値は次の関数で与えられる。

$$ N(x\ |\ μ,σ^2) = \dfrac{1}{\sqrt{2πσ^2}}e^{-\dfrac{1}{2σ^2}(x-μ)^2} \tag{3.2} $$

ここで、乱数で散らばる値$t$と、散らばりの中心$f(x_n)$を代入して考えると、

$$ N(t\ |\ f(x_n), σ^2) = \dfrac{1}{\sqrt{2πσ^2}}e^{-\dfrac{1}{2σ^2}{t-f(x_n)}^2} \tag{3.3} $$

となる。

ここで言っている観測値$t$は「次に観測される値」の事を言っていて、 トレーニングセットとして与えられている$t_n$(すでに観測された特定の値)とは違うことに注意。

$t_0$を具体的な値として、$t = t_0$が得られるような確率は次の式で求められる。

$$ N(t_0\ |\ f(x_n), σ^2) = \dfrac{1}{\sqrt{2πσ^2}}e^{-\dfrac{1}{2σ^2}{t_0-f(x_n)}^2} \tag{3.4} $$

ここまででパラメトリックメソッドの(1)ステップが終わり。


このモデルに含まれるパラメータ

  1. (3.1)に含まれる係数 $ {ω_m}_{m=0}^M $
  2. (3.3)に含まれる標準偏差$σ$ の2つ。

次のステップでは、これらのパラメーター値を評価する基準を設定して、最良のパラメーター値を決定する。

「データに含まれる誤差」は何故正規分布か?

  • 実は、「正規分布」でも「t分布」でも「ロジスティック分布」でも「一様分布」でもなんでもいい。
  • でも計算が楽ですぐに評価できるという観点から、「正規分布」を採用する。
  • 仮説・検証を高速に繰り返せることはとてもアドバンテージ。
  • うまく行かなかったら、「なぜその仮説ではうまくいかないのか」を解明することで先に進める。

尤度関数によるパラメータの評価

(3.1)と(3.3)を使って、「トレーニングセットに含まえるデータ ${(x_n,t_n)}_{n=1}^N$ が得られる確率」を計算してみる。

ある特定の観測点$x_n$について考えると、そこで$t_n$が得られる確率は以下の式で表される。

$$ N(t_n\ |\ f(x_n), σ^2) = \dfrac{1}{\sqrt{2πσ^2}}e^{-\dfrac{1}{2σ^2}{t_n-f(x_n)}^2} \tag{3.7} $$

すべての観測点 $ {x_n}_{n=1}^N $ について合わせて考えると、全体としてトレーニングセット ${(x_n,t_n)}_{n=1}^N$ が得られる確率Pは、それぞれの確率の積になる。

$$ \begin{eqnarray} P &=& N(t_1\ |\ f(x_1), σ^2) x N(t_1\ |\ f(x_1), σ^2) x \cdot\cdot\cdot x N(t_N\ |\ f(x_N), σ^2) \nonumber \\ &=& Π_{n=1}^NN(t_n\ |\ f(x_n), σ^2) \tag{3.8} \end{eqnarray} $$

この確率はパラメーター ($ {ω_m}_{m=0}^M $ と $σ$) によって値がかわるので、これらのパラメーターの関数と考えられる。

ここまででパラメトリックメソッドの(2)ステップが終わり。


このように、「トレーニングセットのデータが得られる確率」をパラメーターの関数とみなしたものを 尤度関数と呼ぶ。

そして

「観測されたデータ(トレーニングセット)は、最も発生確率が高いデータに違いない」

という仮説を立てる。

これは適当な仮説で、この仮説が正しいという保証はないが、自分は「トレーニングセットでレアなデータを得られるほど運はよくないはずだ」と考えているようなもの。

とにかくこの仮説が正しいとして、(3.8)の確率Pが最大になるようにパラメータを決定する手法を「最尤推定法」と呼ぶ。

計算

(3.8)のPを最大化するパラメーターを求めるために、まず(3.7)を(3.8)に代入する。

$$ \begin{eqnarray} P &=& Π_{n=1}^N{\dfrac{1}{\sqrt{2πσ^2}}}e^{-\dfrac{1}{2σ^2}{t_n-f(x_n)}^2} \nonumber \\ &=& \left({\dfrac{1}{2πσ^2}}\right)^{\dfrac{N}{2}}Π_{n=1}^Ne^{-\dfrac{1}{2σ^2}{t_n-f(x_n)}^2} \nonumber \\ &=& \left({\dfrac{1}{2πσ^2}}\right)^{\dfrac{N}{2}}e^{-\dfrac{1}{2σ^2}\sum_{n=1}^{N}{t_n-f(x_n)}^2} \nonumber \\ &=& \left({\dfrac{1}{2πσ^2}}\right)^{\dfrac{N}{2}}exp \left[ {-\dfrac{1}{2σ^2}\sum_{n=1}^{N}{t_n-f(x_n)}^2} \right] \tag{3.9} \end{eqnarray} $$

ここで、(3.9)の指数関数の中を見ると最小二乗法で仕様した二乗誤差$E_D$と同じものがふくまれていることがわかる。

二乗誤差の定義は改めて以下の通り。

$$ E_D = \dfrac{1}{2}\sum_{n=1}^{N}{t_n-f(x_n)}^2 \tag{3.10} $$

これを用いると、尤度関数は次のように表現できる。

$$ \begin{eqnarray} P &=& \left( \dfrac{1}{2πσ^2} \right)^\dfrac{N}{2} exp \left( -\dfrac{1}{σ^2}E_D \right) \nonumber \\ &=& \left( \dfrac{1}{2πσ^2}\right)^\dfrac{N}{2} e^{-\dfrac{1}{σ^2}E_D} \tag{3.11} \end{eqnarray} $$

ここでパラメーターに対する依存性を確認する。 (3.11)にはパラメーターσが、$\dfrac{1}{σ^2}$という形でしか存在しない。 そこで、後の計算を楽にするために、

$$ β = \dfrac{1}{σ^2} \tag{3.12} $$

とおいて、σの代わりにβをパラメーターとみなして計算を進める。 また、二乗誤差$E_D$は、多項式の係数$w=(w_0,\cdot\cdot\cdot,w_M)^T$に依存している。 従って、パラメーター $(β,w)$ に対する依存性を明示すると、以下のようになる。

$$ P(β,w) = \left( \dfrac{β}{2π}\right)^\dfrac{N}{2} e^{-βE_D(w)} \tag{3.13} $$

これを最大化する $(β,w)$ を求めれば良い。ここでさらに計算を簡単にするために、 Pの対数lnP (自然対数$log_ex = lnx$) を最大化することにする。

$$ \begin{eqnarray} lnP(β,w) &=& ln \left( \left( \dfrac{β}{2π}\right)^\dfrac{N}{2} e^{-βE_D(w)} \right) \nonumber \\ &=& ln \left( \dfrac{β}{2π}\right)^\dfrac{N}{2} + lne^{-βE_D(w)} \nonumber \\ &=& \dfrac{N}{2}ln \dfrac{β}{2π} -βE_D(w) \nonumber \\ &=& \dfrac{N}{2}(lnβ - ln2π) -βE_D(w) \nonumber \\ &=& \dfrac{N}{2}lnβ - \dfrac{N}{2}ln2π -βE_D(w) \tag{3.14} \end{eqnarray} $$

対数は単調増加関数なので、lnPが最大になることと、Pが最大になることは同値。 一般に $lnP$ を対数尤度関数と呼ぶ。

対数尤度関数を最大にする $(β,w)$ は、次の条件で決まる。

$$ \begin{eqnarray} & \dfrac{∂(lnP)}{∂ω_m}& = 0   (m = 0, \cdot\cdot\cdot, M) \tag{3.15} \\ \nonumber \\ & \dfrac{∂(lnP)}{∂β}& = 0 \tag{3.16} \end{eqnarray} $$

まず(3.14)を(3.15)に代入すると、次が得られる。

$$ \begin{eqnarray} \dfrac{∂\left(\dfrac{N}{2}lnβ - \dfrac{N}{2}ln2π -βE_D(w)\right)}{∂ω_m} &=& 0 \nonumber \\ \dfrac{∂}{∂ω_m}\left(\dfrac{N}{2}lnβ \right) - \dfrac{∂}{∂ω_m}\left(\dfrac{N}{2}ln2π \right) - \dfrac{∂}{∂ω_m}\left( βE_D(w) \right) &=& 0 \nonumber \\ \dfrac{∂}{∂ω_m}\left( βE_D(w) \right) &=& 0 \nonumber \\ β\dfrac{∂E_D}{∂ω_m}(w) &=& 0 \nonumber \\ \dfrac{∂E_D}{∂ω_m} &=& 0   (m=0,\cdot\cdot\cdot,M) \tag{3.17} \ \end{eqnarray} $$

これは二乗誤差を最小にする条件と全く同じなので、2.1.3と同じ計算を行って同じ結論が得られる。 つまり多項式の係数 $ {ω_m}_{m=0}^M $ は最小二乗法と同じ値に決まる。

一方、(3.14)を(3.16)に代入すると、

$$ \begin{eqnarray} \dfrac{∂\left(\dfrac{N}{2}lnβ - \dfrac{N}{2}ln2π -βE_D(w)\right)}{∂β} &=& 0 \nonumber \\ \dfrac{N}{2β} -E_D &=& 0 \nonumber \\ \dfrac{1}{β} &=& \dfrac{2E_D}{N} \tag{3.18} \ \end{eqnarray} $$

これに(3.12)を代入すると、標準偏差$σ$を決定する式が得られる。

$$ \begin{eqnarray} (β = \dfrac{1}{σ^2})    \dfrac{1}{\dfrac{1}{σ^2}} &=& \dfrac{2E_D}{N} \nonumber \\ σ^2 &=& \dfrac{2E_D}{N} \nonumber \\ σ &=& \sqrt{\dfrac{2E_D}{N}} = E_{R M S} \tag{3.19} \ \end{eqnarray} $$

この $ E_{R M S} $ は(2.20)で定義した平方根二乗誤差となる。

つまり、(3.19)は、トレーニングセットに含まれるデータの 「多項式で推定される値$f(x_n)$に対する平均的な誤差」を標準偏差$σ$の推定値として採用することを意味する。

対数関数の微分

$$ \dfrac{d}{dx}lnx = \dfrac{1}{x} $$


今週はとりあえずここまで。