はじめに: なぜ確率が AI の基礎となるのか
機械学習は本質的に次の問題です。 不確実性の下での推論。 データにはノイズが多く、モデルは近似値であり、予測は常に確率的です。 確率は、この不確実性を定量化し、意思決定を行うための数学的枠組みを与えてくれます。 知らされた。
この記事では、基本 (条件付き確率、分布) から概念までを説明します。 のように進歩した ベイズの定理, la 最尤推定、 アプローチ間の比較 頻度主義とベイジアン.
何を学ぶか
- 条件付き確率と独立性
- 分布: ガウス分布、ベルヌーイ分布、カテゴリー分布、ポアソン分布
- ベイズの定理: データによる信念の更新
- 最尤推定 (MLE)
- 最大事後確率 (MAP) とベイジアン アプローチ
- 中心極限定理とその意味
基礎: 確率と確率変数
La チャンス イベントの A および 0 から 1 までの数値 そのイベントが発生する可能性を測定します。 P(A) \\in [0, 1].
La 条件付き確率 di A 与えられた B ~の確率を測定します A それを知って B そしてそれは起こりました:
イベントは2つあります 独立した se P(A \\cap B) = P(A) \\cdot P(B)、 つまり、一方が起こったことを知っていても、もう一方の確率は変わりません。
期待値と分散
Il 期待値 確率変数の (平均) X:
La 分散 平均値付近の分散を測定します。
La 標準偏差 \\sigma = \\sqrt{\\text{Var}(X)} と同じ測定単位を持ちます Xしたがって、より解釈しやすくなります。
ML の基本的な分布
ベルヌーイ分布
2 つの結果 (成功/失敗) を持つ 1 つの実験をモデル化します。パラメータ: p (成功の確率)。
機械学習で: モデルのバイナリ分類。シグモイド e を持つニューロンの出力 パラメータ p ベルヌーイの。
ガウス分布 (正規分布)
平均によってパラメータ化された、統計と ML で最も重要な分布 \\mu と分散 \\シグマ^2:
なぜどこでも: 中心極限定理による、多くの変数の合計 独立したランダム分布は、元の分布に関係なく、ガウス分布になる傾向があります。
機械学習で: 重みの初期化 (ガウス分布 \\μ = 0)、 データ内のノイズ、ガウス混合モデル、VAE (変分オートエンコーダー)。
カテゴリ分布 (多項分布)
ベルヌーイ a の一般化 K 確率のあるクラス p_1、p_2、\\ldots、p_K どこ \\sum_i p_i = 1:
機械学習で: ソフトマックス モデルのカテゴリ分布の出力 K クラス。
import numpy as np
from scipy import stats
# Bernoulli: lancio di una moneta truccata (p=0.7)
bernoulli = stats.bernoulli(p=0.7)
samples = bernoulli.rvs(size=1000)
print(f"Bernoulli - Media empirica: {samples.mean():.3f} (attesa: 0.7)")
# Gaussiana: altezze (media=170cm, std=10cm)
gaussian = stats.norm(loc=170, scale=10)
heights = gaussian.rvs(size=1000)
print(f"Gaussiana - Media: {heights.mean():.1f}, Std: {heights.std():.1f}")
# Probabilità di essere tra 160 e 180
prob = gaussian.cdf(180) - gaussian.cdf(160)
print(f"P(160 < X < 180) = {prob:.4f}")
# Categorica: dadi a 6 facce
probs = np.array([1/6] * 6)
categorical_samples = np.random.choice(6, size=1000, p=probs) + 1
print(f"Dado - Media: {categorical_samples.mean():.2f} (attesa: 3.5)")
ベイズの定理: 信念を更新する
Il ベイズの定理 推論のための最も強力なツールの 1 つ 確率的な。これにより、仮説の確率についての信念を更新することができます いくつかのデータを観察した後:
どこ:
- P(\\シータ | D) - 後方: データ後に信念が更新されました
- P(D | \\シータ) - 可能性: データにモデルが与えられる可能性の高さ
- P(\\シータ) - Prior: データ前の初期信念
- P(D) - 証拠: データの周辺確率 (正規化定数)
直感: ベイズは、最初の信念 (事前) から始めるように言っています。 データ (可能性) を観察し、2 つの情報を組み合わせて信念を取得します。 更新しました(後部)。観察するデータが増えるほど、事後分布は尤度によって支配されるようになります 以前よりも減りました。
実践例: 単純ベイズ分類器
import numpy as np
from collections import Counter
# Dataset: email spam detection
# Feature: numero di parole "gratis", "offerta", "ciao"
X_train = np.array([
[3, 2, 0], # spam
[4, 3, 1], # spam
[0, 0, 3], # non-spam
[1, 0, 4], # non-spam
[5, 4, 0], # spam
[0, 1, 2], # non-spam
])
y_train = np.array([1, 1, 0, 0, 1, 0]) # 1=spam, 0=non-spam
# Naive Bayes: P(spam|features) proporzionale a P(features|spam) * P(spam)
# Calcolo prior
n_spam = np.sum(y_train == 1)
n_ham = np.sum(y_train == 0)
p_spam = n_spam / len(y_train)
p_ham = n_ham / len(y_train)
print(f"P(spam) = {p_spam:.3f}, P(ham) = {p_ham:.3f}")
# Calcolo media e varianza per feature (likelihood Gaussiana)
spam_mean = X_train[y_train == 1].mean(axis=0)
spam_var = X_train[y_train == 1].var(axis=0) + 1e-6
ham_mean = X_train[y_train == 0].mean(axis=0)
ham_var = X_train[y_train == 0].var(axis=0) + 1e-6
def gaussian_log_likelihood(x, mean, var):
return -0.5 * np.sum(np.log(2 * np.pi * var) + (x - mean)**2 / var)
# Classifica nuova email
x_new = np.array([4, 3, 0])
log_p_spam = np.log(p_spam) + gaussian_log_likelihood(x_new, spam_mean, spam_var)
log_p_ham = np.log(p_ham) + gaussian_log_likelihood(x_new, ham_mean, ham_var)
print(f"Log P(spam|x) proporzionale a: {log_p_spam:.4f}")
print(f"Log P(ham|x) proporzionale a: {log_p_ham:.4f}")
print(f"Classificazione: {'SPAM' if log_p_spam > log_p_ham else 'HAM'}")
最尤推定 (MLE)
La MLE 観測されたデータの可能性を高めるモデル パラメーターを見つけます。 一連の独立した観察を考慮すると、 D = \\{x_1, \\ldots, x_n\\}、 可能性は次のとおりです。
実際には、 対数尤度 (積を合計に変換します):
最大値を見つけるには、導関数を計算し、それをゼロに設定します。 \\frac{d\\ell}{d\\theta} = 0.
例: ガウスの MLE
ガウス データの場合、パラメーターの MLE は次のとおりです。
つまり、サンプルの平均と分散は MLE 推定値です。 ML とのつながりは深いです。 クロスエントロピー損失を最小限に抑えることは、対数尤度を最大化することと同じです.
最大事後分布 (MAP)
La 地図 パラメータに事前確率を追加し、尤度と事前確率を組み合わせます。
ガウス事前分布を使用した場合 P(\\シータ) \\sim \\mathcal{N}(0, \\sigma_p^2)、 用語 \\log P(\\シータ) は重みに対する L2 ペナルティになります。これが、 L2 (リッジ) 正則化は、重みに関する事前ガウス分布と同等です。.
import numpy as np
from scipy.optimize import minimize_scalar
# Dati osservati (altezze in cm)
data = np.array([168, 172, 175, 170, 173, 169, 171, 174, 176, 170])
# MLE: media e varianza campionaria
mu_mle = np.mean(data)
sigma2_mle = np.var(data)
print(f"MLE: mu={mu_mle:.2f}, sigma^2={sigma2_mle:.2f}")
# Log-likelihood function
def neg_log_likelihood(mu, data=data, sigma2=sigma2_mle):
n = len(data)
return 0.5 * n * np.log(2 * np.pi * sigma2) + np.sum((data - mu)**2) / (2 * sigma2)
# MAP con prior Gaussiano: mu ~ N(170, 5^2)
prior_mu = 170
prior_sigma2 = 25
def neg_log_posterior(mu):
nll = neg_log_likelihood(mu)
neg_log_prior = (mu - prior_mu)**2 / (2 * prior_sigma2)
return nll + neg_log_prior
result_mle = minimize_scalar(neg_log_likelihood, bounds=(150, 190), method='bounded')
result_map = minimize_scalar(neg_log_posterior, bounds=(150, 190), method='bounded')
print(f"MLE mu: {result_mle.x:.4f}")
print(f"MAP mu: {result_map.x:.4f} (shrunk verso prior {prior_mu})")
中心極限定理
Il 中心極限定理 (CLT) は、多くの値の合計 (または平均) が 独立した確率変数は、元の分布が何であれ、次の傾向にあります。 ガウス分布:
これは、ガウス分布がどこにでも現れる理由を説明します: ニューロンの重み = 多数の小さなニューロンの合計 アップデート、センサー内のノイズ = 多くの小さな摂動の合計など。
概要と ML との関係
覚えておくべき重要なポイント
- ベイズ: P(\\シータ|D) \\プロプト P(D|\\シータ) P(\\シータ) - データで信念を更新する
- ガウス: 最も一般的なディストリビューション。CLT のおかげでどこにでも現れます。
- MLE: 観測データの確率を最大化するパラメータを見つけます
- 地図: MLE + 事前、正則化と同等
- クロスエントロピー損失 = 負の対数尤度: 基本的な接続
- L2 正則化 = 事前ガウス: 確率的な関係
次の記事で: を探索してみます最適化 ML用。 勾配降下法、SGD、Adam、運動量、学習率のスケジューリング戦略について見ていきます。 これにより、モデルが収束するか発散するかが決まります。







