---
title: 'Yanlılık Azaltıcı İstemler'
source: 'https://academia.sh/tr/kurslar/istem-muhendisligi/yanlilik-azaltici-istemler'
course: 'İstem Mühendisliği'
language: tr
updated: '2026-08-17T18:06:38+00:00'
license: 'CC BY-SA 4.0'
---

# Yanlılık Azaltıcı İstemler

İstemle dengelemenin alt grup açıklığını ne kadar kapattığının ve neyi kapatmadığının ölçülmesi: 200 kurgu talepte merkez isabeti 0,9016, kırsal isabeti 0,5513 ve açıklık 0,3504. İsteme yazılan yanlılık azaltıcı bildirim açıklığı 0,3586'ya taşıyor ve 3800 belirteç ekliyor; dengeli örnek açıklığı 0,2888'e indiriyor ve 14400 belirteç ekliyor. Örneklenen yerel yazımın isabeti 0,4848'den 0,8788'e çıkıyor, örneklenmeyen yerel yazım 0,3023'te sabit kalıyor. İstem açıklığın yalnız 0,1758 payını kapatıyor. Kurs kapanışı yirmi iki dersin önceki istem, değiştirilmiş istem ve bedel satırlarını tek tabloda topluyor.

Önceki ders hataları iki kaynağa ayırdı. Sorulmayan şey hataların **kimin üzerinde
toplandığıydı**: genel isabet kabul edilebilir olabilir ve kalan yanlışların tamamı belirli bir
abone kümesinde birikebilir; o küme için sistem çalışmıyordur ve ortalama bunu gizler.

Alt grup, açıklık ve adalet ölçütleri M27'nin makine öğrenmesi etiği kursunda kuruldu ve
tekrarlanmaz. Bu dersin sorusu dardır: **istem yazarak bir alt grup açıklığı ne kadar
kapatılabilir, ve hangi kısmı kalır.**

- **CD41.** Kod bir **benzeticidir**; gerçek bir uç nokta çağrılmaz. Abone grupları, talep
  yazımları ve işaret tablosu **kurgudur**, tohum **20260218**.
- **CD42.** İki kurgu abone grubu vardır, **merkez** ve **kırsal**; grup adı karara hiç girmez,
  yalnız ölçüm için kullanılır. Her konunun bir **standart** ve iki **yerel** yazımı vardır ve
  merkez çoğunlukla standart, kırsal çoğunlukla yerel yazar.
- **CD43. Yanlılığın kaynağı veridedir:** işaret tablosu yalnız **standart yazımdan** kurulmuştur
  ve işaret bulunamayan talepte karar **en sık görülen sınıfa** düşer.
- **CD44. Birinci dengeleyici** isteme yazılan bir bildirimdir (yazım biçimi kararı etkilemez) ve
  benzeticide düşmeyi eşit bir çekilişe çevirir. **İkinci dengeleyici** dengeli örnektir: her
  konunun **yerel A** yazımı etiketiyle isteme konur ve benzetici örneklerden geçici bir işaret
  tablosu çıkarır. **Yerel B örneklenmez.**
- **CD45.** Ölçüt grup başına konu isabeti ve **açıklıktır** (merkez eksi kırsal, küçük iyi).
  Bedel giriş belirteci olarak yazılır; ikinci koşum tohum 20260219'dur.

## Açıklığın Kaynağı

Açıklık modelin gruplar hakkında bir şey bilmesinden gelmiyor; grup adı isteme hiç yazılmıyor.
Kaynağı **işaret tablosunun hangi metinlerden kurulduğudur**.

