---
title: 'Belirteç Temelli Maliyet'
source: 'https://academia.sh/tr/kurslar/yz-muhendisligine-giris/belirtec-temelli-maliyet'
course: 'Yapay Zekâ Mühendisliğine Giriş'
language: tr
updated: '2026-08-17T18:06:36+00:00'
license: 'CC BY-SA 4.0'
---

# Belirteç Temelli Maliyet

Doksan altı istekten oluşan kurgu akışta dört düzenek belirteç ve isabet olarak karşılaştırılıyor: uzun istem 0,7083 isabet ve istek başına 156,6 belirteç, kısa istem ile örnek aynı isabeti 100,6 belirteçle veriyor, özetleyip gönderme 0,8021 ile 74,0 belirtece iniyor, sert özet 68,0 belirteçte isabeti 0,0833'e düşürüyor ve önbellek 17,7 belirteçle 0,7500 veriyor. Toplam belirteç 15.034'ten 1.702'ye iniyor ve model çağrısı 96'dan 23'e düşüyor. Bütçe 7.000 belirtece indiğinde beş düzenekten yalnız ikisi sığıyor ve tasarım seçilmiş değil dayatılmış olur. Önbelleğin isabeti iki koşumda 0,7500 ve 0,9583 çıkıyor.

Önceki derste belirteç bir ölçüt olarak sayıldı ama bir sınır olarak hiç kullanılmadı. Gerçek bir
sistemde bütçe bir üst sınırdır ve seçimi değil **tasarımı** dayatır. Aynı görev, aynı model ve
aynı isabetle bile, istemin nasıl yazıldığına göre istek başına harcanan belirteç birkaç kat
değişir.

Bu ders dört düzeneği aynı istek akışında belirteç ve isabet olarak karşılaştırır. Birim
**belirteçtir**; para birimi yazılmaz, çünkü belirteç sayısı ölçülebilir ve kalıcıdır, fiyat ise
ne ölçülebilir ne kalıcıdır.

- **DL71. İstek akışı 96 kurgu destek talebidir** ve tekrar içerir: 24 talep, sıklıkları eşit
  olmayacak biçimde çekilir. Talepler ve sınıflar **kurgudur**, tohum **20260218**.
- **DL72. Ölçü ikilidir:** istek başına belirteç (küçük iyi) ve isabet (büyük iyi). Model çağrısı
  sayısı ayrıca yazılır.
- **DL73. Dört düzenek merdiven gibidir**, her satır bir öncekine bir şey ekler: uzun istem, kısa
  istem ile örnek, özetleyip gönderme, önbellek. Beşinci satır olan sert özet, üçüncü satırın
  daha sert bir ayarıdır ve sınırı göstermek için ölçülür.
- **DL74. Özetleyip gönderme, talebi isteme koymadan önce kırpar.** Kırpma modelden önce, kurumun
  kendi tarafında yapılır ve modele hiç belirteç ödetmez.
- **DL75. Önbellek yanıtı isteğe göre saklar.** Aynı talep ikinci kez geldiğinde model hiç
  çağrılmaz; saklanan yanıt doğruysa doğru, yanlışsa yanlış tekrarlanır.
- **DL76. Belirsizlik iki koşumla ölçülür**; ikinci koşum tohum 20260219 ile alınır.

## Dört Düzeneğin Belirteci ve İsabeti

