فاز 1 · درس 6

مبانی احتمال و توزیع‌های آماری در یادگیری ماشین

نوع
مفهومی
زمان
حدود 75 دقیقه
زبان‌ها
Python
یک تخته گچی تیره که نمودار منحنی زنگوله‌ای توزیع نرمال و چند تاس مکعبی در کنار فرمول‌های ریاضی احتمال روی آن رسم شده است
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم پایه
  4. پیشامدها، فضاهای نمونه و احتمال
  5. احتمال شرطی و استقلال
  6. تابع جرم احتمال در برابر تابع چگالی احتمال
  7. توزیع‌های رایج
  8. امید ریاضی و واریانس
  9. توزیع‌های توأم و حاشیه‌ای
  10. چرا توزیع نرمال همه‌جا دیده می‌شود؟
  11. لگاریتم احتمال
  12. تابع Softmax به عنوان توزیع احتمال
  13. نمونه‌برداری
  14. پیاده‌سازی
  15. گام 1: مبانی احتمال
  16. گام 2: پیاده‌سازی PMF و PDF از صفر
  17. گام 3: امید ریاضی و واریانس
  18. گام 4: نمونه‌برداری از توزیع‌ها
  19. گام 5: تابع Softmax و لگاریتم احتمال
  20. گام 6: نمایش عملی قضیه‌ی حد مرکزی
  21. گام 7: مصورسازی
  22. استفاده از ابزارهای آماده
  23. تمرین‌ها
  24. راهنمایی‌ها
  25. اصطلاحات کلیدی
  26. برای مطالعه‌ی بیشتر

وقتی یک مدل زبانی کلمه‌ی بعدی را برمی‌گزیند یا یک شبکه‌ی عصبی تصویری را دسته‌بندی می‌کند، در اصل مشغول کار با توزیع‌های احتمال است. تابع زیان مشخص می‌کند خروجی مدل چقدر از واقعیت فاصله دارد و در هر گام بهینه‌سازی، پارامترها به‌گونه‌ای تنظیم می‌شوند که این توزیع‌ها به هم نزدیک شوند. بدون درک درست احتمال، مفاهیمی مثل ناپایداری در آموزش یا خروجی‌های نامعتبر (NaN) مبهم باقی می‌مانند.

در این درس، پایه‌های تئوری و پیاده‌سازی کاربردی مفاهیم احتمال را مرور می‌کنید: از تفاوت توابع جرم و چگالی احتمال (PMF و PDF) تا علت فراگیری توزیع نرمال با تکیه بر قضیه‌ی حد مرکزی. همچنین می‌آموزید که چطور با ترفندهای پایداری عددی در محاسبات Softmax و Log-Softmax، مانع از خطاهای سرریز و کم‌ریز در محاسبات عددی یادگیری ماشین شوید.

احتمال، زبانی است که هوش مصنوعی برای بیان عدم‌قطعیت به کار می‌برد.

اهداف یادگیری

  • پیاده‌سازی PMF و PDF از صفر برای توزیع‌های برنولی، رسته‌ای، پواسون، یکنواخت و نرمال
  • محاسبه‌ی امید ریاضی و واریانس، و استفاده از قضیه‌ی حد مرکزی برای تبیین این‌که چرا توزیع‌های گاوسی همه‌جا حضور دارند
  • پیاده‌سازی توابع softmax و log-softmax با ترفند پایداری عددی (کم کردن بیشینه‌ی لاجیت)
  • محاسبه‌ی تابع زیان کراس‌انتروپی (Cross-entropy loss) بر اساس لاجیت‌ها و برقراری ارتباط بین آن و منفیِ لگاریتم درست‌نمایی

صورت مسئله

یک دسته‌بند خروجی [0.03, 0.91, 0.06] را تولید می‌کند. یک مدل زبانی کلمه‌ی بعدی را از میان 50,000 گزینه‌ی ممکن برمی‌گزیند. یک مدل دیفیوژن با نمونه‌برداری از توزیع‌های یادگرفته‌شده تصویر می‌سازد. در تمام این موارد، احتمال در حال عمل است.