```python
# BENZETICI -- KURGUDUR. Gercek bir model uc noktasi cagrilmaz. Abone gruplari,
# talep yazimlari ve isaret tablosu KURGU'dur.
TOHUM, M32 = 20260218, 0xFFFFFFFF


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):
    h = 2166136261
    for c in m:
        h = ((h ^ ord(c)) * 16777619) & M32
    return h


# her konunun bir standart, iki yerel yazimi var; yerel yazimlar KURGU'dur
YAZIM = {
    "fatura": ["bu ayki fatura tutari gecen aya gore cok yuksek geldi",
               "bu ayki hesap pusulasi baya kabarik cikmis",
               "gecen ayki odemeye gore rakam iki misli olmus"],
    "ariza": ["evde su akmiyor bir ariza var galiba",
              "muslugu actim damla bile gelmiyor",
              "avludaki boru patlamis her yer golet"],
    "sayac": ["sayac okumasi yanlis girilmis endeks tutmuyor",
              "saatin rakamlari bizimkiyle uyusmuyor",
              "kutunun icindeki numara yerinde saymis"],
    "tarife": ["hangi tarife basamagindayim ogrenmek istiyorum",
               "bizden hangi ucretlendirmeyle para aliniyor",
               "kademeli hesaplama nasil yapiliyor anlamadim"],
    "kesinti": ["mahallede kesinti var ne zaman gelecek",
                "iki gundur su yok kimse haber vermedi",
                "koyun ustunde bir gundur akmiyor diyorlar"],
}
KONU = list(YAZIM)
# merkez aboneler cogunlukla standart, kirsal aboneler cogunlukla yerel yaziyor
YAZIM_PAYI = {"merkez": [0.86, 0.08, 0.06], "kirsal": [0.24, 0.40, 0.36]}
TALEP = []
for i in range(200):
    r = uretec(TOHUM + i)
    g = "merkez" if r() < 0.62 else "kirsal"
    k = KONU[ayrik(r(), [0.24, 0.22, 0.18, 0.20, 0.16])]
    j = ayrik(r(), YAZIM_PAYI[g])
    TALEP.append({"no": 4001 + i, "konu": k, "grup": g, "yazim": j,
                  "metin": YAZIM[k][j]})

# benzeticinin isaret tablosu YALNIZ standart yazimdan kuruldu: veri yanliligi budur
IZ = {}
for k in KONU:
    for t in belirtecle(YAZIM[k][0]):
        IZ.setdefault(t, k)
ONCELIK = "fatura"                      # kanit yoksa en sik gorulen sinifa duser
SAYAC = [0]


def ornek_tablosu(bel):
    """Istemdeki 'ornek: <metin> -> <konu>' parcalarindan gecici isaret tablosu."""
    tablo, agiz = {}, []
    for i, t in enumerate(bel):
        if t == "->" and i + 1 < len(bel) and bel[i + 1] in KONU:
            for s in agiz:
                tablo.setdefault(s, bel[i + 1])
            agiz = []
        elif t == "ornek":
            agiz = []
        else:
            agiz.append(t)
    return tablo


def cagir(istem, talep, tohum=TOHUM):
    """Konu atamasi. Kanit yoksa model en sik sinifa duser; istemdeki yanlilik
    azaltici bildirim bu dusmeyi esit bir cekilise cevirir."""
    SAYAC[0] += 1
    bel = belirtecle(istem)
    tablo = dict(IZ)
    tablo.update(ornek_tablosu(bel))            # istemdeki ornekler tabloyu genisletir
    p = {k: 0.0 for k in KONU}
    for t in belirtecle(talep["metin"]):
        if tablo.get(t) in p:
            p[tablo[t]] += 1.0
    if max(p.values()) == 0.0:                  # hicbir isaret yok
        if "esit" in bel:                       # yanlilik azaltici bildirim
            return KONU[ayrik(uretec((tohum + 5) ^ izno(istem))(), [0.2] * 5)]
        return ONCELIK
    return max(sorted(p), key=lambda a: p[a])


BILDIRIM = ("Talebin yazim bicimi karari etkilemez ; her yazim esit olcutle "
            "degerlendirilir . ")
ORNEK = " ".join(f"ornek: {YAZIM[k][1]} -> {k} ." for k in KONU) + " "
print(f"KURGU talep {len(TALEP)}: merkez {sum(x['grup'] == 'merkez' for x in TALEP)}, "
      f"kirsal {sum(x['grup'] == 'kirsal' for x in TALEP)}")
y = {g: sum(x["grup"] == g and x["yazim"] > 0 for x in TALEP)
     for g in ("merkez", "kirsal")}
print(f"yerel yazimli talep: merkez {y['merkez']}, kirsal {y['kirsal']}")
print(f"isaret tablosu {len(IZ)} girdi, tamami standart yazimdan")
for j, ad in enumerate(("standart", "yerel A", "yerel B")):
    x = next(t for t in TALEP if t["konu"] == "sayac" and t["yazim"] == j)
    print(f"  {ad:<9} {x['metin'][:42]:<43} -> {cagir('Talep: ' + x['metin'], x)}")
```