```python
# ORTAK -- KURGUDUR. Benzetici gercek bir uc nokta cagirmaz. Bedel birimi BELIRTECTIR;
# para birimi yazilmaz. Istek akisi tekrar iceren 96 kurgu destek talebidir.
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 belirtecle(metin):
    """Kurgu belirtecleyici: harf obekleri dorder, rakam obekleri ikiser bolunur."""
    cikti, tampon = [], ""
    for ch in metin + " ":
        if ch.isalnum():
            tampon += ch
            continue
        if tampon:
            n = 2 if tampon.isdigit() else 4
            cikti += [tampon[i:i + n] for i in range(0, len(tampon), n)]
            tampon = ""
        if ch.strip():
            cikti.append(ch)
    return cikti


BAS = [("sayac okunmadi tahmini fatura cikti", "olcum"),
       ("fatura tutari gecen aya gore iki kat cikti", "odeme"),
       ("gece boyunca su basinci dustu", "tesisat"),
       ("planli kesinti bildirimi ulasmadi", "kesinti"),
       ("abonelik devri sayaca islenmedi", "sozlesme")]
EK = ["sayacin numarasi degistirilmis olabilir", "adres bilgisi eski gorunuyor",
      "onceki ay ayni sorun yasanmadi", "sayaca ulasilamiyor kapi kapali",
      "kesinti suresi beklenenden uzun surdu", "otomatik talimat sayacta yok"]
SOZLUK = {"kesinti": ["kesi", "bild"], "olcum": ["okun", "olcu", "tahm"],
          "tesisat": ["basi", "dust", "tesi", "vana"],
          "odeme": ["fatu", "odem", "tali", "tuta"],
          "sozlesme": ["abon", "adre", "devr", "sozl"]}
SINIFLAR = list(SOZLUK)
TALEP = []
for i in range(24):
    r = uretec(TOHUM + 31 * i)
    a, b = 100000 + int(r() * 380000), 100000 + int(r() * 380000)
    TALEP.append({"no": 4100 + i, "sinif": BAS[i % 5][1],
                  "metin": f"abone {4100 + i}: {BAS[i % 5][0]}, {EK[(5 * i + 2) % 6]}."
                           f" ana sayac {a} ara sayac {b}."})
r = uretec(TOHUM + 9091)
AKIS = [int(r() ** 1.7 * 24) for _ in range(96)]   # tekrar iceren kurgu istek akisi
# (ad, yonerge belirteci, ornek belirteci, girdi kirpma, onbellek)
DUZENEK = [("uzun istem", 118, 0, 0, False), ("kisa istem + ornek", 16, 46, 0, False),
           ("ozetleyip gonderme", 16, 46, 12, False), ("sert ozet", 16, 46, 6, False),
           ("onbellek", 16, 46, 12, True)]


def cagir(t, kirpma, sira, tohum):
    """Benzetici: istemde gorunen belirtecleri kullanir; kirpma gorunen kismi kisaltir."""
    bel = belirtecle(t["metin"])
    bel = bel[:kirpma] if kirpma else bel
    sz = {s: set(o[:4]) for s, o in SOZLUK.items()}
    p = sorted(((sum(b in sz[s] for b in bel), s) for s in SINIFLAR), key=lambda x: (-x[0], x[1]))
    if p[0][0] == 0 or p[0][0] == p[1][0]:
        return "belirsiz"
    return p[1][1] if uretec(tohum + 37 * sira + 7 * t["no"])() < 0.14 else p[0][1]


def olc(duzenek, tohum=TOHUM):
    ad, yonerge, ornek, kirpma, onbellek = duzenek
    bellek, dogru, belirtec, cagri = {}, 0, 0, 0
    for sira, i in enumerate(AKIS):
        t = TALEP[i]
        if onbellek and i in bellek:
            dogru += bellek[i] == t["sinif"]
            continue                            # istek modele hic gitmez
        n = len(belirtecle(t["metin"]))
        y = cagir(t, kirpma, sira, tohum)
        belirtec += yonerge + ornek + (min(n, kirpma) if kirpma else n)
        cagri += 1
        bellek[i] = y
        dogru += y == t["sinif"]
    return dogru / len(AKIS), belirtec / len(AKIS), cagri, belirtec


print(f"kurgu istek akisi {len(AKIS)} istek, benzersiz talep {len(set(AKIS))}/24")
print("duzenek              isabet  isabet B  belirtec/istek  model cagrisi  toplam belirtec")
for d in DUZENEK:
    i, b, c, top = olc(d)
    i2 = olc(d, TOHUM + 1)[0]
    print(f"{d[0]:<20}  {i:.4f}  {i2:.4f}      {b:>6.1f}         {c:>3}/96        {top:>6}")
```

```
kurgu istek akisi 96 istek, benzersiz talep 23/24
duzenek              isabet  isabet B  belirtec/istek  model cagrisi  toplam belirtec
uzun istem            0.7083  0.7396       156.6          96/96         15034
kisa istem + ornek    0.7083  0.7396       100.6          96/96          9658
ozetleyip gonderme    0.8021  0.8438        74.0          96/96          7104
sert ozet             0.0833  0.0833        68.0          96/96          6528
onbellek              0.7500  0.9583        17.7          23/96          1702
```