هر پیش‌بینی که یک مدل ارائه می‌دهد، یک توزیع احتمال است. هر تابع زیان مشخص می‌کند که توزیع پیش‌بینی‌شده چقدر از توزیع واقعی فاصله دارد. در هر گام آموزش، پارامترها به‌گونه‌ای تنظیم می‌شوند تا یک توزیع بیشتر شبیه به توزیع دیگر شود. بدون درک احتمال، نه می‌توانید مقالات یادگیری ماشین را بخوانید، نه اشکالی از یک مدل رفع کنید، و نه بفهمید چرا زیان آموزش مدل‌تان NaN شده است.

مفاهیم پایه

پیشامدها، فضاهای نمونه و احتمال

فضای نمونه SS مجموعه‌ی تمام برآمدهای ممکن است. یک پیشامد، زیرمجموعه‌ای از فضای نمونه به شمار می‌رود. احتمال، پیشامدها را به اعدادی بین 0 و 1 نگاشت می‌کند.

Coin flip:
  S = {H, T}
  P(H) = 0.5,  P(T) = 0.5

Single die roll:
  S = {1, 2, 3, 4, 5, 6}
  P(even) = P({2, 4, 6}) = 3/6 = 0.5

کل علم احتمال بر پایه‌ی سه اصل موضوع تعریف می‌شود:

  1. P(A)≥0P(A) \ge 0 برای هر پیشامد AA
  2. P(S)=1P(S) = 1 (همواره اتفاقی رخ می‌دهد)
  3. P(A or B)=P(A)+P(B)P(A \text{ or } B) = P(A) + P(B) وقتی که AA و BB نتوانند هم‌زمان رخ دهند

بقیه‌ی مباحث (قضیه‌ی بیز، امید ریاضی، توزیع‌ها) همگی از همین سه قاعده نتیجه می‌شوند.

احتمال شرطی و استقلال

P(A∣B)P(A \mid B) احتمال وقوع AA است، به شرطی که BB رخ داده باشد.

P(A|B) = P(A and B) / P(B)

Example: deck of cards
  P(King | Face card) = P(King and Face card) / P(Face card)
                      = (4/52) / (12/52)
                      = 4/12 = 1/3

دو پیشامد زمانی مستقل‌اند که آگاهی از یکی، هیچ اطلاعاتی درباره‌ی دیگری به ما ندهد:

Independent:P(A∣B)=P(A)Equivalent to:P(A and B)=P(A)⋅P(B)\begin{aligned} \text{Independent:} \quad & P(A \mid B) = P(A) \\ \text{Equivalent to:} \quad & P(A \text{ and } B) = P(A) \cdot P(B) \end{aligned}

پرتاب‌های متوالی سکه مستقل هستند. بیرون کشیدن کارت از دسته بدون جایگذاری، مستقل نیست.

تابع جرم احتمال در برابر تابع چگالی احتمال

متغیرهای تصادفی گسسته دارای تابع جرم احتمال (Probability Mass Function یا PMF) هستند. هر برآمد احتمال مشخصی دارد که می‌توانید مقدار آن را مستقیماً بخوانید.

PMF: P(X = k)

Fair die:
  P(X = 1) = 1/6
  P(X = 2) = 1/6
  ...
  P(X = 6) = 1/6

  Sum of all probabilities = 1

متغیرهای تصادفی پیوسته دارای تابع چگالی احتمال (Probability Density Function یا PDF) هستند. چگالی در یک نقطه‌ی منفرد، احتمال به حساب نمی‌آید. احتمال صرفاً از انتگرال‌گیریِ چگالی روی یک بازه به دست می‌آید.

PDF: f(x)

P(a <= X <= b) = integral of f(x) from a to b

f(x) can be greater than 1 (density, not probability)
integral from -inf to +inf of f(x) dx = 1

این تفاوت در یادگیری ماشین اهمیت زیادی دارد. خروجی مسائل دسته‌بندی از نوع PMF هستند (انتخاب‌های گسسته)، در حالی که فضاهای نهان در VAEها از PDF استفاده می‌کنند (پیوسته).

توزیع‌های رایج

