確率入門 -- 標本空間、事象と条件付き確率

確率論はAIが不確実性を扱うための中心的なツールである。分類器の出力から生成モデルのサンプリングまで、確率は至る所にある。


概念の解説

標本空間

すべての可能な結果の集合

サイコロを振る: {1,2,3,4,5,6}

事象

標本空間の部分集合

「偶数」= {2,4,6}

確率 P(A)

Aが起こる可能性、[0,1]

0=不可能、1=必然

条件付き確率:一部の情報を知った後に判断を更新する

\[ P(A|B) = \frac{P(A \cap B)}{P(B)} \]

直感的には:標本空間をBが起こる範囲に縮めて、その中でAが占める割合を見る。

全確率の公式:場合分けして総合する

\[ P(A) = \sum_i P(A|B_i) P(B_i) \]

身近な例

大数の法則

コインを10回投げると、表4回裏6回の可能性もある。10000回投げれば、表の割合は必ず0.5に非常に近くなる。

回数が多ければ多いほど、頻度は安定する——これが確率論の基盤である。


Python で実践する

例

import numpy as np

# 大数定律验证
for n in [10, 100, 1000, 10000]:
    tosses = np.random.choice(['H','T'], size=n)
    freq = np.mean(tosses == 'H')
    print(f"サンプル 掷{n:5d}次, 正面频率={freq:.4f}")

# 蒙提霍尔问题:换门胜率 2/3
def monty_hall(switch=True, trials=10000):
    wins = 0
    for _ in range(trials):
        car = np.random.randint(0, 3)
        choice = np.random.randint(0, 3)
        revealed = np.random.choice([d for d in range(3) if d != car and d != choice])
        if switch:
            choice = [d for d in range(3) if d != choice and d != revealed][0]
        wins += (choice == car)
    return wins/trials

print(f"\n"蒙提霍尔: 不换={monty_hall(False):.3f}, 换={monty_hall(True):.3f} (理论: 1/3, 2/3)")

出力:

サンプル 掷   10次, 正面频率=0.8000
サンプル 掷  100次, 正面频率=0.5500
サンプル 掷 1000次, 正面频率=0.4870
サンプル 掷10000次, 正面频率=0.4987

蒙提霍尔: 不换=0.329, 换=0.663 (理论: 1/3, 2/3)

AI での応用シーン

分類器の出力 = 確率分布

Softmaxは各カテゴリの確率を出力し、全カテゴリの確率の合計は1になる。モデルは「これは猫だ」と伝えるだけでなく、「80%の確率で猫、15%で犬、5%でその他」とも伝える。このような確率出力はリスク評価や信頼度キャリブレーションにとって極めて重要である。

生成モデル = 確率分布からのサンプリング

VAEは学習した潜在分布からサンプリングして新しい画像を生成し、GANはランダムなノイズ分布からサンプリングしてリアルな画像を生成し、拡散モデルは純粋なノイズから始めて段階的にノイズを除去して高解像度画像を生成する。これらの生成プロセスの中心的な操作はすべて「何らかの確率分布からサンプリングする」ことである。

強化学習におけるランダムな方策

方策勾配法では、エージェントの行動は決定論的ではなく、方策ネットワークが出力する確率分布からサンプリングされる(例: 70%で左、30%で右)。このランダム性が探索を保証する——常に最も確率の高い行動を選んでいると、より良い方策を永遠に発見できないかもしれない。


その他の拡張