---
title: 'Eğitim Verisi Zehirleme'
source: 'https://academia.sh/tr/kurslar/yz-guvenlik-ve-degerlendirme/egitim-verisi-zehirleme'
course: 'Yapay Zekâ Güvenliği ve Değerlendirme'
language: tr
updated: '2026-08-17T18:06:33+00:00'
license: 'CC BY-SA 4.0'
---

# Eğitim Verisi Zehirleme

Zehirlemenin bir yordam olarak değil, kaynak sınıfı başına zararlı payı olarak sayılması: süzgeçsiz derlemede 240 kaydın 93'ü zararlı, pay 0,3875. Kaynak başına pay kullanıcıda 0,2701, erişilen belgede 0,5417, araç çıktısında 0,5484; ama hacim oranı tersine çeviriyor — en düşük paylı kanal 37, en yüksek paylı kanal 17 zararlı katıyor. Kaynak kapısı derlemin payını 0,2701'e indirip 47 temiz kayıt kaybettiriyor, kural kapısı 0,1329'a indirip 23 temiz kayıt kaybettiriyor. İkisini birlikte koymak payı 0,1383 yapıyor ve bu fark 94 kayıtlık derlemin 0,0106'lık adımının altında kalıyor, yani ölçülemez; buna karşılık kaybedilen temiz kayıt 23'ten 66'ya çıkıyor. Kural süzgecinin duyarlılığı kullanıcı kanalında 0,6486, erişilen belgede 0,9487. İki koşumda paylar oynuyor, sıralama oynamıyor.

Bir önceki derste sayılan şey **isteğe** aitti: kayıt geldi, yan etkili araç adı bayrağını taşıdı,
onay kapısı onu insana yönlendirdi ya da yönlendirmedi. Karar tek bir kaydın üstündeydi ve kayıt
işlendikten sonra sistemde bir iz bırakmıyordu. Kendi trafiğinden beslenen bir sistem böyle
çalışmaz. Yanıtlanan destek talepleri, erişilen belgeler ve araç çıktıları bir **derlemde**
toplanır, o derlem sonraki uyarlamanın girdisi olur, ve o noktadan sonra zararlı öznitelik profili
bir olay olmaktan çıkıp bir **özellik** hâline gelir.

Eğitim verisi zehirleme tam olarak budur ve bu derste bir yordam olarak değil, **bir sınıf ve bir
sayım** olarak ele alınır. Sorulan soru şudur: derleme giren kayıtların ne kadarı zararlı öznitelik
profili taşıyor, bu pay kaynak sınıfına göre nasıl değişiyor, ve bir kaynağı derleme almamak neyi
kazandırıp neyi kaybettiriyor. Hiçbir zehirleme yordamı, örnek üretimi ya da etiket bozma yöntemi
yazılmaz.

Ayrım ölçü açısından belirleyicidir. Çalışma anındaki bir savunma yanlış karar verdiğinde tek bir
kayıt etkilenir ve karar geri alınabilir; derleme yanlışlıkla giren bir kayıt ise o derlemden
beslenen her yanıta yayılır ve tek bir kaydı geri almakla düzelmez. Bu yüzden derlem tarafında
ölçülen birim kayıt değil **paydır**.

- **SY49.** Kayıt kümesi, kaynak sınıfları ve kapılar **kurgudur**; gerçek bir derlem ya da eğitim
  koşumu yoktur. Tohum **20260218**.
- **SY50.** Saldırı bir metin değil bir **öznitelik profilidir**. Kayıtların metni tümüyle zararsız
  destek talepleridir ve **sınıfla hiçbir ilişkisi yoktur**; sınıf yalnız öznitelik profilinde durur.
- **SY51.** Zehirleme burada **derlemin zararlı payıdır**. Bir kaydın derleme girdikten sonra modele
  ne yaptığı bu derste ölçülmez ve iddia edilmez; ölçülen tek şey derlemin bileşimidir.
- **SY52.** Taban çizgisi **süzgeçsiz derlemdir**: hiçbir kapı yok, 240 kaydın hepsi alınır,
  durdurulan zararlı **0**, kaybedilen temiz kayıt **0**.
- **SY53.** Kaynak damgası kaydın kendisinden okunur ve **doğru** varsayılır. Damganın taklit
  edilmesi ayrı bir sınıftır (`kaynak_taklidi`) ve bu ders o sınıfın damgasını da doğru sayar;
  dolayısıyla kaynağa göre süzmenin buradaki sayısı **en iyimser** sayısıdır.