برنولی (Bernoulli): یک آزمایش، دو برآمد ممکن. دسته‌بندی دودویی را مدل‌سازی می‌کند.

P(X=1)=pP(X=0)=1−pMean=p,Variance=p(1−p)\begin{aligned} P(X = 1) &= p \\ P(X = 0) &= 1 - p \\ \text{Mean} = p, &\quad \text{Variance} = p(1-p) \end{aligned}

رسته‌ای (Categorical): یک آزمایش، kk برآمد ممکن. دسته‌بندی چندکلاسه (خروجی softmax) را مدل‌سازی می‌کند.

P(X=i)=pi,where ∑ipi=1Example: P(cat)=0.7,P(dog)=0.2,P(bird)=0.1\begin{aligned} & P(X = i) = p_i, \quad \text{where } \textstyle\sum_i p_i = 1 \\ & \text{Example: } P(\text{cat}) = 0.7, \quad P(\text{dog}) = 0.2, \quad P(\text{bird}) = 0.1 \end{aligned}

یکنواخت (Uniform): همه‌ی برآمدها شانس یکسانی دارند. برای مقداردهی اولیه‌ی تصادفی به کار می‌رود.

Discrete:P(X=k)=1/n for k∈{1,…,n}Continuous:f(x)=1/(b−a) for x∈[a,b]\begin{aligned} \text{Discrete:} \quad & P(X = k) = 1/n \text{ for } k \in \lbrace 1, \ldots, n \rbrace \\ \text{Continuous:} \quad & f(x) = 1/(b-a) \text{ for } x \in [a, b] \end{aligned}

نرمال یا گاوسی (Normal / Gaussian): همان منحنی زنگوله‌ای معروف. با میانگین (μ\mu) و واریانس (σ2\sigma^2) مشخص می‌شود.

f(x) = (1 / sqrt(2*pi*sigma^2)) * exp(-(x - mu)^2 / (2*sigma^2))

Standard normal: mu = 0, sigma = 1
  68% of data within 1 sigma
  95% within 2 sigma
  99.7% within 3 sigma

پواسون (Poisson): شمارش پیشامدهای نادر در یک بازه‌ی ثابت. نرخ رخداد پیشامدها را مدل‌سازی می‌کند.

P(X=k)=λke−λk!Mean=λ,Variance=λ\begin{aligned} P(X = k) &= \frac{\lambda^k e^{-\lambda}}{k!} \\ \text{Mean} = \lambda, &\quad \text{Variance} = \lambda \end{aligned}

امید ریاضی و واریانس

امید ریاضی (Expected value) همان میانگین وزنیِ برآمدها است.

Discrete:E[X]=∑ixi P(X=xi)Continuous:E[X]=∫x f(x) dx\begin{aligned} \text{Discrete:} \quad & \mathbb{E}[X] = \sum_i x_i \, P(X = x_i) \\ \text{Continuous:} \quad & \mathbb{E}[X] = \int x \, f(x) \, dx \end{aligned}

واریانس (Variance) میزان پراکندگی حول میانگین را اندازه می‌گیرد.

Var(X)=E[(X−E[X])2]=E[X2]−(E[X])2Standard deviation=Var(X)\begin{aligned} \mathrm{Var}(X) &= \mathbb{E}[(X - \mathbb{E}[X])^2] = \mathbb{E}[X^2] - (\mathbb{E}[X])^2 \\ \text{Standard deviation} &= \sqrt{\mathrm{Var}(X)} \end{aligned}

در یادگیری ماشین، امید ریاضی به شکل تابع زیان ظاهر می‌شود (میانگین زیان روی توزیع داده‌ها). واریانس نیز پایداری مدل را نشان می‌دهد؛ واریانس بالا در گرادیان‌ها یعنی فرایند آموزش پر از نوفه است.

توزیع‌های توأم و حاشیه‌ای

یک توزیع توأم (Joint distribution) مانند P(X,Y)P(X, Y)، رفتار دو متغیر تصادفی را با هم توصیف می‌کند.

مثالی از PMF توأم (XX = وضعیت آب‌وهوا، YY = داشتن چتر):