İlk iki satır aynı isabeti veriyor: **0,7083** ve ikinci koşumda **0,7396**. Aralarındaki tek fark
uzun bir yönerge yerine kısa bir yönergeyle iki örnek konulmasıdır. Bedel farkı istek başına
**56,0** belirteç, toplamda **5.376** belirteçtir. Bu, tablodaki en kolay kazançtır ve isabete
hiçbir şey ödetmez. Uzun istem, ölçülmediği sürece iyi bir istem gibi görünür.

Üçüncü satır beklenmedik yöne gidiyor: özetleyip göndermek belirteci **74,0**'a indirirken
isabeti **0,8021**'e **çıkarıyor**. Sebep kurgudadır ve okunabilir — kırpma, talebin ek tümcesini
düşürüyor, ek tümce ise sınıf kanıtını bulandıran öbekleri taşıyordu. Bu bir genel yasa değil,
bu veri kümesinin bir özelliğidir. Nitekim dördüncü satır sınırı gösteriyor: kırpma altı belirtece
sertleştirildiğinde isabet **0,0833**'e çöküyor ve karşılığında yalnız **6,0** belirteç
kazanılıyor. Özet bir ayardır, ve ayarın iyi tarafı ile uçurumu birbirine çok yakındır.

Son satır tablodaki en büyük kazancı taşıyor: istek başına **17,7** belirteç, model çağrısı
**23/96**. Doksan altı isteğin yetmiş üçü modele hiç gitmiyor. İsabet **0,7500** ile üçüncü
satırın altında, ama iki koşum sütununa bakmak gerekiyor: aynı önbellek ikinci tohumda
**0,9583** veriyor. Önbellek isabeti düşürmüyor da yükseltmiyor da; **donduruyor**. Bir talebin
ilk yanıtı ne çıktıysa o talebin bütün tekrarları o yanıtı alıyor. Belirsiz bir bileşenin önüne
konan önbellek, belirsizliği ortadan kaldırmaz; onu tek bir çekilişe indirger ve sonucu kalıcı
yapar.

## Bütçenin Dayattığı Tasarım

```python
SONUC = [(d[0],) + olc(d) for d in DUZENEK]
print("butce   istek basina  sigan duzenek  butcenin dayattigi tasarim   isabet")
for butce in (16000, 10000, 7000, 2000, 1500):
    sigan = [s for s in SONUC if s[4] <= butce]
    en = max(sigan, key=lambda s: s[1]) if sigan else None
    print(f"{butce:>6}     {butce / 96:>6.1f}         {len(sigan)}/5       "
          f"{(en[0] if en else 'hicbiri'):<26} {(f'{en[1]:.4f}' if en else '  -   ')}")
print("bedeli yazilmayan duzenek: uzun istem ile kisa istem + ornek ayni isabeti verir,"
      " fark 5376 belirtec")
```

```
butce   istek basina  sigan duzenek  butcenin dayattigi tasarim   isabet
 16000      166.7         5/5       ozetleyip gonderme         0.8021
 10000      104.2         4/5       ozetleyip gonderme         0.8021
  7000       72.9         2/5       onbellek                   0.7500
  2000       20.8         1/5       onbellek                   0.7500
  1500       15.6         0/5       hicbiri                      -   
bedeli yazilmayan duzenek: uzun istem ile kisa istem + ornek ayni isabeti verir, fark 5376 belirtec
```

Bütçe geniş olduğunda tasarım **seçilir**: 16.000 belirteçte beş düzeneğin beşi de sığıyor ve en
yüksek isabeti veren seçiliyor. Bütçe 7.000'e indiğinde tasarım **dayatılır**: yalnız iki düzenek
sığıyor ve en iyisi 0,8021 değil **0,7500**'dür. Aradaki 0,0521 bir mühendislik hatası değil,
bütçenin fiyatıdır. 1.500 belirteçte hiçbir düzenek sığmıyor; o noktada yapılacak şey daha iyi bir
istem yazmak değil, ya bütçeyi büyütmek ya da isteklerin bir kısmını modelden hiç geçirmemektir.

Bu tablonun okunma sırası da önemlidir. Bütçe daralırken ilk düşen düzenek en pahalı olan, en kötü
olan değildir. Uzun istem 15.034 belirteçle listeden ilk çıkandır ve isabeti kısa istemle
birebir aynıdır; yani bütçe önce **hiçbir şey kazandırmayan bedeli** kesiyor. Bir sistemi
ucuzlatmanın ilk adımı da budur: kazancı ölçülmemiş düzenekleri bulup çıkarmak. Bedeli yazılmayan
düzenek, ölçülmemiş olduğu için savunulamaz.