```
KURGU talep 200: merkez 122, kirsal 78
yerel yazimli talep: merkez 18, kirsal 58
isaret tablosu 49 girdi, tamami standart yazimdan
  standart  sayac okumasi yanlis girilmis endeks tutmu  -> sayac
  yerel A   saatin rakamlari bizimkiyle uyusmuyor       -> fatura
  yerel B   kutunun icindeki numara yerinde saymis      -> fatura
```

Aynı konunun üç yazımı üç ayrı sonuç veriyor. Standart yazım doğru okunuyor; iki yerel yazımın
ikisi de `fatura` çıkıyor, çünkü tabloda hiçbir işaret bulunamıyor ve karar en sık görülen sınıfa
düşüyor. Kırsal taleplerin 58'i yerel, merkez taleplerin yalnız 18'i; hata bu yüzden kırsal
abonelerin üzerinde birikiyor. Model onları **ayırt etmiyor** — yalnız kendi tablosunda karşılığı
olmayan metni tanıyamıyor, ve o metni kimin yazdığı veriden gelen bir olgudur.

## İstemin Kapattığı ve Kapatmadığı

```python
HAT = [("taban", ""), ("+ bildirim", BILDIRIM), ("+ dengeli ornek", ORNEK),
       ("+ ikisi", BILDIRIM + ORNEK)]


def olc(onek, tohum=TOHUM):
    SAYAC[0] = 0
    d = {"merkez": [0, 0], "kirsal": [0, 0]}
    y = [[0, 0], [0, 0], [0, 0]]
    g = 0
    for x in TALEP:
        istem = onek + f"Talep {x['no']} : {x['metin']}"
        k = cagir(istem, x, tohum)
        d[x["grup"]][0] += k == x["konu"]
        d[x["grup"]][1] += 1
        y[x["yazim"]][0] += k == x["konu"]
        y[x["yazim"]][1] += 1
        g += len(belirtecle(istem))
    m, ki = d["merkez"][0] / d["merkez"][1], d["kirsal"][0] / d["kirsal"][1]
    return m, ki, m - ki, [a / b for a, b in y], g


print("hat              merkez  kirsal  aciklik  aciklik B  yerelA  yerelB  giris")
for ad, onek in HAT:
    m, ki, a, y, g = olc(onek)
    ab = olc(onek, TOHUM + 1)[2]
    print(f"{ad:<15} {m:>7.4f} {ki:>7.4f} {a:>8.4f} {ab:>10.4f} {y[1]:>7.4f} "
          f"{y[2]:>7.4f} {g:>6}")
t, e = olc("")[2], olc(BILDIRIM + ORNEK)[2]
print(f"\ntaban acikligi {t:.4f}, istemle kapanan {t - e:.4f} "
      f"({(t - e) / t:.4f} payi), kalan {e:.4f}")
```

