2  Olasılık ve Sayma

Belirsizlik nasıl sayılır: örnek uzay, naif tanım, çarpma kuralı, binom

NotBölüm bilgisi

2.1 Bu Derste Ne Var?

Bu, kursun ilk gerçek konu dersi. Blitzstein iki şey kuruyor: (1) olasılığın ne olduğu — yani belirsizliği nasıl sayıya çeviririz, ve (2) bunu hesaplayabilmek için ihtiyacımız olan ilk araç — sayma (counting).

Üç temel fikir:

  1. Örnek uzay ve olay — bir deneyin tüm olası sonuçlarının kümesi (örnek uzay) ve ilgilendiğimiz sonuç alt-kümesi (olay).
  2. Olasılığın naif tanımı — “lehte sonuç / toplam sonuç”. Basit ama iki güçlü varsayıma dayanıyor: tüm sonuçlar eşit olası ve sonlu sayıda.
  3. Sayma — naif tanımın payını ve paydasını bulabilmek için çarpma kuralı, binom katsayısı ve örnekleme tablosu.
flowchart LR
    A["🎲 Deney"] --> B["Örnek Uzay S<br/>(tüm sonuçlar)"]
    B --> C["Olay A ⊆ S<br/>(ilgilenilen alt-küme)"]
    C --> D["💡 Naif Tanım<br/>P(A) = |A| / |S|"]
    D --> E["Saymak gerek!"]
    E --> F["Çarpma Kuralı<br/>n₁ · n₂ · ⋯ · nᵣ"]
    F --> G["Binom Katsayısı<br/>C(n,k) = n! / (n−k)!k!"]
    G --> H["📊 Örnekleme Tablosu<br/>(2×2 = 4 hücre)"]

    style A fill:#fdf2f8,stroke:#A51C30,stroke-width:2px
    style D fill:#fff7ed,stroke:#DD6B20,stroke-width:2px
    style H fill:#eef2ff,stroke:#6B46C1,stroke-width:3px
flowchart LR
    A["🎲 Deney"] --> B["Örnek Uzay S<br/>(tüm sonuçlar)"]
    B --> C["Olay A ⊆ S<br/>(ilgilenilen alt-küme)"]
    C --> D["💡 Naif Tanım<br/>P(A) = |A| / |S|"]
    D --> E["Saymak gerek!"]
    E --> F["Çarpma Kuralı<br/>n₁ · n₂ · ⋯ · nᵣ"]
    F --> G["Binom Katsayısı<br/>C(n,k) = n! / (n−k)!k!"]
    G --> H["📊 Örnekleme Tablosu<br/>(2×2 = 4 hücre)"]

    style A fill:#fdf2f8,stroke:#A51C30,stroke-width:2px
    style D fill:#fff7ed,stroke:#DD6B20,stroke-width:2px
    style H fill:#eef2ff,stroke:#6B46C1,stroke-width:3px
Şekil 2.1: Ders 1’in kavram haritası: örnek uzay → naif tanım → sayma araçları

“Math is the logic of certainty, statistics is the logic of uncertainty.” — Blitzstein, 14:12

İpucuBuilder Notu — ML Köprüleri
  • Softmax çıktısı = olasılık dağılımı. Örnek uzay = sınıflar, \(P(\text{sınıf} \mid \text{girdi})\).
  • Cross-entropy loss = \(-\log P(\text{doğru etiket})\). Olasılığı maksimize etmek = loss’u minimize etmek (MLE).
  • Generative modeller (LLM, diffusion, VAE) doğrudan olasılık dağılımı öğrenir ve ondan örnekler üretir.
  • Saymanın disiplini = kombinatorik patlama. Bir LLM neden bütün cümleleri tek tek deneyemiyor: \(V^L\) olası dizi var. Bu yüzden örnekleme, beam search, MCMC.
  • Tek cümle: olasılık, bir modelin “emin değilim ama şu kadar eminim” demesinin matematiğidir.

2.2 Olasılık Nereye Uygulanır? Belirsizliğin Mantığı

Blitzstein dersin başında olasılığın nerelerde kullanıldığını sıralıyor — fizik (kuantum mekaniği baştan sona olasılık), genetik, ekonomi/ekonometri, oyun teorisi. Sonra daha az bariz örnekler: tarih. Mosteller ve Wallace, The Federalist Papers’ın (ABD Anayasası’nın onaylanmasıyla ilgili kritik metinler) tartışmalı yazarlığını Bayes kuralıyla çözmeye çalıştı — kim hangi makaleyi yazdı sorusunu olasılıkla yanıtladılar.

Olasılığın tarihsel kökü ise kumar. Konu buradan doğdu:

  • 1650’lerin ortasında Fermat ve Pascal, kumar oyunlarını analiz eden uzun mektuplar yazıştılar. O zamana kadar kimse bu kuralları matematiksel türetmemişti — ikisi mektuplaşarak olasılık teorisini sıfırdan kurdular.
  • Isaac Newton’a bile kumarbazlar zar soruları soruyordu, çünkü o devirde olasılığı bilen başka kimse yoktu. İlginç olan: Newton hesabı doğru yaptı ama sezgisi bir zar probleminde yanıldı.

Bu son nokta dersin ruhunu veriyor: olasılık derinden sezgi-karşıtı. Newton’ın bile sezgisi yanılabiliyorsa, bizimki de yanılacak — bu yüzden işi matematiksel kesinliğe bağlamak zorundayız.

