---
title: 'İnsan Onayı Gerektiren Eylemler'
source: 'https://academia.sh/tr/kurslar/yz-guvenlik-ve-degerlendirme/insan-onayi-gerektiren-eylemler'
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'
---

# İnsan Onayı Gerektiren Eylemler

Geri döndürülemez eylemlerde insan onayı kapısının kesinliğinin ve bedelinin sayılması: savunmasız tabanda insana giden kayıt 0 ve yakalanan zararlı 0; dar kapı 27 kaydı insana gönderiyor, bunların 24'ü gerçekten zararlı, kesinlik 0,8889, duyarlılık 0,2581 ve gereksiz kesinti 3. Kapıyı genişletmek sınırsız dikkat varsayımıyla duyarlılığı 0,7957'ye çıkarıyor, ama istem sayısı 97'ye çıktığı için sabit 27 istemlik dikkat bütçesinde yakalanan zararlı iki koşumda 23 ve 17'ye düşüyor: genişletilen kapı dar kapının 24'ünü hiçbir koşumda geçemiyor. Kapının zamanla göz kapatılarak geçilmesi bir ayar olarak süpürülüyor; inceleme payı 1,00'dan 0,20'ye inerken yakalanan zararlı 24'ten 4'e, duyarlılık 0,2581'den 0,0430'a düşüyor ve geçen zararlı 69'dan 89'a çıkıyor. Kapının bedeli engellenen görev değil kesintidir: aynı 27 kayıt engellenseydi üç temiz görev düşerdi, sorulduğunda hiçbiri düşmüyor.

Bir önceki ders engellemeyen bir savunmanın 93 zararlının 42'sini bedelsiz etkisizleştirdiğini
saydı ve duvarını gösterdi: geriye kalan 51 kayda hiç dokunmuyor. O 51 kaydın içinde yetki aşımı
ve gizli alan isteği taşıyanlar duruyor ve bu iki sınıfın hedefi çoğu zaman aynı yerdir — bir kez
gerçekleşince geri alınamayan bir işlem.

**Geri döndürülemez eylem**, sonucu sonradan düzeltilemeyen eylemdir: yazılan bir kayıt, gönderilen
bir bildirim, dışarı çıkan bir bilgi. Böyle bir eylem için 0,8889 kesinlik yeterli değildir, çünkü
yanlış kararın bedeli asimetriktir. Bu ders kapıyı insana açar ve üç şeyi sayar: insana giden
kaydın kaçı gerçekten zararlı, kapı genişledikçe ne oluyor ve insanın dikkati azaldıkça kapıdan
geriye ne kalıyor.

- **SV58.** Kod bir **benzeticidir**; gerçek bir araç ya da onay arayüzü çağrılmaz. Kayıt kümesi,
  sınıflar ve öznitelikler **kurgudur**, tohum **20260218**, ikinci koşum **20260219**.
- **SV59. Saldırı bir metin değil, bir öznitelik profilidir.** Kayıtların taşıdığı altı cümle
  sıradan destek talepleridir ve **sınıfla hiçbir ilişkisi yoktur**. Kodda çalışan bir yük,
  şablon ya da yönerge dizisi yoktur.
- **SV60. Taban çizgisi savunmasız kurulumdur:** insana giden kayıt **0**, yakalanan zararlı
  **0**, gereksiz kesinti **0**.
- **SV61. Kursun kuralı:** durdurduğu pay ile yanlışlıkla durdurduğu pay **birlikte** yazılmayan
  savunma ölçülmemiş sayılır.
- **SV62. Geri döndürülemez eylem isteği** bu kümede `yan_etkili_arac_adi` bayrağıyla temsil
  edilir; ortak tanımın `onay_kapisi` işlevi tam olarak bu bayrağa bakar.
- **SV63. Kapı engellemez, sorar.** Onay verilirse eylem yürür, verilmezse yürümez. Bu yüzden
  kapının bedeli engellenen görev değil, **kesintidir**: insana giden her kayıt bir bekleme
  yaratır ve bunların bir kısmı gereksizdir.