```
hat              merkez  kirsal  aciklik  aciklik B  yerelA  yerelB  giris
taban            0.9016  0.5513   0.3504     0.3504  0.4848  0.3023   2624
+ bildirim       0.9098  0.5513   0.3586     0.3457  0.4848  0.3256   6424
+ dengeli ornek  0.9426  0.6538   0.2888     0.2888  0.8788  0.3023  17024
+ ikisi          0.9426  0.6538   0.2888     0.2760  0.8788  0.3023  20824

taban acikligi 0.3504, istemle kapanan 0.0616 (0.1758 payi), kalan 0.2888
```

İkinci satır sezgiye en uygun ve tabloda en boş duran satırdır. İsteme "her yazım eşit ölçütle
değerlendirilir" yazmak kırsal isabeti **0,5513'te** bırakıyor ve açıklığı **0,3586**'ya
**çıkarıyor**; satırın iki koşum farkı 0,0129 olduğu için bu 0,0082'lik kötüleşme bile ölçülmemiş
sayılır. Ölçülen tek şey bedeldir: giriş belirteci **2624'ten 6424'e**. Bir niyet beyanının
modele hiçbir işaret eklemediği yer burasıdır.

Üçüncü satır gerçek bir kazanç taşıyor: dengeli örnek açıklığı **0,2888**'e indiriyor, kazanç
**0,0616** ve iki koşum farkı **0,0000**. Bedeli **14400 belirteçtir**, tabanın 6,5 katı.
Örneklerin merkez isabetini de yükseltmesi (0,9016'dan 0,9426'ya) açıklığın kırsal kazancından
daha az kapanmasının sebebidir.

Son iki sütun kalanı açıklıyor. Örneklenen **yerel A** yazımının isabeti **0,4848'den 0,8788'e**
çıkıyor; örneklenmeyen **yerel B** yazımı **0,3023'te** kımıldamıyor. **İstem veri yanlılığını
çözmez.** Taban açıklığının yalnız **0,1758 payı** kapandı; kalanı kapatmanın yolu daha iyi bir
cümle yazmak değil, işaret tablosunun yerel yazımlardan da kurulmasıdır.

## Özet

- Alt grup açıklığı modelin grubu tanımasından değil, işaret tablosunun **hangi metinlerden
  kurulduğundan** gelir; tabanda merkez 0,9016, kırsal 0,5513, açıklık 0,3504'tür.
- Yanlılık azaltıcı bildirim açıklığı 0,3586'ya taşır ve 3800 belirteç ekler; iki koşum farkı
  0,0129 olduğu için bu değişim ölçülmemiş sayılır.
- Dengeli örnek açıklığı 0,2888'e indirir ve 14400 belirteç ekler; kazanç 0,0616 ölçülmüştür ama
  örnekler merkez isabetini de yükselttiği için açıklık kırsal kazancından az kapanır.
- Örneklenen yerel yazımın isabeti 0,4848'den 0,8788'e çıkar, örneklenmeyen yazım 0,3023'te sabit
  kalır: istem açıklığın 0,1758 payını kapatır, kalan 0,2888 veri yanlılığıdır.

## Kurs Kapanışı

Yirmi iki dersin hesabı tek tabloda ve her sayı kendi dersinden okundu. Satırlar ortak birim
taşımaz; ikinci ve üçüncü sütun her satırın **hangi ölçütle** okunduğunu yazar. **Fark tek işaret
düzeniyle verilir: değiştirilmiş istemin sayısı eksi önceki istemin sayısı**, üçüncü sütunda
parantez içinde.