Y=0Y=0 (بدون چتر) Y=1Y=1 (همراه با چتر) حاشیه‌ای P(X)P(X)
X=0X=0 (آفتابی) 0.40 0.10 P(X=0)=0.50P(X=0) = 0.50
X=1X=1 (بارانی) 0.05 0.45 P(X=1)=0.50P(X=1) = 0.50
حاشیه‌ای P(Y)P(Y) P(Y=0)=0.45P(Y=0) = 0.45 P(Y=1)=0.55P(Y=1) = 0.55 1.00

توزیع حاشیه‌ای (Marginal distribution) با جمع زدن روی متغیر دیگر به دست می‌آید:

P(X=x)=∑yP(X=x,Y=y)P(X = x) = \sum_{y} P(X = x, Y = y)

مجموع مقادیر هر سطر و ستون در جدول بالا، همان توزیع‌های حاشیه‌ای هستند.

چرا توزیع نرمال همه‌جا دیده می‌شود؟

قضیه‌ی حد مرکزی (Central Limit Theorem): میانگین تعداد زیادی متغیر تصادفی مستقل با توزیع یکسان، پس از مرکززدایی و مقیاس‌بندی با n\sqrt{n}، صرف‌نظر از شکل توزیع اولیه و تا زمانی که واریانس آن متناهی باشد، به توزیع نرمال میل می‌کند. همین موضوع برای مجموع مرکززدایی و مقیاس‌شده نیز برقرار است.

Roll 1 die:  uniform distribution (flat)
Average of 2 dice:  triangular (peaked)
Average of 30 dice: nearly perfect bell curve

This works for ANY starting distribution with finite variance.

به همین دلیل است که:

  • خطاهای اندازه‌گیری تقریباً نرمال هستند (حاصل اثر منابع متعدد، کوچک و مستقل)
  • مقداردهی اولیه‌ی وزن‌ها در شبکه‌های عصبی از توزیع نرمال استفاده می‌کند
  • نوفه‌ی گرادیان در SGD تقریباً نرمال است (مجموع گرادیان‌های نمونه‌های متعدد)
  • توزیع نرمال، توزیعی با بیشینه‌ی آنتروپی برای یک میانگین و واریانس مشخص است

لگاریتم احتمال

احتمالات خام دردسرهای محاسباتی به همراه دارند؛ ضرب کردن چندین احتمال کوچک در هم، خیلی زود باعث کم‌ریز (Underflow) عددی و صفر شدن نتیجه می‌شود.

P(sentence)=P(word1)⋅P(word2)⋅…⋅P(wordn)=0.01⋅0.003⋅0.02⋅…→0.0(underflow after ∼30 terms)\begin{aligned} P(\text{sentence}) &= P(\text{word}_1) \cdot P(\text{word}_2) \cdot \ldots \cdot P(\text{word}_n) \\ &= 0.01 \cdot 0.003 \cdot 0.02 \cdot \ldots \\ &\to 0.0 \quad \text{(underflow after } \sim 30 \text{ terms)} \end{aligned}

لگاریتم احتمال (Log probability) این مشکل را برطرف می‌کند؛ ضرب‌ها تبدیل به جمع می‌شوند.

log⁡P(sentence)=log⁡P(word1)+log⁡P(word2)+…+log⁡P(wordn)=−4.6+−5.8+−3.9+…→finite number (no underflow)\begin{aligned} \log P(\text{sentence}) &= \log P(\text{word}_1) + \log P(\text{word}_2) + \ldots + \log P(\text{word}_n) \\ &= -4.6 + -5.8 + -3.9 + \ldots \\ &\to \text{finite number (no underflow)} \end{aligned}

قواعد:

  • log⁡(a⋅b)=log⁡(a)+log⁡(b)\log(a \cdot b) = \log(a) + \log(b)
  • لگاریتم احتمال همیشه ≤0\le 0 است (چون 0<P≤10 < P \le 1)
  • مقدار منفی‌تر = احتمال کمتر
  • زیان کراس‌انتروپی همان منفیِ لگاریتم احتمال کلاس صحیح است

تابع Softmax به عنوان توزیع احتمال