- **SV64. İnsanın inceleme sırası zararlılıkla ilintili değildir.** Sıra kurgudur ve iki koşumda
  iki ayrı sıra verir; bu, kapının koşum bandını üreten tek kaynaktır.
- **SV65. Dikkat bir bütçedir.** İnsan en çok **27** istemi gerçekten inceleyebilir; bütçenin
  dışında kalan istemler bakılmadan onaylanır. Bütçe kurgudur ve dar kapının istem sayısına
  eşitlenmiştir.
- **SV66. Çözünürlük:** duyarlılığın adımı $1/93 = 0{,}0108$, yanlış engelleme payının adımı
  $1/147 = 0{,}0068$; bu adımlardan küçük hiçbir fark bulgu sayılmaz.

## Ortak Tanım

Kayıt kümesi, sınıflar, savunma katmanları ve ölçü kurs boyunca aynıdır. Bu derste ortak tanımdan
iki savunma kullanılır: kural süzgeci ve insan onayı kapısı.

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


# ---- KURGU kayitlar: saldiri METNI yazilmaz, saldiri bir OZELLIK PROFILIDIR
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],
}
# Kurgu, tumuyle zararsiz destek metinleri. Sinifla iliskisi YOKTUR;
# sinif bilgisi yalnizca ozellik profilinde durur.
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"]

KAYIT = []
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])}
    KAYIT.append({"no": i + 1, "sinif": s, "kaynak": kaynak, "ozellik": oz,
                  "metin": METIN[int(r() * len(METIN))],
                  "uzunluk": 40 + int(r() * 260)})


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


# ---- SAVUNMA 1: kural suzgeci (yapisal, aciklanabilir)
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)


# ---- SAVUNMA 5: insan onayi kapisi (geri donulemez eylemler)
def onay_kapisi(k, gerekli=True):
    """Yan etkili arac istegi tasiyan kayit insana sorulur."""
    return gerekli and k["ozellik"]["yan_etkili_arac_adi"]


# ---- OLCU: durdurulan ve yanlislikla durdurulan birlikte yazilir
def olc(kayitlar, karar):
    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}


print("kayit:", len(KAYIT), "- zararli:", sum(zararli(k) for k in KAYIT))
print("onay kapisina giden:", sum(onay_kapisi(k) for k in KAYIT))
```

```
kayit: 240 - zararli: 93
onay kapisina giden: 27
```

## Kapının Kesinliği ve Genişliği

Yapay Zekâ Ajanları kursu onay noktasını ajan döngüsünde ölçmüştü: onay kapalıyken 3 yanlış kayıt
yazılıyor, açıkken 1; döngüde 7 onay noktası vardı. O yordam tekrarlanmaz, sayıları girdi olarak
alınır. Buradaki soru başkadır — kapının kendisi bir **sınıflandırıcı** gibi ölçülürse ne veriyor.

Kapının genişliği bir tasarım kararıdır: hangi bayrakları taşıyan kayıt insana sorulacak. Dört
genişlik denenir; en dar olan ortak tanımın `onay_kapisi` işlevidir, en geniş olan ise kural
süzgecinin kural kümesinin ta kendisidir. Aradaki fark savunmanın türündedir: süzgeç engeller,
kapı sorar.

```python
KURAL_KUMESI = ("yonerge_kipi", "gizli_alan_adi", "yan_etkili_arac_adi",
                "kaynak_damgasi_uyusmuyor")
KAPI = {"dar":      ("yan_etkili_arac_adi",),
        "orta":     ("yan_etkili_arac_adi", "gizli_alan_adi"),
        "genis":    ("yan_etkili_arac_adi", "gizli_alan_adi", "kaynak_damgasi_uyusmuyor"),
        "en genis": KURAL_KUMESI}
BUTCE = 27


def soruyor(k, alanlar):
    """Kapi engellemez; kaydi insana gonderir ve yaniti bekler."""
    return any(k["ozellik"][o] for o in alanlar)