| Ders | Önceki istem | Değiştirilmiş istem | Bedel |
|---|---|---|---|
| Tasarım 01 istem nedir | bağlamsız istem 0,7083 | tam istem 0,7833 (+0,0750) | +1797 belirteç; iki koşum farkı 0,2000 → 0,0583 |
| Tasarım 02 sistem yönergesi | yönergesiz istem 0,4583 | orta yönerge 0,7500 (+0,2917) | +2871 belirteç; uzun yönerge +3487 belirteçle (−0,0083) |
| Tasarım 03 rol belirtme | taban istem 0,7500 | rol öneki 0,6833 (−0,0667) | +1080 ile +3240 belirteç; tohum bandı 0,1500, dört önek de ölçülemez |
| Tasarım 04 açık talep | belirsiz talep, 4,81 ayrı yanıt | kapalı küme 3,89 (−0,92) | istek başına +15 belirteç; etiketsiz pay 0,4333 → 0,2889 |
| Tasarım 05 biçim denetimi | serbest yanıt, ayrıştırılabilir 0,0000 | biçim bildirimi 0,9750 (+0,9750) | giriş 6140 → 8780, çıkış 1392 → 2026 |
| Tasarım 06 örnek kullanımı | sıfır örnek 0,8571 | üç örnek 0,9643 (+0,1071) | +4928 belirteç, istek başına +41 |
| Tasarım 07 yasak bildirimi | bildirimsiz istem, ihlal 0,2583 | olumlu bildirim 0,0167 (−0,2416) | +3360 belirteç, önlenen ihlal başına 115,9; yasak bildirimi ihlali 0,5333 yapar |
| Tasarım 08 istem yinelemesi | başlangıç istemi, sınama 0,3778 | beşinci yineleme 0,9333 (+0,5555) | 2640 çağrı; sekizincide 0,8111'e iner |
| Akıl 01 düşünce zinciri | doğrudan yanıt, hesapta 0,3000 | ara adım istemi 0,8833 (+0,5833) | belirteç 1,82 kat; birim bedel 243,2 → 150,1 |
| Akıl 02 öz tutarlılık | tek örnek 0,7667 | dokuz örnek 0,8833 (+0,1167) | çağrı 60 → 540, belirteç 7954 → 71211, doğru yanıt başına 172,9 → 1343,6 |
| Akıl 03 düşünce ağacı | tek istemde çözüm 0,4792 | dal 3 ağaç 0,6250 (+0,1458) | çağrı 48 → 795, belirteç 43182; dal 4 (−0,0208) |
| Akıl 04 geri adım istemi | tek aşamalı istem 0,5417 | iki aşamalı istem 0,7500 (+0,2083) | çağrı 48 → 96, belirteç 1,66 kat, doğru kod başına 198 → 237 |
| Akıl 05 akıl yürüt ve davran | eylem alanı istemi, geçerli alan 0,1000 | düşüncesi kısaltılmış istem 0,8000 (+0,7000) | giriş 5300 → 8060; geçerli alan başına 645,8 → 102,1 belirteç |
| Akıl 06 akıl yürüten model | tek geçişli sınıf, iki alanlı görev | akıl yürüten sınıf (+0,1000 ve +0,1667) | belirteç 1,75 kat, doğru yanıt başına 83,9 → 110,1 |
| Akıl 07 istem topluluğu | en iyi tek istem 0,7833 | üç istemin çoğunluk oyu 0,8000 (+0,0167) | çağrı 120 → 360, doğru etiket başına 61,1 → 180,7 belirteç |
| Akıl 08 otomatik eniyileme | tek aday, sınama 0,6750 | on adaydan seçilen 0,6500 (−0,0250) | çağrı 40 → 400; doğrulamada +0,1250, iyimserlik payı 0,2500 |
| Çıktı 01 örnekleme ayarları | taban ayar 0,6417 | üçü birlikte daraltılmış 0,8667 (+0,2250) | giriş 5300 sabit, çıkış 191 → 204, çağrı 120 → 120; koşum farkı 0,5667 → 0,0083 |
| Çıktı 02 ceza ve durdurma | yalın istem, yineleme 0,3431 | ceza ve durdurma dizisi 0,0578 (−0,2853) | çıkış 4073 → 2653, giriş sabit; kullanılabilirlik 0,8833 → 0,8333 |
| Çıktı 03 yapılandırılmış çıktı | biçim tarifi, uyum 0,8000 | şema dayatması 1,0000 (+0,2000) | giriş 5614 → 2974 (−2640 belirteç), çıkış 1754 → 1810 |
| Çıktı 04 çıktı doğrulama | şema ve iş kuralı, kabul 0,6000 | bir yeniden deneme 0,8167 (+0,2167) | +48 çağrı, +2947 belirteç, kurtarma başına 1,85 çağrı |
| Çıktı 05 istem ve bağlam ayrımı | yalın istem, ikisi doğru 0,4083 | kural ve kod tablosu 0,8667 (+0,4584) | giriş 1534 → 17734; yönerge 1680 belirteçle 10, bilgi 14520 ile 66 hata düzeltir |
| Çıktı 06 yanlılık azaltıcı istem | yalın istem, açıklık 0,3504 | bildirim ve dengeli örnek 0,2888 (−0,0616) | giriş 2624 → 20824; örneklenmeyen yazım 0,3023'te sabit |

