Ders 14 / 21
İ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.
İçindekiler
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_adibayrağıyla temsil edilir; ortak tanımınonay_kapisiiş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ı , yanlış engelleme payının adımı ; 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ı.
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.
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.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.