記事のまとめ
・確率分布を正規分布と仮定した単回帰分析において、KLダイバージェンスの最小化と最小二乗法は同値である。
・この2つの方法は尤度関数を最大化している。
はじめに
統計学や機械学習、深層学習を勉強していると、ふととある疑問が頭の中に浮かんだ。
深層学習や機械学習では損失関数を設定したりするが、統計学ではそういったものを見ない。統計学ではいつも尤度関数を最大化している。シンプルな例で言えば、単回帰分析の時には最小2乗誤差を最小化した直線を引いているが、これをなぜKLダイバージェンスでやらないのか?やっていはいけないのか?
疑問について考えているうちに。頭の中がごちゃごちゃしてきた。以下の記事ではこれらの疑問に対して整理して答えを出したものになる。
最小2乗法=2乗誤差の最小化
まず、最小2乗法について整理する。
引用元:https://best-biostatistics.com/correlation_regression/zansa.html
上記の図では緑の直線が推定した式、オレンジの点がデータの示す。直線とデータの差が残差と呼ばれるもので、この残差の2乗した値を最小化するのが最小2乗法である。
上記では誤差と残差と2つの言葉が出ているが、誤差は真のパラメータとデータの差を示しており、残差は推定式とデータの差を示している。詳細はここを参照:https://bellcurve.jp/statistics/course/9704.html
尤度関数とは
単回帰分析において、尤度関数を最大化するということは2乗誤差を最小化することにつながる。
がそれを説明する前に尤度関数について自分なりに説明する。
尤度関数をわかりやすく説明するために最尤推定法について説明する。最尤推定法とはデータがある確率分布(ここでは母確率分布を考えている)からサンプリングされると仮定した時に、その確率分布の一番それっぽいパラメータを推定する方法のことである。ここである確率分布は分析者が設定するものであり、例えば正規分布やポアソン分布などがある。この時母パラメータ推定のために用いられる最適化する確率分布のことを尤度関数という。
尤度関数$L(\theta|x)$は以下の式で表される。
L(\theta|x) = \prod_i^N p(x_i|\theta)
$\theta$が想定した確率分布のパラメータを示す。正規分布の場合は平均や分散が該当する。iはデータの番号、Nはデータの総数を示す。$p(x_i|\theta)$はパラメータ$\theta$からサンプリングされたi番目のデータを示す。尤度関数は取得されたデータの同時確率で表現される。尤度関数を同時確率にすることで手元にあるデータ全体という事象を生成できる確率分布を考えることにつながるからだ(各データはI.D.Dを満たすという仮定あり)。
データがある確率分布から生成されると仮定した時に、その確率分布の最もらしいパラメータを求めるために利用する確率分布を尤度関数と呼ぶ。
ちなみに、統計学ではこの確率分布について仮定考えるが、機械学習や深層学習では確率分布に仮定を置かず、機械にデータから直接推定させる。
また、上記の説明がわかりづらい場合は以下を参照:
尤度とは:
尤度関数はなぜ同時確率なのか?:
尤度関数の最大化と最小2乗誤差の最小化は等価
単回帰分析でデータが正規分布から生成されると(母確率分布は正規分布)仮定したとき、尤度関数の最大化と2乗誤差の最小は等価である。
詳しくは良い記事があったのでごちらを参照:
上記記事をまとめる。ここでは”対数”尤度関数を最大化する。
対数尤度関数は以下の式となる。
{
\begin{eqnarray}
logL(\theta|x) &=& log \prod_i^N p(x_i|\theta) \\
&=& \sum_{n=1}^{N} log~ p(x_i|\theta) \\
\end{eqnarray}
}
上記対数尤度関数を最大化することで最もらしいパラメータを得ることができる。数式で表現すると以下のようになり、$\theta$の値をいじって対数尤度関数の最大値を得る。
\mathop{\rm arg~max}\limits_{\theta} \sum_{n=1}^{N} log~ p(x_i|\theta)
単回帰分析で、かつ母確率分布が正規分布と仮定した時、上記の式が2乗誤差の最小化につながる。
数式で表すと以下となる。
{
\begin{eqnarray}
\mathop{\rm arg~max}\limits_{\theta} \sum_{n=1}^{N} log~ p(x_i|\theta) = (省略)
&=& \mathop{\rm arg~max}\limits_{\theta} - \sum_{i=1}^{n} (x_i - \hat{y_{i,\theta}})^2 \\
&=& \mathop{\rm arg~min}\limits_{\theta} \sum_{i=1}^{n} (x_i - \hat{y_{i,\theta}})^2 \\
x_iは実際の値, \hat{y_{i,\theta}}は推定した式
\end{eqnarray}
}
尤度関数の最大化はKLダイバージェンスの最小化と等価
KLダイバージェンスとは2つの確率分布q(x)とp(x)がどの程度似ているかを評価する際に用いる指標。
ここは参考文献丸コピなので、詳細はこちら(https://www.oreilly.co.jp/books/9784814400591/)の92Pを参照。
KLダイバージェンスの式は以下の通りとなる
D_{KL}(p_* || p_\theta) = \int p_*(x)~log\frac{p_*(x)}{p_\theta(x)}dx \\
p_*(x)は実際に観測したデータ、p_\thetaは推定した確率分布から得られる値
この式からKLダイバージェンスを得るためには、全てのxについて積分しなければならないが、p(x)の具体的な形は不明なので、モンテカルロ法によって計算を近似する。
{
\begin{eqnarray}
E_{p_*(x)}[f(x)]
&=& \int p_*(x) ~ f(x) ~ dx \\
&≒& \frac{1}{N}~\sum_{i}^{N} ~ f(x^{(n)})
\end{eqnarray}
}
上記のように近似できる。上記は要するにモンテカルロ法を用いて、積分計算を有限の足し算に変換している。式を見るにおそらく一様分布から生成される乱数を用いて近似している。
したがってKLダイバージェンスは以下のように展開できる
{
\begin{eqnarray}
D_{KL}(p_* || p_\theta) &=& \int p_*(x)~log\frac{p_*(x)}{p_\theta(x)}dx \\
&≒& \frac{1}{N} ~ \sum_{i}^{N} ~ log \frac{p_*(x^{(n)})}{p_{\theta}(x^{(n)})} \\
&=& \frac{1}{N} ~ \sum_{i}^{N} ~ ( log ~ p_*(x^{(n)}) - log ~ p_{\theta}(x^{(n)}) )
\end{eqnarray}
}
$log ~ p_(x^{(n)})$は観測したデータから計算できるもので最適化するものではない。なので$p_{}$の項は無視できる。
したがって以下のように式を展開できる
{
\begin{eqnarray}
\mathop{\rm arg~min}\limits_{\theta} D_{KL}(p_* || p_\theta)
&=& \mathop{\rm arg~min}\limits_{\theta} ( - \frac{1}{N} \sum_{i}^{N} ~ log ~ p_{\theta}(x^{(n)}) ) \\
&=& \mathop{\rm arg~min}\limits_{\theta} ( - \sum_{i}^{N} ~ log ~ p_{\theta}(x^{(n)}) ) \\
&=& \mathop{\rm arg~max}\limits_{\theta} \sum_{i}^{N} ~ log ~ p_{\theta}(x^{(n)})
\end{eqnarray}
}
最後の式は対数尤度の最大化と同値。
結論
最小2乗法とKLダイバージェンスの最小化は等価であることが示された。
この場合、計算コストが低い方法を選べば良い。
しかし、コンピューター上で単回帰分析を行うときは最小2乗法もKLダイバージェンスの最小化も行っていない。コンピュータ上では以下の式でパラメータを解析的に解くことが可能。
\begin{align}
Y = X * A + \epsilon
\Leftrightarrow &\ X^TY = X^TX * A \\
\Leftrightarrow &\ (X^TX)^{-1}X^TY = A \\
\end{align}
上記の式で係数Aが求める。
ゆえに、実際の回帰分析では2乗誤差でもなく、KLダイバージェンスでもなく、最尤推定法でもなく、行列式を計算している。
最後に、タイトルの質問に対する答え私の答えとしては、説明する際に直感的にわかりやすいから、回帰分析では最小2乗誤差を用いている。
参考文献
残差の説明:
誤差と残差について:
尤度とは:
尤度関数はなぜ同時確率なのか?:
尤度関数の最大化と最小2乗法は等価:
ゼロから作るDeep Learning ❺:
回帰分析を行列で: