---
title: 'Örnekleme Parametreleri'
source: 'https://academia.sh/tr/kurslar/istem-muhendisligi/ornekleme-parametreleri'
course: 'İstem Mühendisliği'
language: tr
updated: '2026-08-17T18:06:38+00:00'
license: 'CC BY-SA 4.0'
---

# Örnekleme Parametreleri

Sıcaklık, çekirdek örnekleme ve en olası k seçiminin aynı istem üzerinde birlikte ölçülmesi: taban ayarda etiket isabeti 0,6417 ve iki koşum farkı 0,5667, sıcaklık 0,2'de 0,8750 ve 0,0417, çekirdek 0,50'de 0,8417 ve 0,1333, en olası k üçte 0,7833 ve 0,3583, üçü birlikte daraltıldığında 0,8667 ve 0,0083. Sabit kesim ortalama üç aday bırakırken çekirdek kesimi 1,20 aday bırakıyor. Giriş belirteci 5300'de sabit kalıyor ve çağrı sayısı 120'de durduğu için değişikliğin bedeli on üç çıkış belirtecidir.

Önceki on altı derste istemin metni bir tasarım nesnesi olarak ele alındı: yönerge düzenlendi,
örnek kondu, kısıt yazıldı, modelden adım adım akıl yürütmesi istendi. Bütün bu derslerde ölçülen
şey **isteme ne yazıldığıydı**. Yanıtın kendisi ise hep serbest metin olarak geri geldi ve nasıl
üretildiği hiç sorulmadı.

Bu konu oradan açılır. Yanıt bir dağılımdan çekilir ve o çekilişin üç ayarı vardır: dağılım
sıcaklığı, çekirdek örnekleme ve en olası k seçimi. Bu üç ayar M28/K01'in Yapay Zekâ
Mühendisliğine Giriş kursunda tanımlandı; burada tanımları tekrarlanmaz. Bu dersin sorusu
başkadır: **üçü aynı anda kullanıldığında ne oluyor**, hangisi hangi görevde işe yarıyor ve
**iki koşum arasındaki farkı** hangisi daraltıyor.

- **CD1.** Kod bir **benzeticidir** ve gerçek bir model uç noktası çağırmaz. Destek talepleri,
  konular ve belge dağarcığı **kurgudur**; tohum **20260218**.
- **CD2.** Önceki istem sabittir: etiket kümesini sayan ve tek etiket isteyen yönerge. Bu istem
  bütün derste **hiç değişmez**; değişen tek şey çağrının örnekleme ayarıdır.
- **CD3.** Ölçüt ikilidir. Etiketleme görevinde **etiket isabeti** (büyük iyi), serbest yanıt
  görevinde **ayrı yanıt sayısı** (çeşitlilik) ölçülür.
- **CD4.** **İki koşum farkı**, aynı 120 talepte tohum 20260218 ile 20260219 arasında **kararı
  değişen kayıt payıdır**. Bir değişikliğin kattığı fark bu sayıdan küçükse ölçülmemiş sayılır.
- **CD5.** Sıcaklık dağılımı yeniden biçimler; **aday listesini kısaltmaz**. Çekirdek örnekleme ve
  en olası k seçimi ise **listeyi keser**.
- **CD6.** Aday sayısı ayrıca basılır: sabit kesimin bıraktığı aday sayısı ile uyarlanan kesimin
  bıraktığı aday sayısı aynı tabloda görünür.
- **CD7.** Benzeticinin iç işaret tablosunda **yanıltıcı bağlar** vardır; hiçbir örnekleme ayarı
  bunları düzeltmez.
- **CD8.** Bedel **belirteçle** yazılır: giriş belirteci, çıkış belirteci ve çağrı sayısı.

## Üç Ayarın Ayrı İşleri

Üç ayar aynı yerde iş görür: puanlar bir olasılık dağılımına çevrildikten sonra, çekiliş
yapılmadan hemen önce. Sıcaklık bölendir ve dağılımı sivrileştirir ya da düzleştirir. En olası k
seçimi listeyi **baştan sabit sayıda** keser. Çekirdek örnekleme ise sayıya değil **olasılık
toplamına** bakar ve eşiğe ulaşana kadar aday alır.

```python
# BENZETICI -- KURGUDUR. Gercek bir model uc noktasi cagrilmaz; asagidaki kod
# standart kitaplikla yazilmis bir dil modeli benzeticisidir. Talepler de KURGU'dur.
import math

TOHUM, M32 = 20260218, 0xFFFFFFFF
PENCERE, EN_UZUN = 240, 24


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


def ayrik(u, w):
    t = 0.0
    for i, x in enumerate(w):
        t += x
        if u < t:
            return i
    return len(w) - 1


def belirtecle(m):                      # KURGU belirtecleyici, parca en cok bes damga
    b = []
    for s in m.lower().replace(",", " , ").split():
        while len(s) > 5:
            b.append(s[:5])
            s = s[5:]
        b.append(s)
    return b


def izno(m):                            # isteme bagli, kosumdan bagimsiz iz
    h = 2166136261
    for c in m:
        h = ((h ^ ord(c)) * 16777619) & M32
    return h


KONU = ["fatura", "ariza", "sayac", "tarife", "kesinti"]
KALIP = [("bu ayki fatura tutari gecen aya gore cok yuksek geldi", "fatura"),
         ("faturami odedim ama sistemde borc gorunuyor", "fatura"),
         ("fatura ayrintisini nereden gorebilirim", "fatura"),
         ("evde su akmiyor bir ariza var galiba", "ariza"),
         ("baglanti bozuk oldu ve hic calismiyor", "ariza"),
         ("ariza kaydi actim ama ekip gelmedi", "ariza"),
         ("sayac okumasi yanlis girilmis endeks tutmuyor", "sayac"),
         ("sayac degisimi icin randevu istiyorum", "sayac"),
         ("sayac uzerindeki endeks ile fatura ayni degil", "sayac"),
         ("hangi tarife basamagindayim ogrenmek istiyorum", "tarife"),
         ("tarife degisikligi icin ne yapmam gerekiyor", "tarife"),
         ("birim ucret abone tipine gore degisiyor mu", "tarife"),
         ("mahallede kesinti var ne zaman gelecek", "kesinti"),
         ("planli kesinti duyurusu nereden takip edilir", "kesinti"),
         ("aksamdan beri kesinti yasiyoruz", "kesinti")]
EK = ["ayrica gecen ay da ayni sorun olmustu", "bu konuda memnun degilim",
      "acil bilgi almam gerekiyor", "kayit numaram elimde yok"]
TALEP = []
for i in range(120):                    # 120 KURGU destek talebi
    r = uretec(TOHUM + i)
    k = KONU[ayrik(r(), [0.24, 0.22, 0.18, 0.20, 0.16])]
    m, _ = [x for x in KALIP if x[1] == k][int(r() * 3)]
    TALEP.append({"no": 4001 + i, "konu": k,
                  "metin": m + (" " + EK[int(r() * 4)] if r() < 0.34 else "")})

KAVRAM = KONU + ["odeme", "sikayet", "bilgi", "genel"]
IZ = {"fatur": "fatura", "tutar": "fatura", "ayrin": "fatura", "ariza": "ariza",
      "bozuk": "ariza", "calis": "ariza", "akmiy": "ariza", "sayac": "sayac",
      "endek": "sayac", "okuma": "sayac", "tarif": "tarife", "birim": "tarife",
      "abone": "tarife", "basam": "tarife", "kesin": "kesinti", "duyur": "kesinti",
      "mahal": "kesinti", "borc": "odeme", "odedi": "odeme", "ucret": "odeme",
      "memnu": "sikayet", "sorun": "sikayet", "acil": "sikayet", "bilgi": "bilgi",
      "ogren": "bilgi", "nered": "bilgi"}
TUZAK = {"degis": "tarife", "kayit": "ariza", "yukse": "tarife", "gorun": "fatura",
         "ekip": "kesinti", "takip": "tarife", "giril": "fatura"}   # yaniltici baglar
SERBEST = ["talebiniz {k} konusuyla ilgili gorunuyor",
           "bu kayit {k} basligina girer , ilgili ekibe yonlendirildi",
           "kaydiniz alindi , konuyu inceleyip donus yapacagiz"]
SAYAC = [0]


def dagilim(bel, sicaklik, cekirdek, en_olasi_k):
    """Uc ayar burada ve yalniz burada is gorur: sicaklik dagilimi yeniden bicimler,
    en olasi k sabit sayida aday birakir, cekirdek ornekleme olasilik toplamina bakar."""
    aday = [k for k in KAVRAM if k[:5] in bel]
    p = {k: 0.15 for k in (aday if len(aday) >= 3 else KAVRAM)}
    for t in bel:
        for tablo, w in ((IZ, 1.0), (TUZAK, 1.3)):
            if tablo.get(t) in p:
                p[tablo[t]] += w
    ad = sorted(p, key=lambda a: (-p[a], a))
    if sicaklik <= 0.0:
        return [ad[0]], [1.0]                       # en olasi secim
    e = [math.exp(p[a] / sicaklik) for a in ad]
    o = [v / sum(e) for v in e]
    ad, o = ad[:en_olasi_k], o[:en_olasi_k]         # en olasi k secimi
    n, t = 0, 0.0
    while t < cekirdek and n < len(o):              # cekirdek ornekleme
        t += o[n]
        n += 1
    ad, o = ad[:n], o[:n]
    return ad, [v / sum(o) for v in o]


def cagir(istem, tohum=TOHUM, sicaklik=1.0, cekirdek=1.0, en_olasi_k=9,
          en_uzun=EN_UZUN):
    SAYAC[0] += 1
    bel = belirtecle(istem)
    if len(bel) > PENCERE:
        return {"durum": "baglam_asimi", "giris": len(bel), "cikis": 0, "yanit": ""}
    if SAYAC[0] % 37 == 0:
        return {"durum": "hiz_siniri", "giris": len(bel), "cikis": 0, "yanit": ""}
    r = uretec(tohum ^ izno(istem))
    ad, o = dagilim(bel, sicaklik, cekirdek, en_olasi_k)
    k = ad[ayrik(r(), o)]
    y = k if "tek" in bel else SERBEST[ayrik(r(), [0.42, 0.26, 0.32])].format(k=k)
    cb = belirtecle(y)
    if len(cb) > en_uzun:                           # durdurma kosulu
        cb, y = cb[:en_uzun], " ".join(cb[:en_uzun])
    return {"durum": "tamam", "giris": len(bel), "cikis": len(cb), "yanit": y}


def oku(y):
    for s in y.lower().split():
        if s in KONU:
            return s
    return None


ETIKET = ("Talebi su etiketlerden birine ata: fatura , ariza , sayac , tarife , "
          "kesinti . Yanit olarak tek etiket yaz . Talep: ")
b = belirtecle(ETIKET + TALEP[6]["metin"])
print(f"KURGU talep kumesi {len(TALEP)} kayit; ornek talep {TALEP[6]['no']}")
print(f"istem {len(b)} belirtec, gercek konu {TALEP[6]['konu']}")
print("ayar                       aday  ilk uc olasilik")
for ad, s, c, k in (("taban 1,0 / 1,00 / 9", 1.0, 1.0, 9),
                    ("sicaklik 0,2", 0.2, 1.0, 9),
                    ("cekirdek 0,50", 1.0, 0.5, 9),
                    ("en olasi k 3", 1.0, 1.0, 3)):
    a, o = dagilim(b, s, c, k)
    print(f"{ad:<24} {len(a):>5}  {' '.join(f'{v:.3f}' for v in o[:3])}")
```

```
KURGU talep kumesi 120 kayit; ornek talep 4007
istem 42 belirtec, gercek konu sayac
ayar                       aday  ilk uc olasilik
taban 1,0 / 1,00 / 9         5  0.564 0.207 0.076
sicaklik 0,2                 5  0.993 0.007 0.000
cekirdek 0,50                1  1.000
en olasi k 3                 3  0.665 0.245 0.090
```

Dört satır üç ayrı işi gösteriyor. Sıcaklık 0,2'de aday sayısı **beşte kalıyor** ama en yüksek
olasılık 0,564'ten 0,993'e çıkıyor: liste kısalmadı, dağılım sivrildi. Çekirdek 0,50 tek adayla
dönüyor, çünkü ilk adayın olasılığı zaten 0,564 ve eşiği tek başına aşıyor. En olası k üç seçimi
listeyi üçe indiriyor ama kalan üç adayın olasılıkları yeniden ölçeklenince ikinci aday 0,207'den
0,245'e **yükseliyor**. Kesmek, kalanları güçlendirir.

Buradan çıkan ayrım dersin geri kalanını taşır: sıcaklık bir **biçimleme**, çekirdek örnekleme
uyarlanan bir **kesim**, en olası k seçimi sabit bir **kesimdir**.

## Üç Ayarın Birlikte Davranışı

Aynı istem, aynı 120 talep ve aynı benzetici üzerinde dokuz ayar bileşimi ölçülür. Etiketleme
görevinde isabet, serbest yanıt görevinde ayrı yanıt sayısı basılır. İki koşum farkı, tohum
değiştirilerek alınan ikinci koşumda kararı değişen kayıt payıdır.

```python
SERBESTI = "Su destek talebine kisa bir yanit yaz . Talep: "
AYAR = [("taban 1,0 / 1,00 / 9", 1.0, 1.0, 9), ("sicaklik 0,6", 0.6, 1.0, 9),
        ("sicaklik 0,2", 0.2, 1.0, 9), ("en olasi secim", 0.0, 1.0, 9),
        ("cekirdek 0,50", 1.0, 0.5, 9), ("cekirdek 0,20", 1.0, 0.2, 9),
        ("en olasi k 3", 1.0, 1.0, 3), ("en olasi k 1", 1.0, 1.0, 1),
        ("ucu birlikte", 0.6, 0.5, 3)]


def kosum(yonerge, s, c, k, tohum):
    SAYAC[0] = 0
    return [oku(cagir(yonerge + x["metin"], tohum=tohum, sicaklik=s,
                      cekirdek=c, en_olasi_k=k)["yanit"]) for x in TALEP]


print("ayar                   isabet A  isabet B  iki kosum farki  ayri yanit  aday")
for ad, s, c, k in AYAR:
    a, b = kosum(ETIKET, s, c, k, TOHUM), kosum(ETIKET, s, c, k, TOHUM + 1)
    d = sum(1 for x, y in zip(a, b) if x != y) / len(a)
    ia = sum(x == t["konu"] for x, t in zip(a, TALEP)) / len(a)
    ib = sum(x == t["konu"] for x, t in zip(b, TALEP)) / len(b)
    SAYAC[0] = 0
    n = len({cagir(SERBESTI + x["metin"], sicaklik=s, cekirdek=c,
                   en_olasi_k=k)["yanit"] for x in TALEP})
    m = sum(len(dagilim(belirtecle(ETIKET + t["metin"]), s, c, k)[0])
            for t in TALEP) / len(TALEP)
    print(f"{ad:<22} {ia:>8.4f}  {ib:>8.4f}  {d:>15.4f}  {n:>10}  {m:>4.2f}")
for ad, s, c, k in (AYAR[0], AYAR[-1]):
    SAYAC[0] = 0
    y = [cagir(ETIKET + x["metin"], sicaklik=s, cekirdek=c, en_olasi_k=k) for x in TALEP]
    print(f"bedel {ad:<22} giris {sum(z['giris'] for z in y)} "
          f"cikis {sum(z['cikis'] for z in y)} cagri {SAYAC[0]}")
```

```
ayar                   isabet A  isabet B  iki kosum farki  ayri yanit  aday
taban 1,0 / 1,00 / 9     0.6417    0.6000           0.5667          15  5.03
sicaklik 0,6             0.8167    0.8250           0.2833          17  5.03
sicaklik 0,2             0.8750    0.8917           0.0417          10  5.03
en olasi secim           0.8667    0.8667           0.0000          10  1.00
cekirdek 0,50            0.8417    0.9667           0.1333          15  1.20
cekirdek 0,20            0.8667    0.8667           0.0000          10  1.00
en olasi k 3             0.7833    0.7833           0.3583          15  3.00
en olasi k 1             0.8667    0.8667           0.0000          10  1.00
ucu birlikte             0.8667    0.8667           0.0083          10  1.01
bedel taban 1,0 / 1,00 / 9   giris 5300 cikis 191 cagri 120
bedel ucu birlikte           giris 5300 cikis 204 cagri 120
```

Taban satırı ölçülemez bir satırdır. İsabet **0,6417** görünüyor, ama iki koşum farkı **0,5667**:
kayıtların yarıdan fazlasında karar tohum değişince değişiyor. Bu tabanda ölçülen hiçbir istem
iyileştirmesi savunulamaz, çünkü aranan fark gürültünün altında kalır.

Üç ayarın hepsi bu farkı daraltıyor, ama aynı ölçüde değil. Sıcaklık 0,2 farkı **0,0417**'ye
indiriyor ve isabeti **0,8750** ile tablonun en yükseğine çıkarıyor. Dikkat çekici olan, bunun
en olası seçimden (**0,8667**) de yüksek olması: dağılımı sivriltmek, tamamen kesmekten iyi sonuç
verdi. Çekirdek 0,50 farkı **0,1333**'e indirirken ortalama aday sayısını **1,20**'de tutuyor;
yani talebin çoğunda tek adaya iniyor, kanıtın zayıf olduğu birkaç talepte ikinci adayı da açık
bırakıyor. Bu **uyarlanan** kesimdir.

En olası k üç satırı tablodaki en öğretici satırdır. Aday sayısı **3,00**'te sabittir ve iki koşum
farkı **0,3583** ile taban dışındaki en büyük değerdir. Sabit bir kesim, kanıtın güçlü olduğu
taleplerde gereksiz yere iki rakip aday bırakır ve sıcaklık 1,0 onları yarıştırmaya devam eder.
Kesmek tek başına belirsizliği kapatmaz; **neye göre kesildiği** belirler.