شبکه‌های عصبی امتیازهای خامی به نام لاجیت (Logit) تولید می‌کنند. تابع softmax این مقادیر را به یک توزیع احتمال معتبر تبدیل می‌کند.

softmax(z_i) = exp(z_i) / sum(exp(z_j) for all j)

Properties:
  - All outputs are in (0, 1)
  - All outputs sum to 1
  - Preserves relative ordering of inputs
  - exp() amplifies differences between logits

ترفند نرم‌مکس: پیش از به توان رساندن، بیشینه‌ی لاجیت‌ها را کم کنید تا از سرریز شدن (Overflow) اعداد جلوگیری شود.

z = [100, 101, 102]
exp(102) = overflow

z_shifted = z - max(z) = [-2, -1, 0]
exp(0) = 1  (safe)

Same result, no overflow.

تابع Log-softmax برای حفظ پایداری عددی، نرم‌مکس و لگاریتم را ترکیب می‌کند. PyTorch در محاسبات داخلی زیان کراس‌انتروپی از همین تابع بهره می‌برد.

نمونه‌برداری

نمونه‌برداری (Sampling) یعنی بیرون کشیدن مقادیر تصادفی از یک توزیع. در یادگیری ماشین:

  • لایه‌ی Dropout به‌طور تصادفی نمونه‌برداری می‌کند که کدام نورون‌ها صفر شوند
  • افزایش داده‌ها (Data augmentation) تبدیل‌های تصادفی را نمونه‌برداری می‌کند
  • مدل‌های زبانی توکن بعدی را از روی توزیع پیش‌بینی‌شده نمونه‌برداری می‌کنند
  • مدل‌های دیفیوژن نوفه را نمونه‌برداری کرده و گام‌به‌گام از آن نوفه‌زدایی می‌کنند

نمونه‌برداری از توزیع‌های دلخواه به تکنیک‌هایی مثل نمونه‌برداری تبدیل معکوس، نمونه‌برداری طردی یا ترفند بازپارامترسازی (مورد استفاده در VAEها) نیاز دارد.

تابع چگالی احتمال گاوسیμ و σ را بکشید
GAUSSIAN PDFThe mean slides the bell sideways; the standard deviation sets its width. A smaller σ makes a taller, narrower peak, since the total area stays fixed at 1. The shaded band is μ ± σ, which always captures about 68% of the probability no matter where you put the curve.
میانگین نمودار زنگوله‌ای را به چپ و راست می‌برد؛ انحراف معیار عرض آن را تعیین می‌کند. σ کوچک‌تر قله‌ای بلندتر و باریک‌تر می‌سازد، چرا که مساحت کل همواره روی 1 ثابت است. ناحیه سایه‌خورده μ ± σ است که صرف‌نظر از مکان منحنی، همیشه حدود 68% از احتمال را پوشش می‌دهد.

پیاده‌سازی

گام 1: مبانی احتمال

import math
import random