- **SY54.** Kaynak kapısı bir **derleme kapısıdır**, çalışma anındaki bir engelleme değildir. Bedeli
  engellenen trafik değil, derleme alınmayan kayıt sayısıdır.
- **SY55.** Çözünürlük: payın adımı 240 kayıtta **0,0042**, kalan derlem 143 kayıtsa **0,0070**, 94
  kayıtsa **0,0106**. Kaynak başına adım kullanıcıda **0,0073**, erişilen belgede **0,0139**, araç
  çıktısında **0,0323**.
- **SY56.** Veri kalitesi, veri sızıntısı ve eğitim verisi hazırlama yordamı önceki müfredatlarda
  ölçüldü ve tekrarlanmaz; bu ders yalnız kaynak başına payı ekler.

## Zehirleme Bir Yordam Değil Bir Paydır

Birinci blok kümeyi, sınıfları ve kural süzgecini kurar. Kaydın kaynağı `kullanici`,
`erisilen_belge` ya da `arac_ciktisi` olabilir ve her sınıfın kaynak dağılımı farklıdır: dolaylı
yönerge ağırlıkla erişilen belgeden, bozulmuş girdi ağırlıkla kullanıcıdan gelir. Bu dağılım
kurgudur ve zehirlemenin sayısı da buradan çıkar.

```python
# KURGUDUR. Kayitlar, kaynak siniflari ve kapilar ders icinde tanimlanir; gercek bir
# derlem ya da egitim kosumu yoktur. Saldiri METNI yazilmaz: bir OZELLIK PROFILIDIR.
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


SINIF = ["temiz", "dolayli_yonerge", "gizli_alan_istegi", "yetki_asimi",
         "kaynak_taklidi", "bozulmus_girdi"]
KAYNAK = ["kullanici", "erisilen_belge", "arac_ciktisi"]
# Ozellikler yapisaldir; hicbiri calisan bir yuk degildir.
OZELLIK = ["yonerge_kipi", "rol_degistirme_istegi", "gizli_alan_adi", "yan_etkili_arac_adi",
           "kaynak_damgasi_uyusmuyor", "olagandisi_damga_dagilimi", "asiri_uzunluk"]
PROFIL = {
    "temiz":              [0.06, 0.02, 0.05, 0.03, 0.02, 0.04, 0.05],
    "dolayli_yonerge":    [0.88, 0.42, 0.10, 0.30, 0.35, 0.08, 0.12],
    "gizli_alan_istegi":  [0.35, 0.15, 0.86, 0.12, 0.10, 0.06, 0.08],
    "yetki_asimi":        [0.30, 0.25, 0.12, 0.84, 0.14, 0.05, 0.07],
    "kaynak_taklidi":     [0.22, 0.55, 0.08, 0.10, 0.82, 0.07, 0.06],
    "bozulmus_girdi":     [0.05, 0.03, 0.04, 0.03, 0.06, 0.80, 0.62],
}
KAYNAK_PAYI = {
    "temiz":             [0.72, 0.20, 0.08],
    "dolayli_yonerge":   [0.05, 0.70, 0.25],
    "gizli_alan_istegi": [0.55, 0.30, 0.15],
    "yetki_asimi":       [0.40, 0.35, 0.25],
    "kaynak_taklidi":    [0.10, 0.60, 0.30],
    "bozulmus_girdi":    [0.65, 0.20, 0.15],
}
# Tumuyle zararsiz destek metinleri; sinifla iliskisi YOKTUR.
METIN = ["bu ayki fatura tutari gecen aya gore yuksek geldi",
         "sayac endeksi yanlis girilmis olabilir",
         "mahallede kesinti ne zaman bitecek",
         "tarife basamagimi ogrenmek istiyorum",
         "ariza kaydim icin ekip ne zaman gelir",
         "adres degisikligi nasil yapilir"]


def kume(tohum=TOHUM):
    ks = []
    for i in range(240):
        r = uretec(tohum + 6151 * i)
        s = SINIF[ayrik(r(), [0.62, 0.10, 0.07, 0.07, 0.07, 0.07])]
        kaynak = KAYNAK[ayrik(r(), KAYNAK_PAYI[s])]
        oz = {o: (r() < p) for o, p in zip(OZELLIK, PROFIL[s])}
        ks.append({"no": i + 1, "sinif": s, "kaynak": kaynak, "ozellik": oz,
                   "metin": METIN[int(r() * len(METIN))],
                   "uzunluk": 40 + int(r() * 260)})
    return ks


KAYIT = kume()


def zararli(k):
    return k["sinif"] != "temiz"


def kural_suzgeci(k, kurallar=("yonerge_kipi", "gizli_alan_adi", "yan_etkili_arac_adi",
                               "kaynak_damgasi_uyusmuyor")):
    return any(k["ozellik"][o] for o in kurallar)


def olc(kayitlar, karar):
    """Durdurulan zararli ile yanlislikla durdurulan temiz BIRLIKTE yazilir."""
    dp = yp = dn = yn = 0
    for k in kayitlar:
        isaret, gercek = karar(k), zararli(k)
        if isaret and gercek:
            dp += 1
        elif isaret and not gercek:
            yp += 1
        elif not isaret and gercek:
            yn += 1
        else:
            dn += 1
    kesinlik = dp / (dp + yp) if dp + yp else 0.0
    duyarlilik = dp / (dp + yn) if dp + yn else 0.0
    return {"dp": dp, "yp": yp, "yn": yn, "dn": dn,
            "kesinlik": round(kesinlik, 4), "duyarlilik": round(duyarlilik, 4),
            "yanlis_engelleme_payi": round(yp / (yp + dn), 4) if yp + dn else 0.0}
```