Serbest yanıt sütunu ters yönü gösteriyor. Daraltma etiketlemede kazandırırken burada kaybettirir:
ayrı yanıt sayısı sıcaklık 0,6'da **17** iken daraltılmış ayarların hepsinde **10**'a iniyor.
Aynı üç ayar, iki görevde iki ayrı yöne çalışıyor. Tek doğru cevabı olan bir görevde belirsizlik
bir kusurdur; her aboneye ayrı cümle yazması beklenen bir görevde belirsizlik **ürünün kendisidir**.
On ayrı yanıtın kalması, ayarların yanıtın **biçimini** seçen çekilişi hiç etkilememesindendir:
bir ayar her belirsizlik kaynağını kapatmaz.

## Bedeli Sıfır Belirteç Olan Değişiklik

Bu dersin bedel satırı kursun geri kalanından ayrılır. Önceki istem ile değiştirilmiş istem
**birebir aynı metindir**: giriş belirteci iki ayarda da **5300**, çağrı sayısı iki ayarda da
**120**. Çıkış belirteci 191'den 204'e çıkıyor, çünkü daraltılmış ayar daha uzun yazılan etiketleri
biraz daha sık seçiyor. Toplam bedel **13 belirteçtir**, yani istek başına 0,11 belirteç.

Karşılığında alınan şey ölçülebilirliğin kendisidir. Taban ayarda iki koşum farkı 0,5667 iken üç
ayar birlikte daraltıldığında **0,0083**'e iniyor. Bundan sonraki derslerde bir istem değişikliğinin
kattığı 0,05'lik bir kazanç anlamlı bir sayıdır; taban ayarda aynı kazanç ölçülemezdi.
**Kursun kuralı burada bir ön koşula dönüşür: ölçülmeden değiştirilen istem bir iyileştirme değil
bir tahmindir, ve ölçüm ancak iki koşum farkı yeterince küçükken mümkündür.**

Bunun bir sınırı da yazılmalıdır. Üçü birlikte daraltılmış ayarda isabet **0,8667**'de duruyor ve
kalan 16 yanlış kaydın çoğu benzeticinin yanıltıcı bağlarından geliyor. Örnekleme ayarları
belirsizliği kapatır, **sistematik hatayı kapatmaz**. Kararlı biçimde yanlış bir yanıt da
kararlıdır.

## Özet

- Sıcaklık dağılımı biçimler ve aday listesini kısaltmaz; çekirdek örnekleme olasılık toplamına
  bakarak **uyarlanan** bir kesim yapar; en olası k seçimi **sabit** sayıda aday bırakır.
- Taban ayarda etiket isabeti 0,6417 ama iki koşum farkı 0,5667'dir; bu tabanda hiçbir istem
  değişikliği ölçülemez.
- Sıcaklık 0,2 farkı 0,0417'ye indirirken isabeti 0,8750 ile en yükseğe çıkarıyor ve en olası
  seçimin 0,8667'sini geçiyor; dağılımı sivriltmek, tamamen kesmekten iyi sonuç verdi.
- En olası k üç, aday sayısını 3,00'te sabitleyip iki koşum farkını 0,3583'te bırakıyor; çekirdek
  0,50 ise 1,20 aday ile farkı 0,1333'e indiriyor.
- Aynı ayarlar serbest yanıt görevinde çeşitliliği 17'den 10'a düşürüyor: daraltma bir görevde
  kazanç, öbüründe kayıptır.
- Değişikliğin bedeli 13 çıkış belirteci ve sıfır ek çağrıdır; giriş belirteci 5300'de sabittir.

## Sonraki Adım

Örnekleme ayarları hangi kavramın seçileceğini denetledi, ama yanıtın **nerede biteceğini** hiç
denetlemedi. Bu derste çıktı uzunluğu tek bir sert sınırla kesildi ve kesilen yanıtların kaç tane
olduğu sayılmadı. Aynı biçimde, bir yanıtın kendi içinde aynı cümleyi tekrar etmesi de hiç
ölçülmedi: dağılımı sivriltmek en olası ifadeyi daha da olası kılar ve uzun yanıtlarda bu
kendini tekrara dönüşür. Sonraki ders iki yeni denetimi ekler ve ikisini de sayıyla ölçer:
yineleme cezası yineleme oranını ne kadar düşürüyor, durdurma dizisi kaç yanıtı kesiyor ve
bunların kaçını **erken** kesiyor.
