HELLO CYBERNETICS

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

機械学習の予測モデルを線形モデル+確率モデルで考える概要

 

 

follow us in feedly

https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png

はじめに

まずモデルを簡単な数式で見ていく話は、以下の2つの記事から続いてきました。

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

 

もしかすると、この記事から見たほうがむしろ見通しが良いのかもしれません。 今回の記事は確率モデルや線形モデルをゴチャゴチャ組み合わせていろいろなモデルを考えられるという話をします。 というより、ほとんど全てのモデルが個々に該当するのではないかと思われます。

 

組み合わせて作られたモデルは最尤推定やベイズ推定、ときには確率を意識しない適当な損失関数の最小化によってパラメータが決定されていきます。 さて大枠を捉える前に基本的な復習です。

復習

$$ y = f(w, x) = w\cdot \phi(x) $$

というような形式のものです。$\phi$はモデルが$x$に対して非線形になったり、あるいは$x$の特徴を際立たせるための何らかの変換です。 そうして得られた新たなベクトルに対して$w$との内積を取ることで何らかの値を得るというのが線形モデルの基本的な形式です。

一般化線形モデル、あるいは確率モデル

一般化線形モデルというのは、線形モデルから見ればかなり発展したモデルです。 まず線形モデルでよく用いられる最小二乗法というのは、背後にガウス分布を仮定したモデルでした。

$$ y = w\cdot \phi(x) + \epsilon $$

$\epsilon$が平均$\mu$で分散$\sigma^2$のガウス分布から生じてくる場合には$y$の方は平均$w\cdot \phi(x)$で分散$\sigma^2$の ガウス分布から出ているように振る舞います。

$$ y \sim \frac{1} {\sqrt{2 \pi \sigma^2}} \exp \left\{ - \frac{(y-w\cdot \phi(x))^2} {2\sigma^2} \right\} $$

本当はガウス分布だと思わなくても良いじゃないかというのが一般化線形モデルの考えです。

 

また左辺側を加工してしまうことを考えるようになります。

$$ \log y = f(w, x) = w\cdot \phi(x) $$

要するに、これから予測されるべき$y$の対数が$w$に対して線形であると考えるわけです。 そうすると$y$自身は負の値を取らなくなりますので、$y$がいつでも正(体重とか慎重とか、株価とか?)を予測する際には使えるかもしれません(もちろん使えないかもしれません)。 あるいはオッズ比の対数を線形モデルで表すことを考えれば

$$ \log \frac{y}{1-y} = f(w, x) = w\cdot \phi(x) $$

と表わせ、ベルヌーイ分布と組み合わせるとロジスティック回帰となることを見ました。 しかし、前回の記事で見たようなロジスティック回帰の考え方はいささかテクニカルに見えます。

 

確率モデル+線形モデル

ここでは小難しい話は一切そぎ落としてしまい、結局のところどのようなことをやっているのか、ということに焦点を当てます。

 

まず予想したい$y$という値が、どのような確率分布で表せそうか検討を付けてください。 そんな検討つかないよ!とか、勝手に決めて良いのか?と思うかもしれませんが、決めないと進まないですし、 確率分布を使わないような手法の殆どが結局は何らかの確率分布を仮定した結果と一致します。

 

ガウス分布

ここでは仮に、ガウス分布を仮定しましょう。これじゃあ最小二乗法の話になってしまうというところですが、今回は確率分布を出発点にしています。 実はこちらのほうが全体像の見通しが良いように思います。どうも線形モデルをあれこれいじって一般化線形モデルにしていくんだ!という話は、私には小難しく思いました。

 

まず$y$が平均$\mu$で分散$\sigma^2$のガウス分布に従っていそうだと思うならば、まずはその分布を書き下しましょう。

$$ y \sim \frac{1} {\sqrt{2 \pi \sigma^2}} \exp \left\{ - \frac{(y-\mu)^2} {2\sigma^2} \right\} $$

さて、ここから何をすれば良いのかというと、私達は概ね$y$がどれくらいの値になっていそうか、その平均値$\mu$に辺りを付けたいと考えます。 そして、その平均値を知るための手がかりとして$x$というデータを持っているとしましょう。

 