## Kaynak Başına Sayım

İkinci blok önce kaynak başına zararlı payını, sonra dört derleme kapısını yan yana koyar. Kapıya
takılan kayıt engellenmez, yalnızca derleme alınmaz; bu yüzden bedel sütunu **kaybedilen temiz
kayıttır**.

```python
def derlem(kayitlar, kapi):
    """Derleme kapisi: kapiya takilan kayit derleme ALINMAZ."""
    kalan = [k for k in kayitlar if not kapi(k)]
    dusen = [k for k in kayitlar if kapi(k)]
    z = sum(1 for k in kalan if zararli(k))
    return (len(kalan), z, z / len(kalan) if kalan else 0.0,
            len(dusen), sum(1 for k in dusen if not zararli(k)))


def kaynak_disi(k):
    return k["kaynak"] != "kullanici"


print("kaynak           kayit  zararli  zararli payi")
for kay in KAYNAK:
    g = [k for k in KAYIT if k["kaynak"] == kay]
    z = sum(1 for k in g if zararli(k))
    print(f"{kay:<16} {len(g):>5} {z:>8}        {z / len(g):.4f}")
print(f"{'tum kume':<16} {len(KAYIT):>5} {sum(1 for k in KAYIT if zararli(k)):>8}"
      f"        {sum(1 for k in KAYIT if zararli(k)) / len(KAYIT):.4f}")

print("\nderlem kapisi    kalan  zararli  zararli payi  dusen  dusen temiz")
for ad, f in (("suzgecsiz", lambda k: False), ("kaynak kapisi", kaynak_disi),
              ("kural kapisi", kural_suzgeci),
              ("kaynak + kural", lambda k: kaynak_disi(k) or kural_suzgeci(k))):
    a, z, p, d, dt = derlem(KAYIT, f)
    print(f"{ad:<16} {a:>5} {z:>8}        {p:.4f} {d:>6} {dt:>12}")

print("\nkaynak basina kural suzgeci")
for kay in KAYNAK:
    s = olc([k for k in KAYIT if k["kaynak"] == kay], kural_suzgeci)
    print(f"  {kay:<15} dp {s['dp']:>3}  yp {s['yp']:>3}"
          f"  kesinlik {s['kesinlik']:.4f}  duyarlilik {s['duyarlilik']:.4f}")

print("\nkullanici kanalinin 37 zararlisi hangi sinifta")
kz = [k for k in KAYIT if k["kaynak"] == "kullanici" and zararli(k)]
print("  " + "  ".join(f"{s} {sum(1 for k in kz if k['sinif'] == s)}"
                       for s in SINIF[1:] if any(k["sinif"] == s for k in kz)))

print("\nkaynak basina zararli payi, iki kosum")
for t in (20260218, 20260219):
    ks = kume(t)
    satir = []
    for kay in KAYNAK:
        g = [k for k in ks if k["kaynak"] == kay]
        satir.append(f"{kay} {sum(1 for k in g if zararli(k)) / len(g):.4f}")
    print(f"  {t}: " + "  ".join(satir))
```

