- ベイズの定理
P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}
小さな謎
僕は運用担当。今日は夜番だ。深夜二時に警告音が鳴る。
サイバー攻撃を検知
セキュリティAIが警報を出した。
過去のログを見ると、1000回の通信のうち1回が危険な攻撃だ。
そして、このセキュリティAIは攻撃を99%検知でき、誤警報は1%しかない優秀なAIだ。
では、いま本当に攻撃されている確率は99%なのだろうか?
答えを先に言う、
9\%
世界は一体どうなっているのだろうか。
数式で謎解き
| 攻撃 | 攻撃でない |
|---|---|
| $\frac{1}{1000}$ | $\frac{999}{1000}$ |
| 条件 | 警報が鳴る確率 |
|---|---|
| 攻撃がある | $\frac{99}{100}$ |
| 攻撃がない | $\frac{1}{100}$ |
ここで知りたいのは、警報が鳴った時にそれが攻撃である確率であるが、それは実はこの表に示されていない。
そして「セキュリティAIの警報が鳴る」確率も示されていない。
ここで
- $A$:攻撃である
- $A^c$:攻撃でない($A$ の余事象)
- $B$:警報が鳴る
とおく。ここで確率の記号で表すと、
| 出来事 | 確率の記号 | 値・説明 |
|---|---|---|
| 攻撃 | $P(A)$ | $\frac{1}{1000}$ |
| 攻撃がない | $P(A^c)$ | $\frac{999}{1000}$ |
| 警報が鳴る | $P(B)$ | これはまだわからない |
| 攻撃があった時に警報が鳴る | $P(B\mid A)$ | $\frac{99}{100}$ |
| 攻撃がなかった時に警報が鳴る | $P(B\mid A^c)$ | $\frac{1}{100}$ |
| 警報が鳴った時に攻撃があった | $P(A\mid B)$ | これを求めたいがわからない |
ただ、ここで冒頭で出たベイズの定理を当てはめると、
P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}
$P(B)$が分かれば$P(A\mid B)$が分かることになる。まず、$P(B)$を求める。
警報が鳴る確率$P(B)$は「攻撃がある確率」$\times$「攻撃があった時に警報が鳴る」確率$P(B\mid A)$と「攻撃がない確率」$\times$「攻撃がない時に警報が鳴る」確率の和だから、
\begin{align*}
P(B)&=P(A)\times P(B\mid A)+ P(A^c)\times P(B\mid A^c) \\
&=\frac{1}{1000}\times\frac{99}{100}+\frac{999}{1000}\times \frac{1}{100} \\
&=\frac{1098}{100000} \\
&\simeq0.01098
\end{align*}
つまり約1.1%である。これらをベイズの定理に当てはめると、
\begin{align*}
P(A\mid B)&=\frac{P(B\mid A)P(A)}{P(B)} \\
&=\frac{\frac{99}{100}\frac{1}{1000}}{\frac{1098}{100000}} \\
&=\frac{99}{1098} \\
&\simeq0.090
\end{align*}
約9%となる。
数式解説
ある出来事(事象)$A$と$B$があり、
- Aが起きる確率を$P(A)$
- Bが起きる確率を$P(B)$
とする。
- Aが起きた時にBが起きる確率$P(B\mid A)$
- Bが起きた時にAが起きる確率$P(A\mid B)$
また、AとBが同時に起きる確率を$P(A\cap B)$とする
$A$ と $B$ が同時に起きる確率は、二通りに表せる。
- $A$ が起き、その条件のもとで $B$ が起きる
- $B$ が起き、その条件のもとで $A$ が起きる
この両者は等しくなる。つまり、
$A$が起きる確率$\times A$が起きた時に$B$が起きる確率
$=B$が起きる確率$\times B$が起きた時に$A$が起きる確率
P(A\cap B) = P(B\mid A)P(A)=P(A\mid B)P(B)
両辺を$P(B)\ne0$で割ると
\frac{P(B\mid A)P(A)}{P(B)}=P(A\mid B)
単に左右を入れ替えると、
P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}
触れるデモ
何か不思議な感じが拭えないと思う。これは攻撃が$\frac{1}{1000}$とかなり珍しいことによる。
攻撃でない通信は999倍も多い。そのため誤警報率がわずか1%でも、「攻撃でないのに鳴った警報」が多くなるということである。
結果として、警報が鳴ったという事実だけでは、本当に攻撃である確率は約9%にしかならない。
10万回の通信で考えると、攻撃を正しく検知した警報は約99回なのに対し、攻撃ではないのに鳴る誤警報は約999回になる。
言葉だと分かりにくいので簡易デモを用意しました。
攻撃がある確率$P(A)$を動かしてみると、事後確率 $P(A\mid B)$が大きく変化することがわかると思います。
うまく表示できない場合は、「Result」を2回クリックしてみてください。
See the Pen Bayes' Theorem Interactive by aokikenichi (@aokikenichi) on CodePen.
別分野への接続
同様の考え方はAI、脳科学などでも広くみられる。
機械学習では、ベイズの定理を直接利用する代表例としてナイーブベイズ分類器がある。
観測された特徴から「どのクラスである可能性が高いか」という事後確率を求める手法で、特徴同士が条件付き独立であるという単純化を置く。
脳科学では、「感覚入力から、その原因となった世界の状態を推定する」と認識をとらえる考え方がある。ベイズ脳仮説や、そこから関連して議論される予測符号化などとも密接に関連する。
科学そのものも似た構造を持っている。「ある仮説ならこの観測が起きやすい」から、「この観測を得たとき、どの仮説をどれだけ信じるべきか」と考える、など。
ここで興味深いのが、
が世界の状態や仮説から観測を考える方向なのに、私たちが知りたいのは、
観測から、その背後にある世界の状態や仮説を推測する方向、つまり逆方向だということ。
この数式が提示する「世界観」
ベイズの定理が示しているのは、
観測結果を得るたびに、世界についての信念を書き換える。
という世界観です。
「真実か嘘か」を一発で決めるのではなく、
として世界を見る。
この図式から分かり、そして重要なのは、同じ観測を得ても、事前にどれくらいありそうだと思っていたかによって更新された信念つまり結論が変わること。
これは必ずしも欠点ではなく、ベイズ推論の特徴となっている。
数学の言葉では、
\text{事後確率}\propto\text{尤度}\times\text{事前確率}
となる。
ここで尤度とは、仮説 $A$ のもとで観測 $B$ がどれくらい得られやすいかを表す $P(B\mid A)$ のことである。
私たちは世界そのものを直接見ることはできない。
私たちが得られるのは、世界から届いた観測である。
ベイズの定理は、その観測から、見えない世界を逆向きに推理する数式である。
全20話で、
この「観測から見えない世界を推定する」という考え方を軸に、機械学習、生成AI、脳の予測、そしてエージェントの世界認識方法の一つである世界モデルへとつなげてみようと思います。
- 全20話予定
- タイトル・内容・順序は今後変更する場合があります
- 1〜4
- 観測されたデータから世界を推定する
- 5〜11
- 世界に潜む情報・構造・時間を取り出す
- 12〜16
- AIが世界を学び、表現し、生成する
- 17〜18
- 世界に働きかける
- 19〜20
- 脳と世界モデルへ到達する
| # | 仮タイトル | 数式・テーマ | 中心となる式 |
|---|---|---|---|
| 1 | 世界を逆から見る | ベイズの定理 | $P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}$ |
| 2 | もっともありそうな世界 | 最尤推定 | $\displaystyle \hat{\theta}=\arg\max_\theta p(D\mid\theta)$ |
| 3 | 偶然はどこまで偶然か | 正規分布 | $f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$ |
| 4 | 一本の線で世界を読む | 線形回帰・最小二乗法 | $\hat{\beta}=\arg\min_\beta \lVert y-X\beta\rVert^2$ |
| 5 | 知らないことを測る | エントロピー | $H(X)=-\sum_x p(x)\log p(x)$ |
| 6 | 二つの世界はどれほど違うか | KLダイバージェンス | $D_{\mathrm{KL}}(P\Vert Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)}$ |
| 7 | 何を知れば、何がわかるのか | 相互情報量 | $I(X;Y)=\sum_{x,y}p(x,y)\log\frac{p(x,y)}{p(x)p(y)}$ |
| 8 | 複雑な世界を一本の軸にする | PCA・固有値 | $\Sigma w=\lambda w$ |
| 9 | 時間の中に隠れた音を聴く | フーリエ変換 | $F(\omega)=\int_{-\infty}^{\infty}f(t)e^{-i\omega t},dt$ |
| 10 | ノイズの向こうに現在を見る | カルマンフィルタ | $\hat{x}_t=\hat{x}_t^-+K_t(y_t-H\hat{x}_t^-)$ |
| 11 | 未来は現在だけを覚えている | マルコフ性 | $P(X_{t+1}\mid X_t,\ldots,X_0)=P(X_{t+1}\mid X_t)$ |
| 12 | 間違いながら賢くなる | 勾配降下法 | $\theta_{t+1}=\theta_t-\eta\nabla_\theta L$ |
| 13 | 誤差を逆向きにたどる | 連鎖律・誤差逆伝播 | $\frac{\partial L}{\partial x}=\frac{\partial L}{\partial y}\frac{\partial y}{\partial x}$ |
| 14 | 何を見るべきか | Attention | $\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V$ |
| 15 | 世界を圧縮して夢を見る | VAE・ELBO | $L=E_{q(z\mid x)}[\log p(x\mid z)]-D_{KL}(q(z\mid x)\mid\mid p(z))$ |
| 16 | ノイズから世界をつくる | 拡散モデル | $q(x_t\mid x_0)=\mathcal{N}\left(\sqrt{\bar{\alpha}_t}x_0,(1-\bar{\alpha}_t)I\right)$ |
| 17 | 相関という罠を抜ける | 因果推論・Backdoor Adjustment | $P(y\mid do(x))=\sum_z P(y\mid x,z)P(z)$ |
| 18 | 未来を変えるために、今を選ぶ | Bellman方程式 | $Q^{*}(s,a)=E[r+\gamma\max_{a'}Q^{*}(s',a')]$ |
| 19 | 脳は世界を予測しているのか | 予測誤差・Predictive Coding | $\varepsilon=y-\hat{y}$ |
| 20 | 世界を予測し、自分を変える | 変分自由エネルギー | $F[q]=D_{\mathrm{KL}}(q(s)\Vert p(s\mid o))-\log p(o)$ |
- 構成案、文案、デモ生成、内容チェックなどにChatGPT 5.6 Solを用いております
- ただ文章自体は本記事著者、青木が書いております
