機械学習の部屋

機械学習及び統計の学習

最尤法と代表値

平均値や中央値は最尤推定量として見立てることが可能です。

 

1 最尤推定法について

 

 最尤法について渡辺澄夫先生の『データ学習アルゴリズム』では以下のように定義されています。

データ X^n がモデル p(x|w) から得られる確率密度は

 p(X^n) = \prod_{i=0}^n p(X^n | w)です。

そしてこの値をモデルの尤度と定義します。 

最尤推定とはこの尤度を最大化するパラメータを選ぶ推測法です。

 

尤度関数はそのモデルから標本(サンプル)が得られる確率を表していますが、これは「データから見たモデルの好み」を表していると解釈するといいでしょう。

statistics.hateblo.jp

2 平均値

データXの母数\thetaが以下の確率モデルに従うことを仮定します。

 X=\theta+\epsilonであり、\epsilonは平均0で分散\sigma ^{2}正規分布に従う

今、観測値がX_1,…,X_nと独立に得られたとします。この時の最尤推定量を求めてみましょう。

 

正規分布の確率密度函数の式より、各観測値X_k

p(X_k|\theta,\sigma ^{2}) =\frac{1}{\sqrt{2\pi}\sigma}  \exp(-\frac{(X_k-\theta)^{2}}{2\sigma ^{2}})

に従っています。

この時対数尤度函数

L_n(\theta,\sigma ^{2}) = \sum_{k=1}^n \log p(X_k|\theta,\sigma ^{2})= -\sum_{k=1}^n \frac{(X_k-\theta)^{2}}{2\sigma ^{2}} +C

です。この関数をθに関して微分すると、

\frac{\partial L_n}{\partial \theta} = -  \frac{1}{\sigma ^{2}}\sum_{k=1}^n (X_k-\theta)

となります。これが0になるときは対数尤度関数が最大になるときです。

実際、対数尤度関数=0とすると

\theta=\frac{\sum_{k=1}^n X_k}{n}

となります。よってこれを最大化する\thetaはサンプルX_1,…,X_nの平均に一致することが分かります。

これよりサンプルの平均を求めるという統計学で最初に習うことは、正規分布モデルの最尤法そのものになっていたということです。

 

3 中央値

正規分布モデルをLaplace分布モデルに置き換えれば中央値の最尤法での解釈も得られます。2と同様にやってみます。

データXの母数\thetaが以下の確率モデルに従うことを仮定します。

 X=\theta+\epsilonであり、\epsilonは平均0のラプラス分布に従う

今、観測値がX_1,…,X_nと独立に得られたとします。この時の最尤推定量を求めてみましょう。

ラプラス分布の確率密度函数の式より、各観測値X_k

p(X_k|\theta) =\frac{1}{2b}  \exp(-\frac{|X_k-\theta|}{b})

に従っています。

この時対数尤度函数

L_n(\theta) =\sum_{k=1}^n \log p(X_k|\theta)=-\sum_{k=1}^n \frac{|X_k-\theta|}{b}

です。この関数を\theta微分し、=0とすると\thetaは中央値となります。

 

このように、平均や分散や中央値を求める記述統計の易しい話であっても、その背後には、パラメーター付きの確率分布によるモデル化という考え方が隠れているわけです。

確率密度関数に関するtips

確率密度関数について初めて学んだ人が陥る可能性があるいくつかの疑問や誤解について考察していこうと思います。

(下に書いてあることはどれも分かってしまえば自明なことですが、私自身最初は混乱していました。)

1 確率密度関数の値は1を超えてもいいのだろうか?

 確率密度関数p(x)自体は確率ではありません。p(x)\delta xというように積分した値が確率となるのです。そのため確率密度関数自体は1を超えても何の問題もありません。

しかし当たり前ですが全領域で積分した時には1以下でなければいけません。

2 ある実現値をとる確率は0になるがこれは大丈夫なのか?

 確かに連続確率密度関数においてある一点{z}からなる集合が生じる確率は

\int_z^z p(x)dx = 0

より0です。

しかし確率が0であるからといってそれが空集合であるわけではありません。確率0であっても空集合ではないので実現されると考えられるのです。

確率0に関するイメージを持つために測度論でよく出てくる例を考えてみましょう。1点のみの確率が0であるならば、確率の加法性よりそれを可算無限個足し合わせた有理数全体の集合が実現される確率も0となります。*1このように確率0であっても空集合ではない例はたくさんあります。

また実現された確率の高い低いに関してはあまり意味がないともいえるでしょう。例えば1から100万までの数字が書かれた100万枚のカードを用意し、その中から一枚を選ぶとします。この時あるカードが選ばれる確率は100万分の1ですが、それについてレアなことが起こったとは言わないでしょう。

3 現象の起こりやすさ=確率密度関数の大きさではない?

1でも書きましたが、確率密度関数はあくまで確率の密度を表しているのであってそれ自体は確率を表しません。なのでその大きさがイコール確率と考えてはいけません。

 この点については渡辺(2012)『ベイズ統計の理論と方法』で詳しく指摘されています。その中で