def inceleme_sirasi(kayitlar, tohum):
    """Insanin bakma sirasi zararlilikla ilintili degildir; kurgu bir siradir."""
    return sorted(kayitlar, key=lambda k: uretec(tohum ^ izno(k["no"]))())


print("dar kapi ortak tanimin onay kapisidir:",
      all(soruyor(k, KAPI["dar"]) == onay_kapisi(k) for k in KAYIT))
print("en genis kapi kural suzgecinin kural kumesidir:",
      all(soruyor(k, KAPI["en genis"]) == kural_suzgeci(k) for k in KAYIT))
print("taban: insana giden 0 , yakalanan zararli 0 , gereksiz kesinti 0\n")
print("kapi      istem  zararli  kesinlik  duyarlilik  gereksiz  bakilan"
      "   A   payA    B   payB")
for ad, al in KAPI.items():
    s = olc(KAYIT, lambda k, al=al: soruyor(k, al))
    q = [k for k in KAYIT if soruyor(k, al)]
    n = min(BUTCE, len(q))
    a = sum(zararli(k) for k in inceleme_sirasi(q, TOHUM)[:n])
    b = sum(zararli(k) for k in inceleme_sirasi(q, 20260219)[:n])
    print(f"{ad:<9} {s['dp'] + s['yp']:>5} {s['dp']:>8} {s['kesinlik']:>9.4f}"
          f" {s['duyarlilik']:>11.4f} {s['yp']:>9} {n:>8} {a:>3} {a / 93:.4f} {b:>3} {b / 93:.4f}")

q = [k for k in KAYIT if onay_kapisi(k)]
print("\ndar kapida inceleme payi dustukce (27 istem)")
print("inceleme payi  bakilan  yakalanan A   payA  yakalanan B   payB  gecen zararli")
for p in (1.00, 0.80, 0.60, 0.40, 0.20, 0.00):
    n = int(p * len(q))
    a = sum(zararli(k) for k in inceleme_sirasi(q, TOHUM)[:n])
    b = sum(zararli(k) for k in inceleme_sirasi(q, 20260219)[:n])
    print(f"{p:>13.2f} {n:>8} {a:>12} {a / 93:>6.4f} {b:>12} {b / 93:>6.4f} {93 - a:>14}")
```

```
dar kapi ortak tanimin onay kapisidir: True
en genis kapi kural suzgecinin kural kumesidir: True
taban: insana giden 0 , yakalanan zararli 0 , gereksiz kesinti 0

kapi      istem  zararli  kesinlik  duyarlilik  gereksiz  bakilan   A   payA    B   payB
dar          27       24    0.8889      0.2581         3       27  24 0.2581  24 0.2581
orta         56       44    0.7857      0.4731        12       27  22 0.2366  18 0.1935
genis        78       62    0.7949      0.6667        16       27  22 0.2366  19 0.2043
en genis     97       74    0.7629      0.7957        23       27  23 0.2473  17 0.1828

dar kapida inceleme payi dustukce (27 istem)
inceleme payi  bakilan  yakalanan A   payA  yakalanan B   payB  gecen zararli
         1.00       27           24 0.2581           24 0.2581             69
         0.80       21           18 0.1935           18 0.1935             75
         0.60       16           13 0.1398           13 0.1398             80
         0.40       10            8 0.0860            8 0.0860             85
         0.20        5            4 0.0430            4 0.0430             89
         0.00        0            0 0.0000            0 0.0000             93