それならば、$\mu$をなんとかして$x$で表してやりたいと思うはずです。つまり今考えているガウス分布の平均は$x$の関数であり$\mu(x)$と表されるんじゃないかと。 もしも$\mu(x)$が$\mu(x)=w\cdot \phi(x)$などと表せそうならばこれを代入しましょう。

$$ y \sim \frac{1} {\sqrt{2 \pi \sigma^2}} \exp \left\{ - \frac{(y-w\cdot \phi(x))^2} {2\sigma^2} \right\} $$

さて、これは冒頭で見た最小二乗法のモデルと全く同じです。しかし、随分やったことは単純です。 私達は

 

1.$y$が何らかの確率分布に従っている

2.仮定した確率分布のパラメータを手持ちのデータ$x$で表せると考える

3.手持ちのデータを引数とするパラメータ$\theta(x)$を考え代入する

 

を実行しただけです。これならば他の分布をスタートにして考えることもそう難しくありません。 もちろん考えることは簡単でも、手元のデータが本当にこういう仕組みで生成されているのかは誰にも分かりません。 分析とは何かを仮定した上で何が言えるか、という話であり、証拠を提示することは出来ません。 ときにはモデルを見直すことも必要でしょう。

 

以下ではまた異なるモデルを見てみます。

ポアソン分布

$y$がポアソン分布に従っていると考えましょう。ポアソン分布は正の整数値しか取らない分布です。 もしかしたら今年取れるレタスの数$y$を回帰する場合にはこの分布を使うと良いかもしれませんね(これをガウス分布でフィッティングするよりは妥当そう?)。

 

$$ y \sim \frac{\lambda^y e^{-\lambda} } {y!} $$

パラメータは$\lambda$です。$\lambda = w\cdot \phi(x)$で表せるかもしれない!と思えば

$$ y \sim \frac{(w\cdot \phi(x))^y e^{-w\cdot \phi(x)} } {y!} $$

と表せば良いことになります。あとは最尤推定なり何なりで$w$を求めるのが仕事です。 難しそうに見えますが、グッと踏ん張って有名ドコロの分布は、どういうパラメータを持っており どういう性質(例えば今回であれば正の整数しか取らない)なのかを 把握しておくべきでしょう。

ベルヌーイ分布

$y$がベルヌーイ分布に従っていると考えましょう。ベルヌーイ分布は$0$か$1$しか取りません。 2クラス分類に使えそうな分布ですね。ベルヌーイ分布は一見テクニカルな見た目をしています。

$$ y \sim (1-p)^(1-y)*p^{y} $$

$y = 1$のときには

$$ (1-p)^0 *p^{1} = p $$

$y = 0$のときには

$$ (1-p)^1 *p^{0} = 1-p $$

となっているので、$y=1$となる確率が$p$で$y=0$となる確率が$1-p$と割り振られている分布になります。 従って、ベルヌーイ分布のパラメータは$p$であり、これによって$y$の観測値が支配されることになります。

今$y$の観測値を支配しているパラメータ$p$が、手元のデータ$x$で表せると考えたならば、これを$p(x)$という関数で表現してやればいいということになります。 これは前回にも話していますが、$p(x)$は$[0, 1]$の範囲の値であるはずなので、

$$ p(x) = {\rm sigmoid} (w\cdot x) $$

と値域を抑えてやると良いでしょう(良いでしょうと言うより、対数オッズ比を線形回帰するようにしたら、これが自然と出てくる)。 もちろん、場合によっては$[0, 1]$に収まるような関数なら何でも良いでしょう。 少なくとも2クラス分類のニューラルネットワークというのは

$$p(x) = {\rm sigmoid}(W_2{\rm Relu}(W_1x))$$

みたいな計算をしているわけですから、日頃からめちゃくちゃな関数を置いています(しかしニューラルネットワークでは予測をベルヌーイ分布からサンプリングするのではなく、$p>0$ならば$y=1$くらいのザックリな予測を出力します)。

 

手順のまとめ

1.予測したい変数$y$の分布に検討を付ける

 

2.分布のパラメータを適当な線形モデル、あるいはニューラルネットワークで置き換える

 