“we’re going to do a lot of things that are deeply, deeply counterintuitive to almost everyone. … to me, that makes this more fun than calculus.” — Blitzstein, 19:03

İstatistik, kalkülüsten farklı olarak insanı şaşırtır. Blitzstein’in özlü tanımı: matematik kesinliğin mantığı, istatistik belirsizliğin mantığı. Herkesin belirsizliği vardır; olasılık ve istatistik, inançlarımızı niceliklendirme ve güncelleme yöntemidir.

İpucuBuilder Notu — İnanç Güncelleme

“İnançları güncelleme” ifadesini aklında tut — bu, birazdan göreceğin Bayes kuralının tam tanımı ve modern Bayesian ML’in (posterior güncelleme, belief propagation) çekirdeği. Mosteller-Wallace’ın 1960’larda yazar tespiti için yaptığı şey, bugün bir spam filtresinin (naive Bayes) yaptığıyla matematiksel olarak aynı: metin kanıtından yazar/sınıf olasılığını güncellemek. Diffusion modellerin ters adımı da bir Bayes güncellemesi: gürültülü görüntü \(x_t\) verildiğinde temiz \(x_0\)’ın posterior’ı.

2.3 Örnek Uzay ve Olay

Olasılığı tanımlamadan önce iki kavram gerekiyor.

Örnek uzay (sample space), bir deneyin tüm olası sonuçlarının kümesidir. Blitzstein “deney” kelimesini olabildiğince geniş yorumlamamızı istiyor — herhangi bir süreç, yeter ki farklı olası sonuçları olsun ve hangisinin gerçekleşeceğini önceden bilmeyelim.

“you should interpret the word experiment in an extremely broad manner. … as long as there are certain possible outcomes.” — Blitzstein, 15:28

Örnek uzayı genelde büyük \(S\) harfiyle gösteririz. Bir parayı iki kez attığımız deneyde örnek uzay dört sonuçtan oluşur (H = yazı/heads, T = tura/tails — Blitzstein’in notasyonunu koruyoruz):

\[ S = \{HH,\ HT,\ TH,\ TT\} \]

Olay (event), örnek uzayın bir alt-kümesidir. Yani ilgilendiğimiz sonuçların bir koleksiyonu. “Her iki atış da tura” olayı:

\[ A = \{TT\}, \quad A \subseteq S \]

“An event is a subset of the sample space.” — Blitzstein, 16:33

Olasılık teorisinin matematiksel bir konu olabilmesini sağlayan büyük atılım tam da buydu: olayları küme olarak düşünmek. Bundan önce insanlar olasılık problemlerini sezgiyle çözmeye çalışıyordu ve çoğu sezgisel kural yanlış çıkıyordu. Kümeler (birleşim \(\cup\), kesişim \(\cap\), tümleyen) sayesinde “\(A\) olayı veya \(B\) olayı”, “\(A\) ve \(B\)” gibi sezgisel ifadeler kesin matematiğe dönüştü. Bu kursta çok sayıda Venn diyagramı göreceksin.

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle, Circle, FancyBboxPatch

fig, axes = plt.subplots(1, 3, figsize=(11, 4.5))

# Sol: tüm sonuçlar grid'i
ax = axes[0]
sonuclar = [('HH', 0, 1), ('HT', 1, 1), ('TH', 0, 0), ('TT', 1, 0)]
for s, x, y in sonuclar:
    ax.add_patch(Rectangle((x, y), 0.95, 0.95, facecolor='#fef3c7',
                           edgecolor='#A51C30', linewidth=2))
    ax.text(x + 0.475, y + 0.475, s, ha='center', va='center',
            fontsize=18, weight='bold', color='#6B0E1B')
ax.set_xlim(-0.1, 2.05); ax.set_ylim(-0.1, 2.05)
ax.set_aspect('equal'); ax.set_title('Örnek uzay $S$ — 4 eşit-olası sonuç', fontsize=11)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)

# Orta: A = ilk T  (TH, TT)
ax = axes[1]
for s, x, y in sonuclar:
    renk = '#fb923c' if s.startswith('T') else '#f3f4f6'
    kenar = '#c2410c' if s.startswith('T') else '#9ca3af'
    ax.add_patch(Rectangle((x, y), 0.95, 0.95, facecolor=renk,
                           edgecolor=kenar, linewidth=2))
    ax.text(x + 0.475, y + 0.475, s, ha='center', va='center',
            fontsize=18, weight='bold')
ax.set_xlim(-0.1, 2.05); ax.set_ylim(-0.1, 2.05)
ax.set_aspect('equal')
ax.set_title('Olay $A$ = ilk atış T\n$|A| = 2$, $P(A) = 2/4 = 1/2$', fontsize=11)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)

# Sağ: A ∩ B = TT
ax = axes[2]
for s, x, y in sonuclar:
    if s == 'TT':
        renk, kenar = '#dc2626', '#7f1d1d'
    elif s.startswith('T') or s.endswith('T'):
        renk, kenar = '#fed7aa', '#9a3412'
    else:
        renk, kenar = '#f3f4f6', '#9ca3af'
    ax.add_patch(Rectangle((x, y), 0.95, 0.95, facecolor=renk,
                           edgecolor=kenar, linewidth=2))
    ax.text(x + 0.475, y + 0.475, s, ha='center', va='center',
            fontsize=18, weight='bold',
            color='white' if s == 'TT' else 'black')
ax.set_xlim(-0.1, 2.05); ax.set_ylim(-0.1, 2.05)
ax.set_aspect('equal')
ax.set_title('$A \\cap B$ = her iki atış T\n$|A \\cap B| = 1$, $P = 1/4$', fontsize=11)
ax.set_xticks([]); ax.set_yticks([])
for sp in ax.spines.values(): sp.set_visible(False)

plt.tight_layout()
plt.show()
Şekil 2.2
İpucuBuilder Notu — Destek ve State Space

Örnek uzay, bir olasılık dağılımının desteği (support) ile aynı kavram. Bir dil modelinde örnek uzay = sözlük (vocabulary); bir sonraki token’ın olası tüm değerleri. “Olay” ise bu sözlüğün bir alt-kümesi — örneğin “üretilen token bir noktalama işareti” bir olaydır. RL’de örnek uzayın karşılığı state space’tir. Olayları küme işlemleriyle birleştirme alışkanlığı, ileride birleşik / koşullu olasılıkları (joint / conditional) doğru kurmanın temeli.

2.4 Olasılığın Naif Tanımı

Artık olasılığı tanımlayabiliriz. Tüm kurs boyunca büyük \(P\) harfi “olasılık” demektir: \(P(A)\), yani “\(A\) olayının olasılığı”.

Naif tanım şöyle der: bir \(A\) olayının olasılığı, \(A\)’ya lehte (favorable) sonuçların sayısının, toplam olası sonuç sayısına oranıdır.

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

Burada \(|A|\) = \(A\)’ya lehte sonuç sayısı (\(A\) kümesinin eleman sayısı), \(|S|\) = örnek uzaydaki toplam sonuç sayısı. Pay “kaç tanesi istediğimiz şey”, payda “toplam kaç olasılık var”.

Örnek: parayı iki kez at. Örnek uzay \(S = \{HH, HT, TH, TT\}\), yani \(|S| = 4\). “Her iki atış da tura” olayı \(A = \{TT\}\), yani \(|A| = 1\). O hâlde:

\[ P(A) = \frac{1}{4} \]

Bu, lisede gördüğün olasılık tanımının ta kendisi: kaç olasılık var say, kaçı istediğin durum say, böl.

“we just count how many of those happen, divide by a number of things, that’s it. That’s the naive definition.” — Blitzstein, 24:34

İpucuBuilder Notu — Uniform = Maksimum Entropi

Naif tanım aslında sonlu bir küme üzerindeki düzgün (uniform) dağılımdır — her sonuca eşit ağırlık. Bilgi-teorik olarak bu, “elimde sadece sonlu sonuç var, başka hiçbir şey bilmiyorum” durumunun maksimum entropili dağılımıdır. ML’de karşılığı: bir sınıflandırıcıyı eğitmeye başlamadan önceki uniform prior, ya da rastgele tahmin eden baseline (10 sınıf varsa şans seviyesi 1/10). Payı/paydayı sayarak olasılık bulmak, dağılım gerçekten uniform olduğunda yapılan kesin (exact) çıkarımdır — Monte Carlo gibi yaklaşıklığa gerek kalmaz.

2.5 Naif Tanımın İki Varsayımı (ve Nerede Çöker)

Naif tanım bedava değil. İki güçlü varsayıma yaslanır:

  1. Tüm sonuçlar eşit olası.
  2. Sonlu sayıda sonuç var — yoksa payda sonsuz olur ve oran anlamını yitirir.

“It assumes that all outcomes are equally likely. … it also assumes that there are finitely many outcomes.” — Blitzstein, 24:48

Birinci varsayım ne zaman makul? Simetri olduğunda. Altı yüzü simetrik bir zar atıyorsan, her yüzün \(1/6\) olması mantıklı. Ama zar hileli (loaded) ise — bir tarafa ağırlık verilmişse — eşit olasılık varsayımı çöker. Yani “eşit olası” bedava bir varsayım değil; onu gerekçelendirmen gerekir (genelde simetriyle).

Gerekçesiz uygulanırsa naif tanım saçmalığa götürür. Blitzstein’in klasik örneği: “Neptün’de yaşam olma olasılığı nedir? Ya vardır ya yoktur, iki olasılık, demek ki \(1/2\).”

“either there is or there isn’t, that’s two possibilities. … so it’d be 1/2.” — Blitzstein, 26:19

Bu açıkça saçma. Daha da kötüsü: “Neptün’de akıllı yaşam olma olasılığı?” Yine ya vardır ya yoktur → \(1/2\). Oysa akıllı yaşam, herhangi bir yaşamdan kesinlikle daha az olası olmalı (akıllı yaşam \(\subseteq\) yaşam). Naif tanım bu kesin eşitsizliği yakalayamıyor — çünkü “iki seçenek var” demek onları eşit olası yapmaz.

Ders bu yüzden hızla naif tanımın ötesine geçecek. Ama naif tanım hâlâ önemli: hem konunun tarihsel doğuşu, hem de simetrinin geçerli olduğu (zar, kart, yazı-tura) bir sürü problemde doğru araç.

ÖnemliBuilder Notu — Base-Rate Neglect

“Eşit olası varsayımı gerekçe ister” dersi, ML’de uniform prior’ın tehlikesidir. Neptün safsatası = kendi uydurduğun bir bölümleme üzerine uniform dağılım dayatmak. Pratik karşılığı: sınıflar dengesizken (örneğin %1 dolandırıcılık) modelin uniform sınıf prior’ı varsayması onu kalibrasyonsuz yapar — gerçek base rate’i veriden öğrenmen gerekir. “İki seçenek var, demek ki 1/2” hatası, naive sınıflandırıcıları vuran base-rate neglect’in ta kendisidir; Bayesian prior tam da bunu düzeltir. Kısaca: dağılımları varsayma, veriden öğren.

2.6 Neden Saymak? Çarpma Kuralı

Naif tanımda payı ve paydayı bulmak için sonuçları saymamız gerekiyor. Dört sonuçlu para örneğini elle yazdık, ama gerçek problemlerde sonuçları tek tek listelemek imkânsız hâle gelir. Bu yüzden Blitzstein kursun ilk büyük teknik konusunu sayma olarak koyuyor:

“the first major topic in this class is, how do we count?” — Blitzstein, 28:20

İlk ve en temel araç çarpma kuralı (multiplication rule). Kural şöyle: bir deney sırayla \(r\) aşamadan oluşuyorsa ve

  • Aşama 1’de \(n_1\) olası sonuç,
  • her Aşama 1 sonucu için Aşama 2’de \(n_2\) olası sonuç,
  • ve önceki aşamalardan bağımsız olarak Aşama \(r\)’de \(n_r\) olası sonuç varsa,

birleşik deneyin toplam sonuç sayısı bu çarpımdır:

\[ n_1 \times n_2 \times \cdots \times n_r \]

Blitzstein’in dondurma örneği bunu somutlaştırır: 3 çeşit (çikolata, vanilya, çilek) ve 2 tip külah (kek, waffle). Kaç seçenek var? Bir ağaç diyagramı çiz — önce külah dalı 2’ye ayrılır, sonra her dal çeşit için 3’e ayrılır: \(2 \times 3 = 6\). Önce çeşidi seçsen de sonuç değişmez: \(3 \times 2 = 6\).

flowchart TD
    Root["🍦 Dondurma seç"]
    Root --> K1["Kek külah"]
    Root --> K2["Waffle külah"]
    K1 --> CC1["Çikolata"]
    K1 --> CV1["Vanilya"]
    K1 --> CS1["Çilek"]
    K2 --> CC2["Çikolata"]
    K2 --> CV2["Vanilya"]
    K2 --> CS2["Çilek"]
    style Root fill:#fdf2f8,stroke:#A51C30,stroke-width:2px
flowchart TD
    Root["🍦 Dondurma seç"]
    Root --> K1["Kek külah"]
    Root --> K2["Waffle külah"]
    K1 --> CC1["Çikolata"]
    K1 --> CV1["Vanilya"]
    K1 --> CS1["Çilek"]
    K2 --> CC2["Çikolata"]
    K2 --> CV2["Vanilya"]
    K2 --> CS2["Çilek"]
    style Root fill:#fdf2f8,stroke:#A51C30,stroke-width:2px
Şekil 2.3: Dondurma ağacı: 2 külah × 3 çeşit = 6 sonuç. Hangi sırayla seçtiğin önemsiz.

“once you understand this example completely, then all this stuff I wrote here becomes obvious.” — Blitzstein, 32:17

Kritik sezgi: bu çarpımlar üstel hızla büyür. Her adımda 2 seçenek ve 10 adım olsa \(2^{10} = 1024\) sonuç eder. İşte bu yüzden sonuçları elle listelemek umutsuz — saymanın kurallarına ihtiyacımız var.

import numpy as np
import matplotlib.pyplot as plt

L = np.arange(1, 21)
fig, ax = plt.subplots(figsize=(9, 5))

for V, color, label in [(2, '#fb923c', 'Yazı-tura: $V=2$'),
                          (6, '#A51C30', 'Zar: $V=6$'),
                          (52, '#2C5282', 'Kart: $V=52$'),
                          (1000, '#6B46C1', 'Mini sözlük: $V=1000$')]:
    ax.semilogy(L, V**L.astype(float), 'o-', color=color, linewidth=2.2,
                markersize=7, label=label)

ax.set_xlabel('Adım sayısı $L$', fontsize=12)
ax.set_ylabel('Toplam dizi sayısı $V^L$ (log ölçek)', fontsize=12)
ax.set_title('Kombinatorik patlama — çarpma kuralı üstel hızda büyür',
             fontsize=12)
ax.legend(loc='lower right', fontsize=10)
ax.grid(True, which='both', alpha=0.3)
ax.set_xticks(np.arange(1, 21, 2))
plt.tight_layout()
plt.show()
Şekil 2.4
İpucuBuilder Notu — Zincir Kuralı ve Beam Search

Çarpma kuralı, olasılığın zincir kuralının (chain rule) iskeletidir: \[p(x_1, \ldots, x_n) = p(x_1) \cdot p(x_2 \mid x_1) \cdots p(x_n \mid x_1, \ldots, x_{n-1})\] Bir autoregressive dil modeli tam da budur — her token bir aşama, sözlük boyutu \(V\) kadar seçenek; \(L\) token’lık bir dizi için \(V^L\) olası dizi vardır. Bu kombinatorik patlama modern üretimin neden bütün dizileri deneyemediğini ve neden örnekleme / beam search yaptığını açıklar. Blitzstein’in ağaç diyagramı, beam search’ün gezdiği arama ağacının ta kendisidir.

2.7 Binom Katsayısı

Çarpma kuralından çıkan en önemli sayma aracı binom katsayısı: “\(n\)’den \(k\) seç”. \(n\) nesneden, sırası önemsiz olacak şekilde \(k\) tanesini seçmenin kaç yolu olduğunu verir.

\[ \binom{n}{k} = \frac{n!}{(n-k)!\, k!} \]

(\(k > n\) ise tanım gereği \(0\)’dır — 10 kişiden 11 tanesini seçemezsin.)

“We’ll be seeing a lot of these in this course, those are called a binomial coefficient.” — Blitzstein, 36:01

Bu formül nereden geliyor? Doğrudan çarpma kuralından. Önce \(n\) kişiden \(k\) tanesini sıralı seçtiğimizi düşün: ilki için \(n\), ikincisi için \(n-1\), üçüncüsü için \(n-2\) seçenek… \(k\). seçim için \(n-k+1\) seçenek:

\[ n (n-1)(n-2) \cdots (n-k+1) \]

Ama biz sırayı umursamıyoruz. Aynı \(k\) kişilik grubu \(k!\) farklı sırada seçebilirdik — yani her grubu \(k!\) kez fazladan saydık. Bu fazlalığı düzeltmek için \(k!\)’e böleriz:

\[ \binom{n}{k} = \frac{n (n-1) \cdots (n-k+1)}{k!} = \frac{n!}{(n-k)!\, k!} \]

İki ifade aynıdır: faktöriyelleri açıp sadeleştirirsen \((n-k)!\) kısmı iptal olur ve ortadaki çarpım kalır.

import math
import matplotlib.pyplot as plt
import numpy as np

N = 10  # 0..10 satır
fig, ax = plt.subplots(figsize=(11, 5.5))

ust_max = math.comb(N, N//2)
for n in range(N + 1):
    for k in range(n + 1):
        c = math.comb(n, k)
        # üçgen yerleştirme
        x = k - n/2
        y = -n
        renk_yogunluk = c / ust_max
        ax.add_patch(plt.Circle((x, y), 0.40,
                                facecolor=plt.cm.OrRd(0.2 + 0.7*renk_yogunluk),
                                edgecolor='#6B0E1B', linewidth=0.8))
        ax.text(x, y, str(c), ha='center', va='center',
                fontsize=10 if c < 1000 else 8,
                color='white' if renk_yogunluk > 0.55 else '#6B0E1B',
                weight='bold')

ax.set_xlim(-N/2 - 1, N/2 + 1)
ax.set_ylim(-N - 1, 1)
ax.set_aspect('equal')
ax.set_title('Pascal üçgeni — C(n, k) değerleri (renk yoğunluğu = büyüklük)',
             fontsize=12)
ax.set_xticks([]); ax.set_yticks([])
for s in ax.spines.values(): s.set_visible(False)
# Satır toplamı annotation
for n in [3, 5, 7, 10]:
    ax.annotate(f'satır toplamı = $2^{{{n}}}$ = {2**n}',
                xy=(N/2 + 0.5, -n), xytext=(N/2 + 0.7, -n),
                fontsize=9, color='#6B0E1B', va='center')
plt.tight_layout()
plt.show()
Şekil 2.5
İpucuBuilder Notu — Alt-Küme Sayma

Binom katsayısı “kaç farklı alt-küme” sorusunun cevabıdır. Dropout’ta her adımda hangi nöronları söndüreceğini seçmek bir alt-küme seçimidir; \(n\) nöronun \(k\) tanesini söndürmenin \(\binom{n}{k}\) yolu vardır. Olası konfigürasyonları sayma, istatistiksel fizikteki partition function ve bilgi teorisindeki entropi hesaplarının temelidir. Ayrıca binom katsayıları, binom dağılımının (\(n\) bağımsız denemede \(k\) başarı olasılığı) çekirdeğidir — onu Ders 8’de göreceğiz.

2.8 Worked Example: Poker’de Full House

Naif tanımı gerçek bir problemde çalıştıralım. 52 kartlık standart desteden 5 kart çekiyorsun ve deste tam karılmış, yani tüm 5’li eller eşit olası (simetri var, naif tanım meşru). Bir full house, üç tanesi bir değerden (rank), iki tanesi başka bir değerden olan eldir — örneğin üç tane 7 ve iki tane 10.

Naif tanım: payda = olası el sayısı, pay = full house el sayısı.

Payda: 52 karttan 5 kart seçmenin yolu, sıra önemsiz:

\[ \binom{52}{5} \]

Pay (ağaç gibi düşün, çarpma kuralı):

  • Üç tanesine sahip olduğumuz değeri seç: 13 olasılık (as, 2, …, papaz).
  • O değerin 4 kartından 3’ünü seç: \(\binom{4}{3}\).
  • İki tanesine sahip olduğumuz değeri seç: ilk değer hariç 12 olasılık.
  • O değerin 4 kartından 2’sini seç: \(\binom{4}{2}\).

Hepsini çarpma kuralıyla birleştir:

\[ P(\text{full house}) = \frac{13 \cdot \binom{4}{3} \cdot 12 \cdot \binom{4}{2}}{\binom{52}{5}} \]

Sayıları koyalım: \(\binom{4}{3} = 4\), \(\binom{4}{2} = 6\), yani pay \(= 13 \cdot 4 \cdot 12 \cdot 6 = 3744\). Payda \(\binom{52}{5} = 2{,}598{,}960\). Sonuç \(\approx 0{,}00144\) — yani yaklaşık her 694 elde bir full house.

“it helps to think in terms of the tree — think in terms of the multiplication rule.” — Blitzstein, 40:59

Blitzstein’in vurgusu: başka doğru yollar da var, ama ağaç/çarpma kuralı üzerinden düşünmek daha yapısal ve hata yapma olasılığın daha düşük.

import matplotlib.pyplot as plt
import numpy as np
import math

# Standart poker el sayıları (sıra önemsiz, 5 kartlık eller)
eller = [
    ('Royal Flush',     4),
    ('Straight Flush',  36),
    ('Four of a Kind',  624),
    ('Full House',      3744),
    ('Flush',           5108),
    ('Straight',        10200),
    ('Three of a Kind', 54912),
    ('Two Pair',        123552),
    ('One Pair',        1098240),
]
toplam = math.comb(52, 5)
isimler = [e[0] for e in eller]
olasiliklar = [e[1] / toplam for e in eller]
renkler = ['#A51C30' if i == isimler.index('Full House') else '#6B7280'
           for i in range(len(eller))]

fig, ax = plt.subplots(figsize=(10, 5.5))
y_pos = np.arange(len(eller))
ax.barh(y_pos, olasiliklar, color=renkler, edgecolor='#1f2937')
ax.set_yticks(y_pos)
ax.set_yticklabels(isimler)
ax.set_xscale('log')
ax.set_xlabel('Olasılık (log ölçek)', fontsize=12)
ax.set_title('Poker el olasılıkları — full house vurgulu',
             fontsize=12)
ax.invert_yaxis()

for i, p in enumerate(olasiliklar):
    ax.text(p * 1.3, i, f'{p:.5f}', va='center', fontsize=9,
            color='#A51C30' if i == 3 else '#1f2937')

ax.grid(True, axis='x', which='both', alpha=0.3)
plt.tight_layout()
plt.show()
Şekil 2.6
İpucuBuilder Notu — Konfigürasyon Sayma ve Permütasyon Simetrisi

Bu problem aslında konfigürasyon sayma — belirli bir yapının kaç farklı şekilde gerçekleşebileceğini saymak. İstatistiksel fizikte aynı sayma “mikrodurum sayısı”dır ve doğrudan entropiye (log of count) bağlanır. Payı çarpma kuralıyla aşamalara bölmek, bir birleşik dağılımı koşullu parçalara çarpanlamakla (\(p(a,b,c) = p(a) \cdot p(b \mid a) \cdot p(c \mid a,b)\)) aynı disiplindir. “Sırayı umursama, \(k!\)’e böl” hamlesi ise permütasyon simetrisidir; Deep Sets gibi permütasyon-değişmez (permutation-invariant) mimariler tam olarak bu simetriyi modele gömer.

2.9 Örnekleme Tablosu (2×2)

Tüm sayma problemlerini tek çatıda toplayalım. Örnekleme (sampling): \(n\) nesneli bir popülasyondan \(k\) nesne çekiyoruz. İki ikili seçim var:

  • Yerine koyarak mı, koymadan mı? (with/without replacement) — çektiğimizi geri koyup tekrar seçebilir miyiz?
  • Sıra önemli mi, değil mi? (order matters or not)

Bu iki ikili seçim \(2 \times 2\) tablo verir:

Örnekleme Sıra önemli Sıra önemsiz
Yerine koyarak \(n^k\) \(\binom{n+k-1}{k}\)
Yerine koymadan \(n(n-1)\cdots(n-k+1)\) \(\binom{n}{k}\)

Üç tanesi çarpma kuralından anında çıkar:

  • Yerine koyarak, sıralı: her seçimde \(n\) seçenek, \(k\) kez → \(n^k\).
  • Yerine koymadan, sıralı: \(n, n-1, \ldots\) azalan → \(n(n-1)\cdots(n-k+1)\).
  • Yerine koymadan, sırasız: tam da binom katsayısı → \(\binom{n}{k}\).

Dördüncüsü (yerine koyarak, sırasız) çok daha incedir — Blitzstein “bir derece daha zor” diyor ve sonucu \(\binom{n+k-1}{k}\) olarak veriyor, ispatını bir sonraki derse bırakıyor.

“I don’t want you to memorize this table, I want you to understand.” — Blitzstein, 44:15

Yani amaç tabloyu ezberlemek değil; her hücrenin neden öyle olduğunu çarpma kuralından türetebilmek.

İpucuBuilder Notu — Bootstrap, SGD, Set Modelleri

Bu \(2 \times 2\) tablo ML’de her gün karşına çıkar:

  • Yerine koyarak örnekleme = bootstrap: bagging ve random forest, veriden yerine koyarak tekrar örnekleyerek çeşitlilik üretir.
  • Yerine koymadan örnekleme = SGD’de her epoch’ta veriyi karıştırıp minibatch’leri yerine koymadan çekmek.
  • Sıra önemli/önemsiz ekseni ise mimari seçiminin kalbidir: sıraya duyarlı modeller (RNN, positional encoding’li transformer) vs. sıra-değişmez küme modelleri (Deep Sets, pozisyonsuz attention).

Aynı \(k\) nesneyi farklı sırada “aynı” saymak, modele permütasyon simetrisi öğretmektir.

2.10 Bu Dersin Özeti

  1. Örnek uzay, bir deneyin tüm olası sonuçlarının kümesidir (\(S\)); olay, örnek uzayın bir alt-kümesidir (\(A \subseteq S\)).
  2. Olasılığın naif tanımı: \(P(A) = |A| / |S|\) — lehte sonuç sayısı bölü toplam sonuç sayısı.
  3. Naif tanım iki varsayım ister: tüm sonuçlar eşit olası ve sonlu sayıda. “Eşit olası” bedava değil, gerekçe (genelde simetri) ister; “Neptün’de yaşam → \(1/2\)” örneği gerekçesiz kullanımın saçmalığını gösterir.
  4. Sayma, kursun ilk büyük aracıdır — çünkü payı ve paydayı elle listelemek çabuk imkânsızlaşır.
  5. Çarpma kuralı: \(r\) aşamalı bir deneyde toplam sonuç sayısı \(n_1 \cdot n_2 \cdots n_r\). Ağaç diyagramıyla görselleştir; üstel hızla büyür.
  6. Binom katsayısı \(\binom{n}{k} = \frac{n!}{(n-k)!\,k!}\): \(n\) nesneden sırasız \(k\) seçme. Sıralı seçip \(k!\)’e bölerek türetilir.
  7. Örnekleme tablosu (\(2 \times 2\)): yerine koyarak/koymadan × sıra önemli/önemsiz → \(n^k\), \(n(n-1)\cdots(n-k+1)\), \(\binom{n}{k}\), \(\binom{n+k-1}{k}\).
ÖnemliTek bir cümle

Olasılık, belirsizliği saymaya indirger: eşit-olası ve sonlu bir dünyada bir olayın olasılığı “kaç yol lehte / kaç yol toplam”dır — ve bu yolları doğru saymak çarpma kuralı ile binom katsayısının işidir.

2.11 Kontrol Soruları

Cevap: Çarpma kuralıyla \(|S| = 2 \times 2 \times 2 = 2^3 = 8\) sonuç. “Tam iki T” olayının lehte sonuçları: TTH, THT, HTT — yani 3 tane (ya da \(\binom{3}{2} = 3\), üç atıştan T gelecek ikisini seçmek). Hepsi eşit olası olduğundan \(P = 3/8\).

Cevap: Payda yine \(\binom{52}{5}\). Pay için çarpma kuralı: dört kartın değerini seç (13 olasılık) × o değerin 4 kartının hepsini al (\(\binom{4}{4} = 1\)) × kalan 5. kartı diğer 48 kart arasından seç (48). Pay \(= 13 \cdot 1 \cdot 48 = 624\). Yani \(P = 624 / 2{,}598{,}960 \approx 0{,}00024\) — full house’tan çok daha nadir, mantıklı, çünkü dört aynı daha güçlü bir el.

Cevap: \(k = n\) iken sıralı seçim \(n(n-1)\cdots 1 = n!\) verir (\(n\) nesnenin tüm permütasyonları). Sırasız seçim \(\binom{n}{n} = 1\) verir (\(n\) nesnenin tümünü almanın tek bir yolu var — hepsini al). Aralarındaki oran \(n!/1 = n!\), yani “sırayı umursamayınca \(k! = n!\)’e böl” kuralıyla birebir tutarlı: aynı tek grubu \(n!\) farklı sırada dizebilirsin.

Cevap: Uniform sınıf prior’a denk düşer — her sınıfı eşit olası saymak. Sınıflar dengesizse tehlikelidir: örneğin %99 sağlam, %1 arızalı bir veride modelin (veya naif bir kuralın) sınıfları eşit olası varsayması base rate’i yok sayar ve kalibrasyonsuz, yanıltıcı olasılıklar üretir. Tıpkı “Neptün’de yaşam ya var ya yok → 1/2” safsatası gibi. Doğrusu: prior’ı veriden (gerçek sınıf frekanslarından) öğrenmek, gerekirse class weighting veya olasılık kalibrasyonu uygulamak.

2.12 Egzersizler

Egzersiz 1. Bir adil zarı iki kez atıyorsun. (a) Örnek uzayda kaç sonuç var? (b) İki atışın toplamının 7 olma olasılığı nedir? (c) Toplamın 7 olmama olasılığı nedir? (İpucu: önce \(|S|\)’yi çarpma kuralıyla bul, sonra lehte sonuçları say.)

Egzersiz 2. 52 kartlık desteden 5 kartlık bir el çekiyorsun. Beş kartın da aynı türden (suit) olma olasılığını naif tanımla, binom katsayıları cinsinden yaz. (İki aşama: önce türü seç, sonra o türün 13 kartından 5’ini seç.) İfadeyi sadeleştirmeden \(\binom{\cdot}{\cdot}\) cinsinden bırakabilirsin.

Egzersiz 3. Bir sayma argümanıyla (formülü açmadan, tek cümleyle) şunu açıkla: \(\binom{n}{k} = \binom{n}{n-k}\). (İpucu: \(k\) tanesini “seçmek”, aslında dışarıda bırakılacak \(n-k\) tanesini seçmekle aynı şeydir.)

Egzersiz 4. (Python — full house Monte Carlo) Full house olasılığını hem formülle hem de simülasyonla doğrula. İkinci kısım, bu dersin “örnekleme” fikrinin pratiğidir.

import math, random
from collections import Counter

# 1) Formül
pay = 13 * math.comb(4, 3) * 12 * math.comb(4, 2)
payda = math.comb(52, 5)
formul = pay / payda
print(f"formül:      {formul:.5f}")

# 2) Monte Carlo (yerine koymadan örnekleme)
deste = [(r, s) for r in range(13) for s in range(4)]
def full_house(el):
    sayim = sorted(Counter(r for r, s in el).values())
    return sayim == [2, 3]

random.seed(0)
N = 200_000
isabet = sum(full_house(random.sample(deste, 5)) for _ in range(N))
print(f"simülasyon:  {isabet / N:.5f}   (N = {N:,})")

Egzersiz 5. (Sonraki dersin habercisi) Örnekleme tablosunun en zor hücresi “yerine koyarak, sırasız” → \(\binom{n+k-1}{k}\). \(n = 2\), \(k = 3\) için tüm olasılıkları elle listele (yani \(\{1, 2\}\) kümesinden, sırası önemsiz, tekrarlı 3 seçim) ve bunların sayısının formülün verdiği \(\binom{4}{3} = 4\) ile eşleştiğini göster. Ders 2’de bunun neden böyle olduğunu (“stars and bars” / Bose-Einstein) ispatlayacağız.

2.13 Sonraki Ders İçin Hazırlık

Ders 2: Story Proof’lar ve Olasılık Aksiyomları

Ders 2’de naif tanımın ötesine geçiyoruz. Örnek uzayın sonlu ve eşit-olası olma zorunluluğunu kaldıran genel (aksiyomatik) olasılık tanımını kuracağız. Ayrıca formül cebiriyle değil, doğrudan bir sayma hikâyesiyle ispat yapma tekniği olan “story proof”u öğreneceğiz — ve örnekleme tablosunun bıraktığımız zor hücresini (\(\binom{n+k-1}{k}\)) bu yöntemle ispatlayacağız.

Ana konular:

  • Olasılığın aksiyomları: negatif olmama, \(P(S) = 1\), ve ayrık olaylar için toplanabilirlik.
  • Story proof: bir kombinatorik kimliği iki farklı sayma yoluyla kanıtlama.
  • “Yerine koyarak, sırasız” örneklemenin ispatı (stars and bars / Bose-Einstein).
UyarıDers 2 öncesi yapılacak
  • Bu dersin egzersizlerini çöz — özellikle 4 (Python) ve 5 (elle listeleme).
  • Python’da math.comb ve itertools ile küçük sayma deneyleri yap.
  • Ana cümleyi tekrar oku: “Olasılık, belirsizliği saymaya indirger.”

2.14 Anahtar Kavramlar (Cheat Sheet)

Kavram Tanım Blitzstein’de
Örnek uzay (\(S\)) Bir deneyin tüm olası sonuçlarının kümesi 15m20
Olay Örnek uzayın bir alt-kümesi (\(A \subseteq S\)) 16m33
Naif tanım \(P(A) = |A| / |S|\) 24m34
İki varsayım Eşit olası + sonlu; eşit olası simetriyle gerekçelenir 24m48
Neptün safsatası Gerekçesiz “ya var ya yok → 1/2” hatası 26m19
Çarpma kuralı \(r\) aşamalı deneyde \(n_1 \cdot n_2 \cdots n_r\) 29m05
Ağaç diyagramı Çarpma kuralının görseli (dondurma: \(2 \times 3 = 6\)) 32m11
Binom katsayısı \(\binom{n}{k} = n! / ((n-k)!\,k!)\), sırasız \(k\) seçme 36m01
\(k!\)’e bölme Sıralı seçim \(\div k!\) = sırasız seçim 38m26
Full house \(13 \cdot \binom{4}{3} \cdot 12 \cdot \binom{4}{2} / \binom{52}{5} \approx 0{,}00144\) 39m01
Yerine koyarak, sıralı \(n^k\) 43m47
Koymadan, sıralı \(n(n-1)\cdots(n-k+1)\) 44m23
Koymadan, sırasız \(\binom{n}{k}\) 44m03
Yerine koyarak, sırasız \(\binom{n+k-1}{k}\) (Ders 2’de ispat) 45m26

2.15 ML Bağlantıları Özeti

İpucu7 köprü
  1. Örnek uzay / olay → bir olasılık dağılımının desteği; dil modelinde sözlük, RL’de state space, olay = ilgilenilen alt-küme.
  2. Naif tanım (uniform) → uniform prior ve rastgele baseline; sonlu destek üzerinde maksimum entropili dağılım.
  3. “Eşit olası gerekçe ister” → dengesiz veride base-rate neglect tehlikesi; prior’ı veriden öğren ve modeli kalibre et.
  4. Çarpma kuralı → olasılığın zincir kuralı \(p(x_1, \ldots, x_n) = \prod_i p(x_i \mid x_{<i})\); autoregressive dil modelinin token-token üretimi.
  5. Kombinatorik patlama (\(n^k\), \(V^L\)) → bütün dizileri deneyemezsin; bu yüzden sampling, beam search, MCMC gibi yaklaşık yöntemler.
  6. Binom katsayısı → alt-küme sayma; dropout maskeleri, partition function, ve binom dağılımı (Ders 8).
  7. Örnekleme tablosubootstrap (yerine koyarak) vs SGD minibatch karıştırma (koymadan); sıra önemi → sequence modelleri (RNN, positional transformer) vs set modelleri (Deep Sets, pozisyonsuz attention).
ÖnemliTek bir şey alıp gideceksen

Olasılık, “kaç yol?” sorusudur. Eşit-olası ve sonlu bir dünyada her olasılık bir sayma problemine indirgenir — ve saymanın iki temel aleti çarpma kuralı ile binom katsayısıdır. Ders 2’den itibaren yapacağımız şey, bu “eşit-olası” varsayımını gevşetip gerçek dünyaya açılmak.