**Kursun kuralı budur: istem bir tasarım nesnesidir; ölçülmeden değiştirilen istem bir iyileştirme
değil bir tahmindir.** Hiçbir satırda model değişmedi: aynı benzetici, aynı tohum, aynı kurgu
talep kümesi. Değişen tek şey metindi, ve dördüncü sütun o metnin her değişiminin bir bedeli
olduğunu yirmi iki kez yazıyor.

Kursun ikinci iddiası da aynı tablodan adıyla okunur: **akıl yürütme teknikleri pahalıdır ve her
görevde kazandırmaz.** Akıl 01'de düşünce zinciri sınıflandırmada belirteci 1,81 kat artırıp farkı
bandın içinde bıraktı; Akıl 04'te geri adım istemi derece görevinde 2,69 kata çıkarıp isabeti
oynatmadı; Akıl 06'da akıl yürüten sınıf tek alanlı görevde 1,75 kat artırıp farkı 0,1167 bandının
içinde bıraktı; Akıl 07'de istem topluluğu çağrıyı üç katına çıkarıp +0,0167 kazandı; Akıl 08'de
arama bütçesi on kata çıktı ve sınama 0,0250 düştü. Aynı okuma akıl yürütme dışında da geçerlidir:
Tasarım 02'de uzun yönerge 3487 belirteç ekleyip 0,0083 götürdü, Tasarım 06'da dördüncüden
sekizinci örneğe 8736 belirteç 0,0089 kazandırdı, Çıktı 03'te örnekli tarif 2040 belirteçle iki
koşum farkına eşit bir fark üretti, Çıktı 04'te ikinci deneme 1366 belirteçle o farkın altında.

Üçüncü sayı tek başına verilir: **yirmi iki dersin üçünde**, tabloya yazılan fark aynı dersin iki
koşum farkının altında kaldı — **Tasarım 03** (rol belirtme), **Akıl 07** (istem topluluğu) ve
**Akıl 08** (otomatik istem eniyileme). Üçünde de bedel sütunu doludur ve kazanç sütunu boştur.

Yirmi iki derste istem bir tasarım nesnesine dönüştü ve her değişikliğin bedeli yazıldı. Ama bir
varsayım hiç sorgulanmadı: her çağrının **tek başına, hemen ve hatasız** gerçekleştiği. Çağrı
sayısı bir maliyet kalemi olarak sayıldı; o çağrıların bir ağ üzerinden gittiği, sıraya girdiği,
yarıda kesildiği, hız sınırına takıldığı ve **para yerine belirteç harcadığı** bir uygulamada bu
istemlerin ne olacağı sorulmadı. Üç yüz altmış çağrılık bir istem topluluğu ve iki bin altı yüz
kırk çağrılık bir istem araması, tek bir makinede sırayla koşan bir döngüde ölçüldü. Sonraki kurs,
Model API'leri ile Uygulama Geliştirme, bu varsayımı açar.
