⚠️ このページは機械翻訳されています
この日本語訳は機械翻訳によるもので、誤りや不自然な表現が含まれている場合があります。正確な内容については英語版をご参照ください。
This page was machine-translated and may contain errors. Please refer to the English version for accuracy.
誤りを見つけられた場合は、joseph.austerweil@gmail.com までご連絡いただくか、GitHub リポジトリにプルリクエストをお送りください。
ガウス分布によるベイズ学習
学習問題
Chibany には新たな課題があります。新しいサプライヤーから弁当が届くようになりましたが、そのとんかつ弁当の平均重量がわかりません。いつものサプライヤーと同様に 500g を目標にしていると思っていますが、確信はありません。もしかすると 495g を目指しているのかも?それとも 505g?
問い:観測データから真の平均重量をどうやって学習すればよいか?
これが ベイズ学習 です。事前信念から始まり、データを観測し、事後信念へと更新していきます。
設定:平均未知、分散既知
まずシンプルなケースから始めましょう。次のように仮定します。
- 個々の弁当重量は X ~ N(μ, σ²) に従う
- 分散 σ² = 4(標準偏差 = 2g)は 既知 [一定の精度]
- 平均 μ は 未知 [学習したいもの]
事前信念:データを見る前に、Chibany は μ ~ N(500, 25) と考えています。
- 最良の推測:500g(事前分布の平均)
- 不確実性:標準偏差 5g(したがって分散 = 25)
これは「平均は 500g 前後だと思うが、±5g 程度の不確かさがある」ということを表しています。
データの観測
Chibany は新しいサプライヤーの最初の弁当を計量しました:x₁ = 497g
重要な洞察:この単一の観測は μ に関する情報を含んでいます!
- μ が 500g なら、497g を観測することはそれなりに起こりうる(1.5σ 以内)
- μ が 510g なら、497g を観測することはかなり起こりにくい(6.5σ も離れている!)
- μ が 495g なら、497g を観測することは非常に起こりやすい(わずか 1σ)
観測は、データをより尤もらしくする値の方向に μ に関する信念を シフト させます。
ベイズ更新:数式
未知パラメータに対する ベイズの定理:
$$p(\mu | x_1, ..., x_n) = \frac{p(x_1, ..., x_n | \mu) \cdot p(\mu)}{p(x_1, ..., x_n)}$$言葉で表すと:
- 事後分布 ∝ 尤度 × 事前分布
- データを観測した後の信念 ∝ (データがどれだけ起こりやすいか)× (観測前の信念)
📘 基礎概念:ベイズの定理の拡張
チュートリアル 1 第 5 章で学んだ ように、ベイズの定理はエビデンスによって信念を更新するものです:
$$P(H | E) = \frac{P(E | H) \cdot P(H)}{P(E)}$$「タクシーは青かったか?」を「Chibany が青と言った」というエビデンスのもとで答えるような 離散事象 に使いました。
今はこれを連続パラメータへ拡張しています!
構造はまったく同じです:
| チュートリアル 1(離散) | チュートリアル 3(連続) |
|---|---|
| $P(H \mid E)$ — 仮説に関する事後信念 | $p(\mu \mid x_1, ..., x_n)$ — パラメータに関する事後信念 |
| $P(E \mid H)$ — 仮説のもとでのエビデンスの尤度 | $p(x_1, ..., x_n \mid \mu)$ — パラメータのもとでのデータの尤度 |
| $P(H)$ — 仮説に関する事前信念 | $p(\mu)$ — パラメータに関する事前信念 |
| $P(E)$ — エビデンスの全確率 | $p(x_1, ..., x_n)$ — データの全確率 |
ロジックは変わっていません:
- 事前信念から始める(データを見る前)
- エビデンスで更新する(観測の尤度)
- 事後信念を得る(データを見た後)
新しい点: 離散確率(0.15、0.85)ではなく、連続密度(ガウス分布)を扱っています。しかし 信念更新の原理 はまったく同じです!
ガウス-ガウス共役事前分布
ここが魔法のポイントです:事前分布がガウス分布で尤度もガウス分布の場合、事後分布もガウス分布になります!
これを 共役性 と呼び、計算を非常にエレガントにします。
事前分布:μ ~ N(μ₀, σ₀²) 尤度:X | μ ~ N(μ, σ²) [σ² は既知]
x₁, x₂, …, xₙ を観測した後:
$$\mu | x_1, ..., x_n \sim N(\mu_n, \sigma_n^2)$$ここで:
$$\mu_n = \frac{\frac{\mu_0}{\sigma_0^2} + \frac{n\bar{x}}{\sigma^2}}{\frac{1}{\sigma_0^2} + \frac{n}{\sigma^2}}$$$$\frac{1}{\sigma_n^2} = \frac{1}{\sigma_0^2} + \frac{n}{\sigma^2}$$慌てないでください! GenJAX がこれを処理します。ただし直感を理解しておきましょう。
直感:精度加重平均
事後平均 μₙ は以下の 加重平均 です:
- 事前平均 μ₀
- 標本平均 $\bar{x}$
重みは 精度(分散の逆数)に依存します:
- 事前精度:$\frac{1}{\sigma_0^2}$
- データ精度:$\frac{n}{\sigma^2}$(データが多い = 精度が高い)
わかりやすく言うと
「更新された信念は、事前に思っていたこと(事前分布)とデータが示すこと(標本平均)の妥協点です。最初の確信が強かった(σ₀² が小さい)場合や手元のデータが少ない(n が小さい)場合ほど、事前分布に近い値を維持します。データが多い(n が大きい)場合や最初の不確実性が高かった(σ₀² が大きい)場合ほど、データを信頼します。」
例題を解く
事前分布:μ ~ N(500, 25) [μ₀ = 500, σ₀² = 25] データ分散:σ² = 4 観測値:x₁ = 497g、したがって $\bar{x}$ = 497、n = 1
事後分散:
$$\frac{1}{\sigma_1^2} = \frac{1}{25} + \frac{1}{4} = 0.04 + 0.25 = 0.29$$$$\sigma_1^2 = \frac{1}{0.29} \approx 3.45$$$$\sigma_1 \approx 1.86$$事後平均:
$$\mu_1 = \frac{\frac{500}{25} + \frac{1 \cdot 497}{4}}{\frac{1}{25} + \frac{1}{4}} = \frac{20 + 124.25}{0.29} = \frac{144.25}{0.29} \approx 497.4$$結果:497g を観測した後、Chibany の信念は μ ~ N(497.4, 3.45) に更新されます。
解釈:
- 最良の推測は 500g から 497.4g にシフトした(データの方向へ移動)
- 不確実性は σ₀ = 5g から σ₁ ≈ 1.86g に減少した(より確信が持てるようになった)
GenJAX での実装
ベイズ学習モデルを構築しましょう:
| |
出力:
Posterior mean: 497.41g
Posterior std dev: 1.85g
Theoretical posterior mean: 497.4g
Theoretical posterior std dev: 1.86g注意:上記は概念的な構造を示しています。実際には GenJAX の重点サンプリングは重みの正規化が必要な場合があります。直接解析的に更新することでシンプルにしましょう:
| |
出力:
After 1 observation:
Posterior mean: 497.41g
Posterior std dev: 1.86g手計算との完全一致!
逐次学習:データを増やす
今度は Chibany が同じサプライヤーからさらに 9 個の弁当を計量します:
| |
出力:
Prior: N(500.00, 25.00)
Mean: 500.00g, Std dev: 5.00g
After observation 1 (x=497.0g):
Posterior: N(497.41, 3.45)
Mean: 497.41g, Std dev: 1.86g
After observation 2 (x=498.5g):
Posterior: N(497.92, 1.85)
Mean: 497.92g, Std dev: 1.36g
After observation 3 (x=496.0g):
Posterior: N(497.31, 1.27)
Mean: 497.31g, Std dev: 1.13g
After observation 4 (x=499.0g):
Posterior: N(497.72, 0.96)
Mean: 497.72g, Std dev: 0.98g
After observation 5 (x=497.5g):
Posterior: N(497.67, 0.78)
Mean: 497.67g, Std dev: 0.88g
After observation 6 (x=498.0g):
Posterior: N(497.73, 0.65)
Mean: 497.73g, Std dev: 0.81g
After observation 7 (x=496.5g):
Posterior: N(497.56, 0.56)
Mean: 497.56g, Std dev: 0.75g
After observation 8 (x=497.0g):
Posterior: N(497.49, 0.49)
Mean: 497.49g, Std dev: 0.70g
After observation 9 (x=498.5g):
Posterior: N(497.60, 0.44)
Mean: 497.60g, Std dev: 0.66g
After observation 10 (x=497.5g):
Posterior: N(497.59, 0.39)
Mean: 497.59g, Std dev: 0.63g主な観察点:
- 平均はデータの平均値(約 497.6g)に向かってシフトする
- 観測のたびに不確実性が減少する
- 10 回の観測後、σ は 5.0g から 0.61g に低下した(はるかに確信が高まった!)
学習過程の可視化
| |
可視化コードを表示
| |
プロットが示すストーリー:
- 黒の破線:事前信念(幅広く、500g を中心)
- 青:1 回の観測後(データに向かってシフト、より狭くなった)
- 緑:5 回の観測後(標本平均に近づき、かなり狭くなった)
- 赤:10 回の観測後(標本平均にほぼ一致、非常に狭い)
- 紫の点線:真の標本平均(497.65g)
データが蓄積されるにつれて、事後分布は真の値に収束します!
🔬 探索演習:パラメータが学習に与える影響
ベイズ更新のメカニズムを理解したところで、主要なパラメータが学習過程にどのような影響を与えるかを体系的に探りましょう:
- 尤度分散(σ²_x):測定の精度はどれくらいか?
- 観測数(N):どれだけのデータがあるか?
インタラクティブな探索
📓 インタラクティブノートブックを開く:Colab で開く:gaussian_bayesian_interactive_exploration.ipynb
このノートブックでは次のことができます:
- インタラクティブスライダーでパラメータをリアルタイムに調整
- 事前分布 → 事後分布 → 予測分布の変化の 視覚的比較
- 収束を示す 逐次学習の可視化
- 実践的な体験のための GenJAX 実装
探索すべき重要な問い:
- σ²_x が非常に小さい(精密な測定)場合と非常に大きい(ノイズの多い測定)場合では何が起きるか?
- N が 1 から 10 の観測に増えるにつれ、事後分布はどう変わるか?
- データが事前分布を「圧倒する」のはいつか?
- 予測分布が常に事後分布より広いのはなぜか?
課題問題
📝 詳細な解答を確認する:Colab で開く:solution_1_gaussian_bayesian_update.ipynb
この課題では以下を体系的に探求します:
- パート (a):事前分布の可視化
- パート (b):尤度分散の影響(σ²_x = 0.25 対 4)
- パート (c):観測数の影響(N=1 対 N=5)
- GenJAX による検証:解析的な公式とシミュレーションの比較
学習目標:
- 精度加重平均への直感を養う
- 分散とサンプルサイズのトレードオフを理解する
- 大数の法則を実際に確認する(N → ∞ で事後分布 → 標本平均)
- 数式をコードに変換する練習をする
💡 なぜこれが重要か
これらのパラメータの影響を理解することは以下のために不可欠です:
- 実験計画:何サンプル必要か?
- センサーのキャリブレーション:測定ノイズは推論にどう影響するか?
- 事前分布の選択:事前分布が優勢になるのはいつか、圧倒されるのはいつか?
- 不確実性の定量化:推定値にどれくらい確信を持てるか?
これらのノートブックで、現実世界のあらゆるベイズ応用に現れる概念を実践的に体験できます!
予測分布
Chibany は今、こう問います:「次の弁当の重量はどれくらいになると予測すべきか?」
これには 事後予測分布 が必要です:
$$p(x_{new} | x_1, ..., x_n)$$「これまでに学習したことを踏まえて、新しい観測の確率分布はどうなるか?」
数式
μ に関する不確実性を積分で消去します:
$$p(x_{new} | data) = \int p(x_{new} | \mu) \cdot p(\mu | data) d\mu$$ガウス-ガウスモデルでは、これもガウス分布になります!
$$X_{new} | data \sim N(\mu_n, \sigma^2 + \sigma_n^2)$$重要な洞察:予測分散は次の 2 つを合算します:
- データ分散 σ²(弁当固有のばらつき)
- 事後分散 σₙ²(μ に関する残余の不確実性)
例
10 回の観測後、事後分布 N(497.65, 0.37) が得られています:
| |
出力:
Posterior for μ: N(497.65, 0.37)
Predictive for next X: N(497.65, 4.37)
Predictive std dev: 2.09g解釈:次の弁当の重量は約 497.65g ± 2.09g になると予測されます。
GenJAX での予測分布の実装
| |
出力:
Simulated predictive mean: 497.65g
Simulated predictive std: 2.10g
Theoretical predictive mean: 497.65g
Theoretical predictive std: 2.09g完全一致!
共役性が重要な理由
ガウス-ガウスの設定は 共役 です。つまり:
- 事前分布はガウス分布
- 尤度はガウス分布
- 事後分布もガウス分布
これには大きな利点があります:
- 閉形式の更新:複雑な推論アルゴリズムが不要
- 逐次学習:1 回の観測ごとに更新可能
- 解釈しやすい:精度加重平均は明確な意味を持つ
- 計算効率が良い:2 つのパラメータ(μₙ、σₙ²)を更新するだけでよい
すべての事前-尤度のペアが共役というわけではありません。共役でない場合は近似手法が必要になります(後のチュートリアルで見ていきます)。
全体像:パラメータと観測値
以下を区別することが重要です:
パラメータ(未知、学習するもの):
- μ(サプライヤーが目標とする平均重量)
- データを観測した後に事後分布で記述される
観測値(既知、収集するもの):
- x₁, x₂, …, xₙ(実際に測定した弁当の重量)
- パラメータが与えられたもとでの尤度分布で記述される
ベイズ的アプローチ:未知のパラメータを分布を持つ確率変数として扱い、データでその分布を更新します。
練習問題
問題 1:新しいコーヒーショップ
新しいコーヒーショップはエスプレッソショットの平均が 30ml だと主張しています。あなたはそれを信じていますが不確かです。事前分布:μ ~ N(30, 9)(標準偏差 = 3ml)。
5 ショットを計量しました:[28.5, 29.0, 31.0, 29.5, 30.5] ml。
既知:各ショットの分散は 4(標準偏差 = 2ml)。
a) 5 回の観測後の μ の事後分布は?
b) μ の 95% 信用区間は?
c) 次のショットの予測分布は?
解答を表示
| |
出力:
a) Posterior: N(29.72, 0.73)
Mean: 29.72ml, Std dev: 0.86ml
b) 95% credible interval: [28.04, 31.40] ml
c) Predictive: N(29.72, 4.73)
Mean: 29.72ml, Std dev: 2.18ml問題 2:矛盾するデータからの学習
強い事前信念があるとします:μ ~ N(500, 1)(500g に非常に確信がある)。
3 個の弁当を観測しました:[490, 491, 489](いずれもずっと軽い!)。
データ分散:4。
a) 事後分布は?
b) 事後分布がなぜ 490g にもっと大きくシフトしなかったのか?
c) 事前分布よりデータを信頼するためには何回の観測が必要か?
解答を表示
| |
出力:
a) Prior: N(500, 1.00) [very confident]
Sample mean: 490.0g
Posterior: N(495.71, 0.57)
Mean: 495.71g, Std dev: 0.76g
b) Prior precision: 1.00
Data precision (n=3): 0.75
Prior precision is stronger, so posterior stays near 500g
c) Need n > 4 observations for data to dominate
With n=5: Posterior mean = 494.44g (shifted more)🎯 プレビュー:ガウス混合による分類
単一のガウス分布 に関する信念の更新方法を学びました。しかし、第 1 章で登場した Chibany の謎の弁当を覚えていますか?それらは 2 種類の混合(とんかつとハンバーグ)から来ていました。
分類問題
Chibany が不透明な 425g の弁当を受け取ったとします。どちらの種類でしょうか?
- とんかつ弁当:重量 ~ N(500, 100)
- ハンバーグ弁当:重量 ~ N(350, 100)
- 事前信念:とんかつ 70%、ハンバーグ 30%
これは 混合モデル の問題で、以下が必要です:
- 観測した重量からカテゴリを 推論:P(カテゴリ | 重量)
- 連続的な尤度で ベイズの定理を使用
- 決定境界を理解:P(とんかつ | x) = 0.5 になるのはどこか?
インタラクティブな探索
📓 混合モデルを探索する:Colab で開く:gaussian_bayesian_interactive_exploration.ipynb(パート 2)
このセクションでは:
- インタラクティブな分類:P(c=1|x) が x に応じてどう変わるかを確認
- 事前分布の影響:θ(事前確率)が決定境界をどうシフトさせるか?
- 分散の影響:カテゴリが異なるばらつきを持つ場合は何が起きるか?
- 周辺分布:重み付き混合分布 p(x) を可視化
📝 詳細な解答:Colab で開く:solution_2_gaussian_clusters.ipynb
この課題の内容:
- パート (a):ベイズの定理を使って P(c=1|x) を導出
- パート (b):事前分布と分散が分類に与える影響
- パート (c):周辺分布 p(x) の導出
- パート (d):二峰性対単峰性の混合分布の理解
🔗 概念の接続
第 1 章より:離散混合(70% × 500g + 30% × 350g)の E[X] を計算しました。
今は:連続混合に対して P(カテゴリ | 観測値) を計算しています!
進行の流れ:
- 第 1 章:離散混合、既知のカテゴリ → 期待値を計算
- 第 4 章(この章):単一ガウス分布 → データからパラメータを学習
- プレビュー(問題 2):既知の混合パラメータ → 隠れたカテゴリを推論
- 第 5 章(次回):未知の混合パラメータ → すべてを学習!
このプレビュー問題は、単一成分の学習から完全な混合モデルの推論へと橋渡しします。
なぜこれが重要か
混合モデルはあらゆる場所に登場します:
- 生物学:測定値から細胞の種類を分類
- 金融:市場のレジーム(強気 vs. 弱気)を識別
- コンピュータービジョン:色のクラスターで画像をセグメント化
- 自然言語処理:文書のトピックモデリング
ガウス分布を用いた分類の理解は、クラスタリング、分類、教師なし学習の基礎となります!
次は何を学ぶか?
これまでに理解したこと:
- 共役事前分布を用いたベイズ学習
- データが届くたびに信念を更新する方法
- 事後予測分布
- 共役性が計算をエレガントにする理由
- プレビュー:混合モデルで観測値を分類する方法
しかし、私たちは 1 つの成分(単一のガウス分布)または 既知の混合パラメータ しか扱っていません。パラメータが未知の複数の成分 がある場合はどうすればよいでしょうか?
第 5 章では完全な問題に取り組みます:どの弁当がとんかつでどれがハンバーグかを学習しながら、同時に各種類の平均重量も学習します!
重要なまとめ
- ベイズ学習:事前分布から始まり → データを観測 → 事後分布へ更新
- 共役性:ガウス事前分布 + ガウス尤度 = ガウス事後分布
- 精度加重:事後分布は事前分布とデータの加重平均
- 逐次学習:1 回の観測ごとに更新可能
- 予測分布:事後の不確実性 + データ分散を合算
- GenJAX:解析的な更新または重点サンプリングで実装
次の章:ガウス混合モデル →