## Özet

- Uzun istem ile kısa istem artı örnek aynı isabeti (0,7083) veriyor; fark istek başına 56,0,
  toplamda 5.376 belirteçtir ve isabete hiçbir şey ödetmez.
- Özetleyip gönderme belirteci 74,0'a indirirken isabeti 0,8021'e çıkarıyor, ama kırpma altı
  belirtece sertleştirildiğinde isabet 0,0833'e çöküyor ve karşılığı yalnız 6,0 belirteçtir.
- Önbellek istek başına 17,7 belirteçle en ucuzudur ve 96 isteğin 73'ünü modele hiç göndermez;
  isabeti düşürmez de yükseltmez, tek bir çekilişe indirger ve donduruyor (0,7500 ile 0,9583).
- Bütçe 7.000 belirtece indiğinde beş düzenekten ikisi sığıyor ve tasarım seçilmiş değil
  dayatılmış olur; en iyi ulaşılabilir isabet 0,8021'den 0,7500'e iner.
- Bütçe daralırken ilk çıkan düzenek en pahalı olandır ve isabete hiçbir katkısı yoktur; bir
  sistemi ucuzlatmanın ilk adımı kazancı ölçülmemiş düzenekleri çıkarmaktır.

## Kurs Kapanışı

On dört dersin hesabı tek tabloda ve her sayı kendi dersinden okundu. Satırlar ortak birim taşımaz;
ikinci sütun her satırın **hangi ölçütle** okunduğunu yazar. **Fark tek işaret düzeniyle verilir:
düzeneğin sayısı eksi çıplak çağrının sayısı**, ve üçüncü sütunda parantez içindedir.

| Ders | Çıplak çağrı | Düzenekle | Bedel |
|---|---|---|---|
| Alan 01 mühendis | etiket isabeti 0,6000 | etiket kümesi ve biçim kısıtı 0,7750 (+0,1750) | toplam belirteç 1,54 kat, çağrı 120 → 123, doğru etiket başına 50,7 → 60,4 |
| Alan 02 fark | biçim kısıtsız isabet 0,5000 | biçim kısıtı 0,8056 (+0,3056) | −634 belirteç, 0 etiketli örnek; yeniden deneme +1 çağrı, +51 belirteç, (+0,0000) |
| Alan 03 ürün | düzeneksiz isabet 0,5556 | kaynağa bağlamak 0,8958 (+0,3402) | +4.986 belirteç, 144 erişim adımı, gecikme sınıfı zincir |
| Alan 04 ayrım | genel iddiada sınanan 0/9 | ölçülebilir iddiada sınanan 5/5, geçen 3 (+5 sınama) | iddia başına dört bileşen: görev, ölçüt, küme, yönüyle eşik |
| Dil 01 belirteçler | talep başına 27,78 belirteç, isabet 0,9722 | 0,50 eşiği 11,68 belirteç, 0,9722 (−16,10 belirteç) | ön işleme adımı ve sıklık tablosu; 0,30 eşiği isabeti 0,8611'e düşürür |
| Dil 02 dönüştürücü | son 16 belirteç, isabet 0,0000 | uzaklıktan bağımsız ağırlık 1,0000 (+1,0000) | karşılaştırma 16 → 69,7; 1024 belirteçte sabit pencerenin 8,26 katı |
| Dil 03 önceden eğitim | arıza kodu isabeti 0,0900 | 400 örnekle ince ayar 0,9400 (+0,8500) | 400 etiketli örnek; genel metin 0,4616 → 0,3998 (−0,0618) |
| Dil 04 çıkarım | çıktı sınırı 4, isabet 0,0000 | sınır 8, isabet 1,0000 (+1,0000) | 4,00 → 6,43 belirteç, 126,0 → 211,1 karşılaştırma (1,68 kat) |
| Dil 05 bağlam penceresi | tam yanıt 0,3833, istem 282,3 belirteç | baştan atmak 0,7433 (+0,3600) | −64,8 belirteç ama ek kırpma adımı; zaman aşımı payı 0,0200 → 0,0600 |
| Dil 06 yetenekler | sayma 0,4167, kesin hesap 0,2917 | yordam düzeneği 1,0000 ve 1,0000 (+0,5833, +0,7083) | 33,3 → 69,6 belirteç, 1 → 2 çağrı, zincir; çoğunluk 99,9 belirteçle (+0,0000) |
| Dil 07 halüsinasyon | uydurma oranı 0,6667, isabet 0,2917 | kaynağa bağlama 0,3333 ve 0,6667 (−0,3334, +0,3750) | 9,8 → 27,8 belirteç; bilmiyorum seçeneği isabeti (−0,0417) düşürür |
| Dil 08 erişim biçimi | açık ağırlıklı çıplak isabet 0,1250 | altı örnekle 0,7917 (+0,6667) | 38,3 → 176,3 belirteç (4,60 kat); kapalı biçimde 24/24 istek dışarı |
| Dil 09 model seçimi | dengeli ağırlıkta orta aday 3,1078 | isabet ağırlığı 4'te büyük aday 4,0000 (+0,8922) | denk belirteç 181,2 → 627,5 (3,46 kat), adım 7,00 → 14,00 |
| Dil 10 maliyet | uzun istem 0,7083, istek başına 156,6 belirteç | önbellek 0,7500, 17,7 belirteç (+0,0417, −138,9) | model çağrısı 96 → 23; isabet iki koşumda 0,7500 ve 0,9583 |