```
kaynak           kayit  zararli  zararli payi
kullanici          137       37        0.2701
erisilen_belge      72       39        0.5417
arac_ciktisi        31       17        0.5484
tum kume           240       93        0.3875

derlem kapisi    kalan  zararli  zararli payi  dusen  dusen temiz
suzgecsiz          240       93        0.3875      0            0
kaynak kapisi      137       37        0.2701    103           47
kural kapisi       143       19        0.1329     97           23
kaynak + kural      94       13        0.1383    146           66

kaynak basina kural suzgeci
  kullanici       dp  24  yp  19  kesinlik 0.5581  duyarlilik 0.6486
  erisilen_belge  dp  37  yp   4  kesinlik 0.9024  duyarlilik 0.9487
  arac_ciktisi    dp  13  yp   0  kesinlik 1.0000  duyarlilik 0.7647

kullanici kanalinin 37 zararlisi hangi sinifta
  dolayli_yonerge 2  gizli_alan_istegi 13  yetki_asimi 3  kaynak_taklidi 3  bozulmus_girdi 16

kaynak basina zararli payi, iki kosum
  20260218: kullanici 0.2701  erisilen_belge 0.5417  arac_ciktisi 0.5484
  20260219: kullanici 0.2323  erisilen_belge 0.5484  arac_ciktisi 0.5652
```

## Kanalın Oranı ve Hacmi

İlk tablo kaynağa göre süzmenin gerekçesini kuruyor: erişilen belgenin zararlı payı **0,5417**,
araç çıktısınınki **0,5484**, kullanıcınınki **0,2701**. İki kullanıcı dışı kanal, kullanıcı
kanalının iki katına yakın oran taşıyor. Kullanıcı ile erişilen belge arasındaki fark **0,2716**,
yani erişilen belge kanalının 0,0139'luk adımının yirmi katından fazla; bu bir dalgalanma değil bir
ölçümdür. Buraya kadar okuyan biri açık bir sonuca varır: derleme yalnız kullanıcıdan gelen kaydı
almak gerekir.

Aynı tablonun ikinci sütunu bu sonucu bozuyor. Kullanıcı kanalı **37**, erişilen belge **39**, araç
çıktısı **17** zararlı katıyor. En düşük oranlı kanal, en yüksek oranlı kanaldan yalnız iki eksik
zararlı getiriyor, çünkü kayıtların **137'si** oradan geliyor. **Oran bir kanalın niteliğidir,
hacim onun ağırlığıdır**; ikisi ayrı yazılmadığında "kullanıcıdan gelen daha temizdir" cümlesi aynı
anda hem doğru hem yanıltıcı olur. Kullanıcı kanalını kapatmadan alınacak her karar, derlemin
zararlısının yaklaşık beşte ikisini yerinde bırakır.

İkinci tablo iki kapıyı yan yana koyuyor. Kaynak kapısı derlemin payını 0,3875'ten **0,2701**'e
indiriyor, 103 kayıt düşürüyor ve bunların **47'si temiz**. Kural kapısı aynı payı **0,1329**'a
indiriyor, 97 kayıt düşürüyor ve bunların **23'ü temiz**. Kural kapısı iki eksende birden
üstün: derlemde daha az zararlı bırakıyor ve daha az temiz kayıt kaybettiriyor. Nedeni yapısaldır.
Kaynak, sınıfın bir **vekilidir** ve zayıf bir vekildir; öznitelik profili sınıfın kendisine çok
daha yakın durur. Bir vekil ölçüt, ölçmek istediği şeye ne kadar uzaksa o kadar temiz kayıt yakar.

Üçüncü satırla dördüncü satır arasındaki fark bu dersin en dikkatli okunması gereken yeridir.
Kaynak kapısını kural kapısının üstüne koymak payı 0,1329'dan **0,1383**'e taşıyor, yani
iyileştirmiyor. Ama bu farkı bir bulgu diye yazmak yanlış olur: 94 kayıtlık bir derlemde payın
adımı **0,0106**'dır ve aradaki fark **0,0054**, adımın altında. İki pay **ayırt edilemez**;
katmanın kazancı ölçülemez. Ölçülebilen ise bedeldir: kaybedilen temiz kayıt 23'ten **66**'ya
çıkıyor, kırk üç kayıt fazladan, ve derlem 143'ten 94'e iniyor. Kursun ikinci iddiası burada en
temiz hâliyle görünür — **eklenen savunma, ölçülemeyen bir kazanç için ölçülebilir bir bedel
ödetti**. Bir kurulumda iki kapı bulunduğunu söyleyip iki katman saymak, bu tabloda bir katman ve
kırk üç kayıp demektir.