```

## Kapının Bedeli Kesintidir

İlk satır kapının kesinliğidir: insana giden **27** kaydın **24**'ü gerçekten zararlıdır, kesinlik
**0,8889**. Bu, bu kursta ölçülen en yüksek kesinliklerden biridir ve nedeni dardır — kapı, temiz
trafiğin neredeyse hiç uğramadığı tek bir bayrağa bakıyor. Duyarlılığı ise yalnız **0,2581**;
kapı bir süzgeç değildir ve öyle olmaya çalışmaz.

Bedel sütunu kapının süzgeçten ayrıldığı yerdir. Kapı hiçbir kaydı engellemez, sorar; onay
verilirse eylem yürür. Bu yüzden bedel engellenen görev değil, **27 kesintidir** ve bunların
**3**'ü gereksizdir. Karşılaştırma bir önceki dersten okunabilir: aynı 27 kayıt yetki kapısıyla
engellenseydi tamamlanan görev 1,0000'dan 0,9796'ya inecekti, yani üç temiz görev düşecekti.
Sorulduğunda hiçbiri düşmüyor. Kapı, bir yanlış engellemeyi bir gereksiz kesintiye çevirir; bunun
iyi bir takas olup olmadığı bekleme süresinin görev kaybından ucuz olmasına bağlıdır ve bu bir
sayı değil bir karardır.

Bunun bir sonucu, kapının **kapsam olarak hiçbir şey eklemediğidir**. Kapının baktığı bayrak kural
süzgecinin dört kuralından biridir, dolayısıyla insana giden 27 kayıt süzgecin işaretlediği 97
kaydın alt kümesidir. Süzgeç kuruluysa kapı bir zararlıyı ilk kez yakalamaz; yaptığı şey o 27 kayda
**başka bir işlem** uygulamaktır. Sınıflandırıcının kesinliği 0,8889'da tıkandığı yerde kararı bir
insana devretmek, geri döndürülemez eylemde tek çare olabilir — ama bu bir duyarlılık kazancı
değildir ve öyle bildirilmesi yanlış olur.

## Genişletmenin Ters Tepmesi

İkinci, üçüncü ve dördüncü satırlar kapıyı genişletiyor. Duyarlılık sütunu iyi haber veriyor:
0,2581'den 0,4731'e, 0,6667'ye ve 0,7957'ye çıkıyor. Ama bu sütun **sınırsız dikkat** varsayar —
insanın kendisine gelen 97 istemin hepsine gerçekten baktığını. Bakılan sütunu o varsayımı
kaldırıyor: bütçe 27 istemdir ve genişleyen kapıda istemlerin yarısından çoğu hiç incelenmeden
onaylanır.

Gerçekten yakalanan zararlı sütunları sonucu tersine çeviriyor. Dar kapı iki koşumda da **24**
yakalıyor. Orta kapı 22 ve 18, geniş kapı 22 ve 19, en geniş kapı 23 ve 17. **Sabit dikkat bütçesi
altında hiçbir genişletme dar kapının 24'ünü geçemiyor** ve bu, iki koşumda da böyle. Aynı adımda
gereksiz kesinti 3'ten 23'e çıkıyor. Kursun ikinci iddiasının bu derse düşen kanıtı budur:
**kapıyı genişletmek, dikkat sabitken yakalananı azaltır ve kesintiyi çoğaltır.**

Koşum bandı burada ölçüyü sınırlar. Dar kapının iki koşumu aynı sayıyı veriyor, bandı sıfırdır.
Genişletilen kapılarda iki koşum arasındaki fark 4, 3 ve 6 kayıttır, yani 0,0431, 0,0323 ve
0,0645. Orta, geniş ve en geniş kapıların birinci koşumdaki 22, 22, 23 sayıları arasındaki farklar
bu bandın **altındadır** ve bulgu sayılmaz: hangi genişletmenin öbüründen iyi olduğu ölçülememiştir.
Ölçülen tek şey, hepsinin dar kapının altında kalmasıdır.

## Onay Oranı Düştükçe

Son tablo kapının en sessiz başarısızlığını süpürüyor. Bir onay kapısı kurulduğu gün çalışır;
sonra istemler birikir, çoğu zararsız çıkar ve zamanla göz kapatılarak geçilmeye başlanır. Bu bir
kusur değil, bir **ayardır** ve süpürülebilir: inceleme payı, gelen istemlerin ne kadarının
gerçekten okunduğudur.

Pay 1,00'dan 0,20'ye inerken yakalanan zararlı **24'ten 4'e**, duyarlılık **0,2581'den 0,0430**'a
düşüyor; geçen zararlı 69'dan 89'a çıkıyor. Payın sıfır olduğu satırda kapı hâlâ kuruludur, hâlâ
27 istem üretmektedir ve yakaladığı zararlı **0**'dır — savunmasız tabanla aynı sayı, üstüne 27
kesinti eklenmiş hâli. Düşüş neredeyse doğrusaldır, çünkü inceleme sırası zararlılıkla ilintili
değildir: göz kapatan bir kapı zararlıyı seçerek kaçırmaz, rastgele kaçırır. İki koşum her satırda
aynı sayıyı veriyor, çünkü dar kapıdaki 27 istemin yalnız 3'ü gereksizdir ve sıra değişse de
incelenen dilimin zararlı payı aynı kalıyor.

Buradan tek bir kural çıkar: **bir onay kapısının duyarlılığı kapının değil, kapı ile ona ayrılan
dikkatin ortak sayısıdır.** 0,2581 sayısı yalnız inceleme payı 1,00 iken doğrudur. Kapıyı
bildirirken istem sayısı ve gözlenen inceleme payı birlikte yazılmazsa, bildirilen duyarlılık
ölçülmüş değil varsayılmış olur.

## Özet

- Geri döndürülemez eylem kapısı engellemez, sorar; bedeli engellenen görev değil kesintidir.
- Dar kapı 27 kaydı insana gönderiyor, 24'ü gerçekten zararlı: kesinlik 0,8889, duyarlılık 0,2581,
  gereksiz kesinti 3; savunmasız tabanda ikisi de 0. Bu 27 kayıt kural süzgecinin 97 kaydının alt
  kümesidir, yani kapı kapsam olarak hiçbir şey eklemez; değiştirdiği şey işlemdir.
- Aynı 27 kayıt engellenseydi tamamlanan görev 0,9796'ya inerdi; sorulduğunda hiçbir görev düşmez.
  Kapı bir yanlış engellemeyi bir gereksiz kesintiye çevirir.
- Sabit 27 istemlik dikkat bütçesinde kapıyı genişletmek yakalananı düşürüyor: dar kapı iki koşumda
  da 24, en geniş kapı 23 ve 17; gereksiz kesinti 3'ten 23'e çıkıyor.
- Genişletilmiş kapılar arasındaki 22, 22, 23 farkları 4–6 kayıtlık koşum bandının altındadır ve
  bulgu sayılmaz.
- İnceleme payı 1,00'dan 0,20'ye inerken yakalanan zararlı 24'ten 4'e, duyarlılık 0,2581'den
  0,0430'a düşüyor; bir kapının duyarlılığı kapı ile dikkatin ortak sayısıdır.

## Sonraki Adım

Bu ders savunma katmanlarını kapatıyor. On dört derste önce saldırı yüzeyi sınıflarıyla sayıldı,
sonra altı savunma katmanı kuruldu ve her birinin durdurduğu payla birlikte bedeli yazıldı: süzgeç
yanlış alarm, içerik denetimi gizlenen sınıf, maskeleme kaybolan alan, yetki kapısı düşen görev,
işaretleme yitirilen tek yol, onay kapısı kesinti. Her satırda iki sayı yan yana durdu.

Ama on dört dersin hiçbirinde şu sorulmadı: bu sayıların **doğru olduğunu nereden biliyoruz**.
Hepsi tek bir kurgu kümede, tek bir sınıf dağılımıyla, tek bir etiket kaynağıyla ölçüldü. Kümenin
bileşimi değişse sayı ne kadar oynar, bir çıktının iyi olup olmadığına kim karar verir, iki
değerlendirici aynı kayda aynı notu verir mi, ve bir istem ya da model değişikliğinden sonra dünkü
sayı bugün hâlâ geçerli midir. Sonraki konu savunmayı bırakıp **ölçmenin kendisini** ele alır ve
ilk dersi en baştan başlar: bir değerlendirme kümesi neye göre kurulur ve kurulduğu biçim ölçüyü
ne kadar oynatır.