p(x) \propto exp(-||x+100||) + 1000 exp(-||x-100||/0.01(ただしx \in R^{10}

という例が出てきます。p(x)の大きさで見ると二項目が支配的に見えますが、実際に積分すると一項目が支配的になるのです。

この例からも「確率密度関数ではなく、それを積分した値が実際の確率である」という意識はしっかり持っておくべきなのかもしれません。

 

参考文献

原啓介 『測度・確率・ルベーグ積分』 講談社

渡辺澄夫 『ベイズ統計の理論と方法』 コロナ社

渡辺澄夫 『データ学習アルゴリズム』 共立出版

 

 

 

*1:これはディリクレ関数のルベーグ積分です。

最尤法の捉え方をまとめてみる

機械学習や統計の文脈でよく使われる最尤法ですが、そのとらえ方についてまとめていこうと思います。

 

1 ベイズ法の定義

まずはベイズ法の定義をみておきます。

以下は渡辺澄夫先生の『データ学習アルゴリズム』を参考にさせていただきました。

 (この本は今読んでもなお得るものが多い名著だと思います。)

まず事後分布を以下のように定義します。

パラメータ w が事前密度関数 φ(w) から発生し、データ X^n がモデル p(x|w) から独立に発生したものと仮定します。

データXnが与えられたときのパラメータの条件つき密度関数は
p(w|X^n) = \frac{φ(w)  \prod_{i=0}^n p(X_i|w)}{ \int φ(w) \prod_{i=0}^n p(X_i|w) dw}
であり、これを事後密度関数といいます。

 この事後分布を使い、ベイズ法は以下のように定義されます。

統計モデルを事後分布で平均したもの
 p(x|X^n) = \int p(x|w) p(w|X^n) dw = E_w[p(x|w) ]

ベイズ予測分布といい、これを真の密度関数の推定関数とする方法をベイズ法と定義します。

2 最尤法の定義

 最尤法について渡辺澄夫先生の『データ学習アルゴリズム』では以下のように定義されています。

データ X^n がモデル p(x|w) から得られる確率密度は

 p(X^n) = \prod_{i=0}^n p(X^n | w)です。

そしてこの値をモデルの尤度と定義します。 

最尤推定とはこの尤度を最大化するパラメータを選ぶ推測法です。

 

尤度関数はそのモデルから標本(サンプル)が得られる確率を表していますが、これは「データから見たモデルの好み」を表していると解釈するといいでしょう。

 

最尤法を実際に使い、代表値を求める方法については以下の記事で書きました。

statistics.hateblo.jp

 

(注意)統計学の教科書によっては最尤法について「現実の標本は確率最大のものが実現した」という仮定を下にしていると書かれているものがありますが、これは論理の向きが逆であると思われます。正しくは「モデルのパラメータを現実の標本が生じる確率が最大になるよう選ぶ方法」だと思われます。

 

(補足)PRMLによると尤度関数は機械学習の文脈ではエビデンス関数と呼ばれるそうです。

3 ベイズ法の特別な場合としての最尤法

一般に最尤法はベイズ法の特殊なパターンとみることができます。この点について順番にまとめてみました。

3.1 ベイズの定理とδ関数による定式化

尤度関数の大きさは事後分布p(w|X^n) = \frac{φ(w)  \prod_{i=0}^n p(X_i|w)}{ \int φ(w) \prod_{i=0}^n p(X_i|w) dw}においてパラメータの事前分布を一定とみなしたときの関数の大きさと比例します。そして事後分布が最大になるようにパラメータを最大化したのちに予測分布に代入していると考えられます。

この点についてはデルタ関数を使って考えるとわかりやすいです。これについては以下の須山さんの記事が参考になります。

この時最尤推定

<事前分布は無限に広い一様分布 p(w)=c であり

<事後分布は真のパラメータ周りのデルタ関数p(w|x)≈δ(w−w^)であることを仮定しています。


machine-learning.hatenablog.com

 

3.2   汎化誤差の推定関数としての定式化

赤池弘次先生が指摘されているように、対数尤度関数はn→∞の極限で汎化損失と一致します。しかしその精度は良くないため議論をAICへと進みました。

この点については以下の赤池さん自身の論文が参考になります。

尤度関数 p(X^n) = \prod_{i=0}^n p(X^n | w)に対して対数尤度は

 p(X^n) = \sum_{i=0}^n  ln (p(X^n | w))

 と定義します。この時、大数の法則よりn→\infにおいて

 p(X^n) =\frac{1}{n} \sum_{i=0}^n  ln (p(X^n | w) →)\int  q(x)p(X|w) dw

となります。ここでq(x)は真の密度関数です。

www.jstage.jst.go.jp

3.3 逆温度パラメータによる定式化

逆温度パラメータを事後分布に導入することで 広義のベイズ法を考えることができます。この時、逆温度パラメータを/betaとして事後分布を以下のように定義できます。(渡辺2011)

p(w|X^n) = \frac{φ(w)  \prod_{i=0}^n p(X_i|w)^\beta}{Z}

(Zはp(w|X^n)を正規化するための定数。ここでは見やすさのためZとおいた。)

 

そして一般的なベイズ法と同様に予測分布を作り、それを広義のベイズ法における真の密度関数の推定関数とします。そして\beta/infにしたとき、ベイズ法と最尤法は一致するとのことです。(渡辺 2011)

この点については以下の記事が参考になりました。

chijan.hatenablog.jp