- 講師:本多 淳也
- 参考書:エージェントアプローチ人工知能 第2版
- 参考書:イラストで学ぶ 人工知能概論
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
seed = 0
N = 10000
trials = np.arange(1,N+1)
確率不等式
チェビシェフの不等式(Chebyshev's inequality)¶
- 確率分布の具体的な形がわからなくても良い。
- 確率分布の期待値と分散がわかる時、上式によって確率の上限が計算できる。
- 分散を持つ任意の確率変数に対して成立する。
【証明】¶
$$ \begin{aligned} \mathbb{V}[X] &= \int_{-\infty}^{\infty}\left(x - \mathbb{E}[X]\right)^2f(x)dx\\ &\geq \int_{I}\left(x - \mathbb{E}[X]\right)^2f(x)dx\quad I=\left\{x:|x-\mathbb{E}[X]| \geq k\right\}\\ &\geq \int_{I}k^2f(x)dx\\ &= k^2\mathrm{P}\left(|X-\mathbb{E}[X]|\geq k\right) \end{aligned} $$その他の便利な不等式¶
- マルコフの不等式(Markov's inequality): $$P(X\geq a)\leq \frac{1}{a}\mathbb{E}[X]\quad\text{for any $a>0$}\quad X\geq0$$
- イェンセンの不等式(Jensen’s inequality): $$\mathbb{E}\left[h(X)\right]\geq h\left(\mathbb{E}[X]\right)\quad h(x):\text{Convex function}$$
- ヘルダーの不等式(Hölder’s inequality): $$\mathbb{E}[|XY|]\leq\left(\mathbb{E}[|X|^p]\right)^{1/p}\left(\mathbb{E}[|Y|^q]\right)^{1/q}\quad \text{ for any $p,q>0$ such that $1/p+1/q=1$}$$
※ ヘルダーの不等式において、特に $p=q=2$ の場合をコーシー・シュワルツの不等式(Cauchy-Schwarz’s inequality)と呼ぶ。
大数の法則
独立同一分布¶
- 同じ分布から独立に $n$ 個の標本 $X_1,X_2,\ldots,X_n$ を取り出したとき、これらは独立同一分布に従う(independently and identically distributed, i.i.d)という。
- $X_1,X_2,\ldots,X_n$ の同時確率密度関数は $$f(x_1,x_2,\ldots,x_n) = g(x_1)g(x_2),\cdots,g(x_n)$$
- 期待値 $\mu$ 分散 $\sigma^2$ の i.i.d.標本 $X_1,X_2,\ldots,X_n$ の標本平均 $\bar{X_n}=\frac{1}{n}\sum_{i=1}^nX_i$ を考える。
- 期待値 → 変化なし。 $$\mathbb{E}\left[\frac{1}{n}\sum_{i=1}^nX_i\right] = \frac{1}{n}\sum_{i=1}^n\mathbb{E}[X_i] = \frac{1}{n}\sum_{i=1}^n\mu = \mu$$
- 分散 → $1/n$ になり、標本平均を取ると値が安定する。 $$\mathbb{V}\left[\frac{1}{n}\sum_{i=1}^nX_i\right] = \frac{1}{n^2}\sum_{i=1}^n\mathbb{V}[X_i] = \frac{1}{n^2}\sum_{i=1}^n\sigma^2 = \frac{\sigma^2}{n}$$
大数の弱法則¶
任意の正の定数 $\varepsilon$ に対して、$n\rightarrow\infty$ のとき $$P\left(|\bar{X_n}-\mu|\geq\varepsilon\right)\rightarrow0$$
- 確率論の用語では、これを $\bar{X_n}$ が $\mu$ に確率収束(convergence in probability)すると呼ぶ。
- 標本を十分たくさんとれば、「標本平均を真の期待値とみなしても良い」ということ。
- チェビシェフの不等式を使って証明可能。
大数の強法則¶
$n\rightarrow\infty$ で、$\bar{X_n}$ は $\mu$ に概収束(almost sure convergence)する。
dices = np.random.RandomState(seed).randint(low=1, high=6+1, size=N)
ave_dices = np.cumsum(dices)/trials
plt.axhline(3.5, color="blue", label="Theoretical mean")
plt.plot(trials, ave_dices, label="Observed average", color="green")
plt.ylim(1, 6), plt.xlim(-1e1,1e3)
plt.title("Average dice roll by number of rolls"), plt.xlabel("Number of trials $(n)$"), plt.ylabel("Average")
plt.grid(), plt.legend()
plt.show()
確率収束vs概収束¶
- 確率収束は 「$X_n$ の確率分布を $n$ ごとに考える」のに対し、概収束では「無限列 $\{X_n\}$ の確率分布」を考える。
- 例えば,互いに独立な以下の確率変数列を考える。
$$X_n = \begin{cases}0,&\text{with probability $1-1/n$}\\1,&\text{with probability $1/n$}\end{cases}$$
- $\lim_{n\rightarrow\infty}\mathrm{Pr}\left(|X_n|>\varepsilon\right) = 0$:$X_n$ は $0$ に確率収束する。
- $\sum_{n=1}^{\infty}\mathrm{Pr}\left(|X_n|=\varepsilon\right) = \infty$:$\{X_n\}$ は(確率1で)無限個の $n$ について値 $1$ を取る。→「概収束しない」
コーシー分布¶
$$f(x) = \frac{\alpha}{\pi\left(\alpha^2 + (x-\lambda)^2\right)}\quad\alpha>0$$- 標準正規分布に独立に従う確率変数 $X,Y$ の比 $X/Y$ は、$\alpha=1,\lambda=0$ のコーシー分布に従う。
- 見た目は正規分布に似ている。
- 期待値と分散が存在しない → 大数の法則が適応できない
for k in range(3):
samples = np.random.RandomState(seed+k).standard_cauchy(size=N)
ave_samples = np.cumsum(samples)/trials
plt.plot(trials, ave_samples, label=f"Observation {k+1}")
plt.xlabel("n"), plt.ylabel("$(\mathbf{X}_1+\cdots+\mathbf{X}_n)/n$")
plt.legend(), plt.grid()
plt.show()
中心極限定理
- 大数の法則から、標本平均が真の期待値に近づいていくことがわかった。
- 大標本の極限の少し手前では、標本平均はどのように分布しているだろうか?
(任意に固定した $a < b$ に対して)$n\rightarrow\infty$ のとき
- $Z_n$ の分布が
- 標準正規分布に「弱収束(weak convergence)」する。($Z_n$ が $Z$ に弱収束 ↔︎ $\lim_{n\rightarrow\infty}M_{Z_n}(t)=M_Z(t)$)
- 標準正規分布に「分布収束(convergence in distribution)」する。
- 「漸近的(asymptotically)」に標準正規分布に従う。
【証明】¶
目標:「標準正規分布の積率母関数は $e^{t^2/2}$ なので、次式を示す。」 $$\lim_{n\rightarrow\infty}M_{Z_n}(t) = e^{t^2/2}$$
$Y_i = \frac{X_i-\mu}{\sigma}$ は期待値 $0$、分散 $1$ なので、積率母関数は
$$M_{Y_i}(t) = \mathbb{E}\left[e^{tY_i}\right] = \mathbb{E}\left(1 + tY_i + \frac{t^2}{2!}Y_i^2 + \frac{t^3}{3!}Y_i^3 + \cdots\right) = 1 + \frac{1}{2}t^2 + \sum_{n=3}^{\infty}\frac{t^n}{n!}Y_i^n$$ここで、
$$Z_n = \frac{\bar{X_n}-\mu}{\sigma/\sqrt{n}} = \frac{\frac{1}{n}\sum_{i=1}^n X_i - \mu}{\sigma/\sqrt{n}} = \frac{1}{\sqrt{n}}\sum_{i=1}^n Y_i$$であり、積率母関数の性質
$$ \begin{cases} M_{Y_1+Y_2}(t) = M_{Y_1}(t)M_{Y_2}(t)\quad (\text{$Y_1$ and $Y_2$ are independent.})\\ M_{aY}(t) = \mathbb{E}\left[e^{taY}\right] = M_Y(at) \end{cases} $$を利用すれば、$Z_n$ の積率母関数は
$$ \begin{aligned} M_{Z_n}(t) &= \left[M_{Y_i/\sqrt{n}}(t)\right]^n & \left(\because{Z_n = \frac{1}{\sqrt{n}}\sum_{i=1}^n Y_i}\right)\\ &= \left[M_{Y_i}\left(\frac{t}{\sqrt{n}}\right)\right]^n & \left(\because M_{aY}(t)=M_Y(at) \right)\\ &= \left[1 + \frac{1}{2}\left(\frac{t}{\sqrt{n}}\right)^2 + \sum_{n=3}^{\infty}\frac{Y_i^n}{n!}\left(\frac{t}{\sqrt{n}}\right)^n \right]^n & \left(\because M_{Y_i}(t) = 1 + \frac{1}{2}t^2 + \sum_{n=3}^{\infty}\frac{t^n}{n!}Y_i^n \right)\\ &= \left(1 + u_n\right)^n \end{aligned} $$(ここまでまとめ)主目標:「標準正規分布の積率母関数は $e^{t^2/2}$ なので、次式を示す。」
$$\lim_{n\rightarrow\infty}M_{Z_n}(t) = e^{t^2/2}$$$M_{Z_n}(t)$ は、以下のように示せた。
$$M_{Z_n}(t) = \left(1 + u_n\right)^n\quad \left(u_n = \frac{1}{2}\left(\frac{t}{\sqrt{n}}\right)^2 + \sum_{n=3}^{\infty}\frac{Y_i^n}{n!}\left(\frac{t}{\sqrt{n}}\right)^n\right)$$以下、「$\lim_{n\rightarrow\infty}\log M_{Z_n}(t) = t^2/2$ を示す。」
$n\rightarrow\infty$ のとき $|u_n| < 1$ なので、テーラー展開すると
$$\log(1 + u_n) = u_n - u_n^2/2 + u_n^3/3 - \cdots$$したがって、$\log M_{Z_n}(t) = n\log(1 + u_n) = n\left(u_n - u_n^2/2 + u_n^3/3 - \cdots\right)$
- 第1項目に注目すると $$\lim_{n\rightarrow\infty}nu_n = \lim_{n\rightarrow\infty}\left(\frac{t^2}{2} + \sum_{n=3}^{\infty}\frac{Y_i^n}{n!}\frac{t^n}{\left(\sqrt{n}\right)^{n-2}}\right) = \frac{t^2}{2}$$
- 第2項目以降に注目すると $$\lim_{n\rightarrow\infty}n|-u_n^2/2 + u_n^3/3 - \cdots | = 0$$
以上より、「$\lim_{n\rightarrow\infty}\log M_{Z_n}(t) = t^2/2$」
例①:一様分布 $\mathrm{Uni}(0,1)$¶
fig = plt.figure(figsize=(16,4))
for i,n in enumerate(range(1,4)):
ax = fig.add_subplot(1,3,i+1)
X = np.random.RandomState(seed).uniform(low=0, high=1, size=(n,N*10))
X_ave = np.mean(X, axis=0)
hist, bin_edges, _ = ax.hist(X_ave, color="blue", bins=30, alpha=0.5)
bins = 1/2 * (bin_edges[1:] + bin_edges[:-1])
ax.plot(bins, hist, color="red")
ax.set_xlim(0, 1), ax.grid(), ax.set_title(f"Uniform distribution [0,1] (n={n})")
plt.tight_layout()
plt.show()
例②:指数分布 $f(x) = e^{-x}$¶
※ np.random.exponential(beta)
は以下の分布から乱数を生成する
fig = plt.figure(figsize=(16,4))
for i,n in enumerate([1,3,30]):
ax = fig.add_subplot(1,3,i+1)
X = np.random.RandomState(seed).exponential(size=(n,N*10))
X_ave = np.mean(X, axis=0)
hist, bin_edges, _ = ax.hist(X_ave, color="blue", bins=30, alpha=0.5)
bins = 1/2 * (bin_edges[1:] + bin_edges[:-1])
ax.plot(bins, hist, color="red")
ax.set_xlim(0, 5), ax.grid(), ax.set_title(f"Exponential distribution (n={n})")
plt.tight_layout()
plt.show()
仮説検定
枠組み
語彙 | 説明 | (例) |
---|---|---|
仮説検定(hypothesis testing) | 母集団についての何らかの命題を、標本に基づいて検証すること | コインを20回投げて表が17回出た。この結果から表が出やすいと言えるか? |
帰無仮説(null hypothesis) | もとの仮説 | コインは歪んでいない。(表が出る確率 $p=1/2$) |
対立仮説(alternative hypothesis) | 帰無仮説と対立する仮説 | 表が出やすい。($p>1/2$) |
有意水準(significance level) | 検定において帰無仮説を設定したときに、その帰無仮説を棄却する基準となる確率。検定の前に決定する。 | $5$% か $1$% のことが多い。 |
上の例であれば、「コインは歪んでいない( $p=1/2$ ) 」と仮定すれば、「コインを20回投げて表が17回出る」という事象の確率は、
$$\left( _{20}C_{17} + _{20}C_{18} + _{20}C_{19} + _{20}C_{20}\right) \times (1/2)^{20} \approx 0.0013$$となり、有意水準 $1$ % よりも値が小さい。したがって、帰無仮説を棄却し、「有意水準 $1$% ので表が出やすい($p>1_2$)」と結論づけられる。
- 「帰無仮説を棄却するとき」は「帰無仮説がほとんど起こらないことを証明」している
- 「帰無仮説を採択するとき」は積極的に帰無仮説が起こることを証明しているの「ではなく」帰無仮説が現実と矛盾することを証明するだけの「十分な根拠がない」と言っているだけである。
両側検定
- 両側検定(two-sided test):あるパラメータが目標値と等しいかどうかを調べる。
- 片側検定(one-sided test):あるパラメータが比較対象より大きいかどうかを調べる。
二標本検定
- 二標本検定(two-sample test):期待値がそれぞれ $\mu_X,\mu_Y$ の二つの分布にしたがって取り出した i.i.d.標本( $\{X_i\}_{i=1}^{n_X},\{Y_i\}_{i=1}^{n_Y}$ )から、「帰無仮説 $\mu_X=\mu_Y$ 」を検定する。
例題
- ある反応での化合物の生成量を予測する問題を考える。
- 触媒Aと触媒Bでそれぞれ何度か実験を行い、それぞれの生成量を調べてみると以下であった。
- 触媒Aでの平均生成量は16g
- 触媒Bでの平均生成量は18g
- 触媒Bのほうが平均生成量が大きいので,触媒A よりも優れていると単純に結論づけて良いか?
- → 触媒Aとの「平均生成量の差が有意(significant)かどうか」を調べたい。
- 「仮定」:標本はそれぞれ正規分布に従う。 $$X_i\overset{\text{i.i.d.}}{\approx}N(\mu_X,\sigma^2),\quad Y_i\overset{\text{i.i.d.}}{\approx}N(\mu_Y,\sigma^2)$$
- このとき、「標本平均の差」は以下の正規分布に従う。 $$\bar{X}-\bar{Y} \sim N\left(\mu_X-\mu_Y, \frac{\sigma^2}{n_X}+\frac{\sigma^2}{n_Y}\right)$$
- 「母分散が既知かどうか」によって、以下の2通りに場合分けされる。
- 「母分散が既知のとき」:
- 標本平均の差を標準化すると、標準正規分布に従う。 $$Z = \frac{\left(\bar{X} - \bar{Y}\right) - \left(\mu_X-\mu_Y\right)}{\sqrt{\frac{\sigma^2}{n_X} + \frac{\sigma^2}{n_Y}}}\sim N(0,1)$$
- 標準正規分布の棄却率は計算できるので、$\hat{Z}$ が棄却域に入るかどうかを調べれば良い。 $$Z = \frac{\bar{X}-\bar{Y}}{\sqrt{\frac{\sigma^2}{n_X} + \frac{\sigma^2}{n_Y}}}$$
- 「母分散が未知のとき」:
- 分散 $\sigma^2$ を標本から推定する。 $$\hat{\sigma}^2 = \frac{\sum_{i=1}^{n_X}\left(X_i-\bar{X}\right)^2 + \sum_{i=1}^{n_Y}\left(Y_i-\bar{Y}\right)^2}{n_X + n_Y - 2}$$
- $\hat{Z} = \frac{\bar{X} - \bar{Y}}{\sqrt{\frac{\hat{\sigma}^2}{n_X}} + \sqrt{\frac{\hat{\sigma}^2}{n_Y}}}$ は自由度 $\phi = n_X + n_Y - 2$ のt分布に従う。
- t分布の棄却率は計算できるので、$\hat{Z}$ が棄却域に入るかどうかを調べれば良い。
- 「母分散が既知のとき」:
t分布¶
$$f(x) = \frac{1}{\sqrt{\phi}B\left(\frac{\phi}{2},{\frac{1}{2}}\right)}\left(1 + \frac{x^2}{\phi}\right)^{-\frac{\phi + 1}{2}},\quad \phi = 1,2,\ldots$$$X$ を標準正規分布に従う確率変数、$Y$ を自由度 $\phi$ のカイ二乗分布に従う独立な確率変数としたとき、
$$X/\sqrt{Y/\phi}$$は自由度 $\phi$ のt分布に従う。なお、発見者のペンネームにちなんで、スチューデンのt分布(Student's t-distribution)と呼ぶこともある。
x = np.linspace(-3,3,N)
fig = plt.figure(figsize=(14,4))
for i,phi in enumerate([1,3,10]):
ax = fig.add_subplot(1,3,i+1)
ax.plot(x, stats.t.pdf(x, phi), color="r", alpha=0.7, label=f"Student's t ($\phi={phi}$)")
ax.plot(x, stats.norm.pdf(x), color="g", alpha=0.5, label="Normal")
ax.plot(x, stats.cauchy.pdf(x), color="b", alpha=0.5, label="Cauchy")
ax.legend()
plt.tight_layout()
plt.show()
- 自由度 $\phi$ が $1$ のとき、「t分布はコーシー分布になる」
- 自由度 $\phi$ が $\infty$ 限大のとき、t分布は正規分布になる.
- 自由度 $\phi$ が「$2$ 以上」のとき、期待値は $$\mathbb{E}[X] = 0$$
- 自由度 $\phi$ が「$3$ 以上」のとき、分散は $$\mathbb{V}[X] = \frac{\phi}{\phi - 2}$$