def factorial(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

def combinations(n, k):
    return factorial(n) // (factorial(k) * factorial(n - k))

def conditional_probability(p_a_and_b, p_b):
    return p_a_and_b / p_b

p_king_given_face = conditional_probability(4/52, 12/52)
print(f"P(King | Face card) = {p_king_given_face:.4f}")

گام 2: پیاده‌سازی PMF و PDF از صفر

def bernoulli_pmf(k, p):
    return p if k == 1 else (1 - p)

def categorical_pmf(k, probs):
    return probs[k]

def poisson_pmf(k, lam):
    return (lam ** k) * math.exp(-lam) / factorial(k)

def uniform_pdf(x, a, b):
    if a <= x <= b:
        return 1.0 / (b - a)
    return 0.0

def normal_pdf(x, mu, sigma):
    coeff = 1.0 / (sigma * math.sqrt(2 * math.pi))
    exponent = -0.5 * ((x - mu) / sigma) ** 2
    return coeff * math.exp(exponent)

گام 3: امید ریاضی و واریانس

def expected_value(values, probabilities):
    return sum(v * p for v, p in zip(values, probabilities))

def variance(values, probabilities):
    mu = expected_value(values, probabilities)
    return sum(p * (v - mu) ** 2 for v, p in zip(values, probabilities))

die_values = [1, 2, 3, 4, 5, 6]
die_probs = [1/6] * 6
mu = expected_value(die_values, die_probs)
var = variance(die_values, die_probs)
print(f"Die: E[X] = {mu:.4f}, Var(X) = {var:.4f}, SD = {var**0.5:.4f}")

گام 4: نمونه‌برداری از توزیع‌ها

def sample_bernoulli(p, n=1):
    return [1 if random.random() < p else 0 for _ in range(n)]

def sample_categorical(probs, n=1):
    cumulative = []
    total = 0
    for p in probs:
        total += p
        cumulative.append(total)
    samples = []
    for _ in range(n):
        r = random.random()
        for i, c in enumerate(cumulative):
            if r <= c:
                samples.append(i)
                break
    return samples

def sample_normal_box_muller(mu, sigma, n=1):
    samples = []
    for _ in range(n):
        u1 = random.random()
        u2 = random.random()
        z = math.sqrt(-2 * math.log(u1)) * math.cos(2 * math.pi * u2)
        samples.append(mu + sigma * z)
    return samples

گام 5: تابع Softmax و لگاریتم احتمال

def softmax(logits):
    max_logit = max(logits)
    shifted = [z - max_logit for z in logits]
    exps = [math.exp(z) for z in shifted]
    total = sum(exps)
    return [e / total for e in exps]

def log_softmax(logits):
    max_logit = max(logits)
    shifted = [z - max_logit for z in logits]
    log_sum_exp = max_logit + math.log(sum(math.exp(z) for z in shifted))
    return [z - log_sum_exp for z in logits]

def cross_entropy_loss(logits, target_index):
    log_probs = log_softmax(logits)
    return -log_probs[target_index]

گام 6: نمایش عملی قضیه‌ی حد مرکزی

def demonstrate_clt(dist_fn, n_samples, n_averages):
    averages = []
    for _ in range(n_averages):
        samples = [dist_fn() for _ in range(n_samples)]
        averages.append(sum(samples) / len(samples))
    return averages

گام 7: مصورسازی

import matplotlib.pyplot as plt

xs = [mu + sigma * (i - 500) / 100 for i in range(1001)]
ys = [normal_pdf(x, mu, sigma) for x, mu, sigma in ...]
plt.plot(xs, ys)

پیاده‌سازی کامل همراه با همه‌ی مصورسازی‌ها در فایل code/probability.py موجود است.

استفاده از ابزارهای آماده

با NumPy و SciPy، تمام کارهای بالا در قالب تک‌خطی‌ها انجام می‌شوند:

import numpy as np
from scipy import stats

normal = stats.norm(loc=0, scale=1)
samples = normal.rvs(size=10000)
print(f"Mean: {np.mean(samples):.4f}, Std: {np.std(samples):.4f}")
print(f"P(X < 1.96) = {normal.cdf(1.96):.4f}")

logits = np.array([2.0, 1.0, 0.1])
from scipy.special import softmax, log_softmax
probs = softmax(logits)
log_probs = log_softmax(logits)
print(f"Softmax: {probs}")
print(f"Log-softmax: {log_probs}")

این‌ها را از صفر پیاده کردید؛ حالا دیگر می‌دانید فراخوانی‌های کتابخانه‌ای پشت صحنه چه می‌کنند.

تمرین‌ها

  1. نمونه‌برداری تبدیل معکوس را برای توزیع نمایی پیاده‌سازی کنید. با نمونه‌برداری از 10,000 مقدار و مقایسه‌ی هیستوگرام با PDF واقعی، صحت آن را بررسی کنید.

  2. یک جدول توزیع توأم برای دو تاس دست‌کاری‌شده بسازید. توزیع‌های حاشیه‌ای را محاسبه کرده و بررسی کنید که آیا تاس‌ها مستقل هستند یا خیر.

  3. میزان زیان کراس‌انتروپی را برای یک دسته‌بند 5‌کلاسه با لاجیت‌های خروجی [2.0, 0.5, -1.0, 3.0, 0.1] در شرایطی که کلاس صحیح اندیس 3 است محاسبه کنید. سپس پاسخ خود را با nn.CrossEntropyLoss در PyTorch اعتبارسنجی کنید.

  4. تابعی بنویسید که لیستی از مقادیر لگاریتم احتمال را بگیرد و محتمل‌ترین توالی، مجموع لگاریتم احتمال، و احتمال خام معادل آن را برگرداند. آن را با جمله‌ای 50‌کلمه‌ای که هر کلمه‌اش احتمال 0.01 دارد آزمایش کنید.

راهنمایی‌ها

تمرین 1. مقدار u را از یک توزیع یکنواخت بیرون بکشید و −ln⁡(1−u)/λ-\ln(1 - u) / \lambda را برگردانید. بررسی کنید که میانگین نمونه به 1/λ1/\lambda نزدیک باشد و ستون‌های هیستوگرام از λe−λx\lambda e^{-\lambda x} پیروی کنند.

تمرین 2. یک جدول 6x6 را طوری پر کنید که هر خانه یک احتمال باشد و جمع کل خانه‌ها به 1 برسد؛ سپس joint_to_marginals را فراخوانی کنید. از check_independence استفاده کنید: تاس‌ها تنها در صورتی مستقل هستند که مقدار هر خانه با حاصل‌ضرب دو حاشیه‌ایِ متناظرش برابر باشد.

تمرین 3. تابع softmax را روی لاجیت‌ها اعمال کرده و −ln⁡-\ln احتمال مربوط به اندیس 3 را محاسبه کنید. نتیجه باید نزدیک به 0.421 باشد؛ یعنی همان مقداری که nn.CrossEntropyLoss برای همین لاجیت‌ها و تارگت برمی‌گرداند.

تمرین 4. لگاریتم احتمالات را با هم جمع کنید؛ احتمالات خام را در هم ضرب نکنید. برای 50 کلمه با احتمال 0.01، مجموع باید برابر با 50ln⁡(0.01)≈−230.2650 \ln(0.01) \approx -230.26 و احتمال خام معادل آن برابر با 10−10010^{-100} باشد.

اصطلاحات کلیدی

اصطلاح در گفتگوهای عامیانه معنای دقیق فنی
فضای نمونه (Sample space) «همه‌ی حالت‌های ممکن» مجموعه‌ی SS شامل تک‌تک برآمدهای ممکن از یک آزمایش
تابع جرم احتمال (PMF) «تابع احتمال» تابعی که احتمال دقیق هر برآمد گسسته را به دست می‌دهد و مجموع مقادیر آن برابر 1 است
تابع چگالی احتمال (PDF) «منحنی احتمال» تابع چگالی برای متغیرهای پیوسته؛ برای محاسبه‌ی احتمال باید روی یک بازه از آن انتگرال گرفت
احتمال شرطی (Conditional probability) «احتمال به شرطِ یک چیز دیگر» P(A∣B)=P(A and B)/P(B)P(A \mid B) = P(A \text{ and } B) / P(B)؛ پایه‌ی تفکر بیزی و قضیه‌ی بیز
استقلال (Independence) «ربطی به هم ندارند» P(A and B)=P(A)⋅P(B)P(A \text{ and } B) = P(A) \cdot P(B)؛ دانستن یک پیشامد هیچ اطلاعاتی درباره‌ی دیگری به دست نمی‌دهد
امید ریاضی (Expected value) «میانگین» مجموع برآمدها با وزن‌دهی احتمال آن‌ها؛ تابع زیان در اصل یک امید ریاضی است
واریانس (Variance) «میزان پراکندگی» امید ریاضی مجذور انحراف از میانگین؛ واریانس بالا یعنی تخمین‌های ناپایدار و پر از نوفه
توزیع نرمال (Normal distribution) «منحنی زنگوله‌ای» f(x)=(1/2πσ2)⋅exp⁡(−(x−μ)2/(2σ2))f(x) = (1/\sqrt{2\pi\sigma^2}) \cdot \exp(-(x-\mu)^2/(2\sigma^2))؛ به علت CLT در همه‌جا دیده می‌شود
قضیه‌ی حد مرکزی (Central Limit Theorem) «میانگین‌ها نرمال می‌شوند» میانگین مرکززدایی و مقیاس‌شده‌ی نمونه‌های مستقل پرتعداد، برای هر منبعی با واریانس متناهی، به سمت توزیع نرمال میل می‌کند
توزیع توأم (Joint distribution) «دو متغیر در کنار هم» P(X,Y)P(X, Y) احتمال هم‌زمانی هر ترکیبی از برآمدهای XX و YY را توصیف می‌کند
توزیع حاشیه‌ای (Marginal distribution) «جمع زدن روی متغیر دیگر» P(X)=∑yP(X,Y)P(X) = \sum_y P(X, Y)؛ استخراج توزیع یک متغیر از دل توزیع توأم
لگاریتم احتمال (Log probability) «لگاریتمِ احتمال» log⁡P(x)\log P(x)؛ ضرب‌ها را به جمع تبدیل می‌کند و جلوی کم‌ریز عددی در توالی‌های طولانی را می‌گیرد
نرم‌مکس (Softmax) «تبدیل امتیازها به احتمال» softmax(zi)=exp⁡(zi)/∑jexp⁡(zj)\text{softmax}(z_i) = \exp(z_i) / \sum_j \exp(z_j)؛ نگاشت لاجیت‌های با مقادیر حقیقی به یک توزیع احتمال معتبر
کراس‌انتروپی (Cross-entropy) «همان تابع زیان» −∑ptrue⋅log⁡(ppredicted)-\sum p_{\text{true}} \cdot \log(p_{\text{predicted}})؛ اندازه‌گیری میزان تفاوت میان دو توزیع؛ هرچه کمتر باشد بهتر است
لاجیت‌ها (Logits) «خروجی‌های خام مدل» امتیازهای نرمال‌نشده پیش از softmax؛ برگرفته از نام تابع لجستیک
نمونه‌برداری (Sampling) «انتخاب مقادیر تصادفی» تولید مقادیر بر اساس یک توزیع احتمال مشخص؛ شیوه‌ای که مدل‌ها خروجی تولید می‌کنند

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درستفاوت بین تابع جرم احتمال (PMF) و تابع چگالی احتمال (PDF) چیست؟
  2. پیش از درسقضیه حد مرکزی چه چیزی را بیان می‌کند؟
  3. پس از درسچرا softmax قبل از نمایی کردن، بیشینه لاجیت را کم می‌کند (تکنیک softmax)؟
  4. پس از درسزیان کراس انتروپی برای دسته‌بندی به -log(q(true_class)) ساده می‌شود. این مفهوم به صورت شهودی به چه معناست؟
  5. پس از درسچرا مدل‌های زبانی به جای احتمالات خام با لگاریتم احتمالات کار می‌کنند؟

سؤالات متداول

تفاوت اصلی PMF و PDF در یادگیری ماشین چیست؟

تابع جرم احتمال (PMF) برای متغیرهای گسسته مانند دسته‌بندی کلاس‌ها است و مقدار هر نقطه مستقیماً احتمال را نشان می‌دهد؛ اما تابع چگالی احتمال (PDF) برای متغیرهای پیوسته نظیر فضای نهان VAE است و احتمال فقط از طریق انتگرال‌گیری روی یک بازه به دست می‌آید.

چرا در شبکه‌های عصبی به‌جای احتمال خام از لگاریتم احتمال استفاده می‌شود؟

ضرب متوالی احتمالات کوچک باعث کم‌ریز عددی (Underflow) و صفر شدن مقدار در رایانه می‌شود. گرفتن لگاریتم، ضرب‌ها را به جمع تبدیل کرده و پایداری محاسبات را تضمین می‌کند.

ترفند پایداری عددی در محاسبه Softmax چگونه کار می‌کند؟

پیش از محاسبه‌ی توان نمایی روی لاجیت‌ها، بیشینه‌ی آن‌ها را از تمام مقادیر کم می‌کنیم؛ این کار خروجی نمایی را در بازه‌ی امن نگه داشته و از سرریز عددی (Overflow) جلوگیری می‌کند بدون اینکه نتیجه‌ی نهایی تغییر کند.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.