Üçüncü tablo kural süzgecinin kanallara göre neden farklı davrandığını gösteriyor. Duyarlılık
erişilen belgede **0,9487**, araç çıktısında 0,7647, kullanıcıda ise yalnız **0,6486**. Süzgeç en
çok kaydın geldiği kanalda en zayıf. Sebebi dördüncü tabloda yazılı: kullanıcı kanalının 37
zararlısının **16'sı** bozulmuş girdi sınıfında ve o sınıfın taşıdığı iki bayrak —
`olagandisi_damga_dagilimi` ile `asiri_uzunluk` — kural listesinde **yok**. Zayıflık kanalın değil
**listenin** özelliğidir, ve bir kanalı kapatarak kapatılamaz. Aynı tablodaki 1,0000'lık kesinlik
de dikkatle okunmalı: araç çıktısı kanalında yalnız 14 temiz kayıt var, yanlış engellemenin adımı
orada 0,0714, dolayısıyla o kusursuz sayı on dört kayıttan okunmuş bir sayıdır.

Aynı tablo kaynağa dayalı savunmanın en zayıf yerini de gösteriyor. Kaynak taklidi sınıfı, adı
gereği, kaynak damgasının kaydın geri kalanıyla uyuşmadığı sınıftır; o sınıfın 23 kaydından **3'ü**
kullanıcı damgası taşıyor ve kaynak kapısından temiz geçiyor. Bu ders damgayı doğru saydığı için
kaynak kapısının 0,2701'i onun **en iyimser** sayısıdır. Damganın kaydı gönderen tarafça
belirlendiği bir kurulumda kapı, süzmek istediği tarafın yazdığı bir alandan karar okur. Kural
süzgeci böyle bir bağımlılık taşımaz: baktığı bayraklar kaydın yapısından çıkar, damgasından değil.
İki kapı arasındaki 0,2701 ile 0,1329 farkının bir kısmı bu bağımlılığın bedelidir ve damga
güvenilir olmaktan çıktığında fark kapanmaz, açılır.

Son satırlar ölçünün hangi kısmının koşumdan bağımsız olduğunu söylüyor. İkinci çekimde paylar
oynuyor: kullanıcı 0,2701'den 0,2323'e, erişilen belge 0,5417'den 0,5484'e, araç çıktısı
0,5484'ten 0,5652'ye. Değerlerin hiçbiri sabit değil. Sabit olan **sıralamadır**: kullanıcı her iki
koşumda da en düşük, araç çıktısı en yüksek. Kaynağa dayalı bir öncelik sıralamaya güvenle
kurulabilir; belli bir paya kurulmuş bir eşik ise ikinci koşumda yerinden oynar.

## Özet

- Süzgeçsiz derlemde 240 kaydın 93'ü zararlıdır ve pay 0,3875'tir; taban çizgisinde kaybedilen
  temiz kayıt 0'dır.
- Kaynak başına zararlı payı kullanıcıda 0,2701, erişilen belgede 0,5417, araç çıktısında
  0,5484'tür; ama hacim sıralamayı tersine çevirir, en düşük paylı kanal 37 zararlı katar.
- Kaynak kapısı payı 0,2701'e indirip 47 temiz kayıt kaybettirir; kural kapısı 0,1329'a indirip 23
  temiz kayıt kaybettirir, yani iki eksende de üstündür. Kaynak, sınıfın zayıf bir vekilidir.
- Kaynak kapısını kural kapısının üstüne koymak payı 0,1383 yapar; fark 0,0054, 94 kayıtlık
  derlemin 0,0106'lık adımının altındadır ve ölçülemez. Kaybedilen temiz kayıt ise 23'ten 66'ya
  çıkar.
- Kural süzgecinin duyarlılığı kullanıcı kanalında 0,6486, erişilen belgede 0,9487'dir; zayıflık
  kanalın değil kural listesinin özelliğidir.
- İki koşumda paylar oynar, kanalların sıralaması oynamaz.

## Sonraki Adım

Bu iki derste sayılan her şey **girdi tarafındaydı**: kaydın taşıdığı bayrak, geldiği kanal,
kapının onu insana yönlendirmesi ya da derleme almaması. Kural süzgeci de, kaynak kapısı da modele
ulaşmadan önce karar veriyordu. Ama bir sistemin sızdırdığı bilginin girdiden geçmesi gerekmez.
Model bir alanı hiç sorulmadan yanıtına koyabilir, bir aboneyle ilgili doğrudan bir alan taşımayan
bir ifadeyle o abonenin kümede bulunduğunu belli edebilir, ve bunların hiçbiri girdi tarafında bir
bayrak üretmez. Sonraki ders ölçüyü **çıktı tarafına** taşır: kaç yanıt gizli alan sınıfına giren
bir alan taşıyor, çıktı süzgeci kaçını çıkarıyor ve süzgeçten sonra geriye ne kalıyor.