3.場合によっては対数オッズ比であったりなど、左辺に関して何らかの加工を施す(一般化線形モデルを真面目にやればリンク関数としてもっと詳しく学べます)。

 

と言ったところのように思います。 確率分布が決まり、確率分布のパラメータをとある線形モデルで表すことで、パラメータを置き直しているようなものです。 ここをどう置き直すかで、$y$と$x$の関係性に関する表現力が変わってきます。

階層モデルの序論

先程は$y$が$p(y|\theta)$なる確率分布から生起していると考えたときに、$\theta(x)$という線形モデルなどを考えて代入することで、 線形モデル+確率モデルを獲得していました。ここで、$\theta(x)$という関数をいきなり考えるのではなく、$\theta$も何らかの確率分布から生成されているのでは?と考えることもできます。

 

例えば気温$y$を予測したい場合には、平均$\mu$で分散$\sigma$の正規分布${\cal N}(\mu, \sigma^2)$から生起していると考えるかもしれません。 そのとき、私達が想定しているのは以下のような状況です。

$$y\sim {\cal N}(y\mid \mu, \sigma^2)$$

$y$が正規分布からサンプルされる際に$\mu$や$\sigma^2$に影響を受けます。 このとき、先程までの話ならば、平均的な気温$\mu$を得るのに役立つデータ$x$が手元にあることを想定し例えば

$$y\sim {\cal N}(y\mid w\cdot x, \sigma^2)$$

のように書き換えてしまうことを行ってきました。 とりあえず$\mu$がどんなもんか知りたいとして、$\sigma2$は適当に見積もってしまうことにしましょう(固定する)。 もちろんこれは必須の操作ではなく、そのまま推定すべく残しておいても、何らかの関数で置き換えてもいいです。

 

さて、手元のデータ$x$というのは(天気、湿度、雲の割合)とかかもしれません。 今、これらの数値を上手く使って気温を表現できるだろうと私達は踏んでいるところです。

 

しかし、そんな上手い$w$というのはピタッと1つに求まるでしょうか? もしかしたら、だいたい良いくらいの$w$というのが求まるかもしれませんが、 正直、$w$自体にも日によってはゆらぎがあるだろうと考えるのは可笑しいことではないでしょう。

 

ここで、$w$自体も確率的に揺らぐんじゃないかと考えるのです。 これは気温を予測するためのデータ$x$の重み付けが日によって少しくらいは変動するのではないか?ということを反映しているわけです。 つまり物事の流れとしては、$w$自体も何らかの確率分布$p(w)$から出てきているとして

$$ \begin{align} w &\sim p(w) \\ y&\sim {\cal N}(y\mid w\cdot x, \sigma^2) \end{align} $$

という順番で最終的に$y$が生成されると考えるのです。 今仮に、$w$の方もガウス分布に従っているとしましょう(もちろんガウス分布で無くとも良い)。

$$ \begin{align} w &\sim {\cal N}(w\mid \mu_w, \sigma_w^2) \\ y&\sim {\cal N}(y\mid w\cdot x, \sigma^2) \end{align} $$

このように、元々予測したい$y$が何らかの確率分布から生起しているとし、 その確率分布をパラメータ$w$で表せるとした時、更にそのパラメータ$w$自体も何らかの確率分布から生起している と考えるのが、階層モデルの基本的な流れになります。

 

流れとしては、1.気温$y$が正規分布だと考える。2.手元の多次元データ$x$に対して$w$の重み付けを行うことでその平均的な値が分かると考える。 3.手元のデータ$x$に対する重み付け$w$も確率的に揺らぐと考える。4.$w$に確率分布を仮定する。5.$w$の確率分布のパラメータが更に確率的に揺らぐと考える……以下略。

 

今回は手元のデータ$x$で気温$y$が予測できるような例を考えましたが、 ひたすらデータ$x$だけが集まっており、これがどのような確率分布に従っているか、ということを考える際にも同様に確率分布を階層構造にできます(要はあるデータ$y$の確率分布のパラメータ自体も確率的だと考えてサンプルされていく様子を繋いでいく)。

 

最後に

この調子でガウス過程まで踏み込んでいきたいと思っていますが余裕はなさ気。

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com