**Kursun kuralı budur: verilmiş bir bileşen yüzeyinden ölçülür; içine bakılamayan bir bileşenin
sayısı yüzeyinde yazılıdır.** Tablodaki hiçbir sayı modelin içinden gelmedi. Hepsi bir isteğin
girdiği, bir yanıtın çıktığı ve arada kaç belirteç, kaç çağrı, kaç adım harcandığı sayılarak
alındı. Modelin mimarisi, ağırlıkları ve eğitildiği veri tabloda hiçbir yerde geçmiyor, çünkü
bunlar bu kursta ölçülebilir büyüklükler değildi; ölçülebilir olan her şey yüzeydeydi.

**Müfredatın kuralı da buradan okunur: bir yapay zekâ sisteminin sayısı, modelin sayısı değil
düzeneğin sayısıdır; bedeli yazılmayan düzenek ölçülmemiş sayılır.** Üçüncü sütun bu yüzden
tabloda durur ve hiçbir satırda boş değildir.

Müfredatın ikinci iddiası da aynı tablodan adıyla okunur: **düzenek eklemek her zaman
iyileştirmez.** Alan 02'de yeniden deneme sayıyı 0,0000 oynatıp bir çağrı ve 51 belirteç ekledi.
Alan 03'te seçenek sunmak görünen değişimi 0,3889'dan 0,4583'e yükseltti. Dil 01'de 0,30 eşiği
isabeti 0,9722'den 0,8611'e düşürdü. Dil 03'te ince ayar alan metnini düzeltirken genel metni
0,4616'dan 0,3998'e indirdi. Dil 05'te özetlemek istemi 100,6 belirtece indirdi ama sorulan adımı
attığı için tam yanıt oranını 0,3833'ten 0,0000'a çökertti. Dil 06'da üç koşumlu çoğunluk 99,9
belirteç harcayıp sayma ile kesin hesapta hiçbir şey değiştirmedi. Dil 07'de bilmiyorum seçeneği
isabeti tabanın 0,0417 altına düşürdü. Dil 10'da sert özet isabeti 0,8021'den 0,0833'e çökertti.
Sekiz satır, tek bir kural: bir düzeneğin bedeli kesindir, kazancı değildir.

On dört derste modelin yüzeyi ölçüldü ve her sayının yanına bedeli yazıldı. Sorulmayan tek şey
modele **ne söylendiğidir**. Bütün tabloda istem ya sabit tutuldu ya da uzunluğuyla anıldı; içinde
ne yazdığı, hangi sırayla yazdığı, örneğin nereye konduğu ve yönergenin nasıl kurulduğu hiç
değişken olmadı. Aynı görevde aynı modele başka bir metin verildiğinde sayının ne kadar oynadığı,
ve o metnin kendisinin bir **tasarım nesnesi** olduğu ölçülmedi. Sonraki kurs, İstem Mühendisliği,
tam olarak bu değişkeni açar.
