Ders 03 / 22
Rol ve Davranış Belirtme
İsteme rol ve davranış öneki eklemenin kattığı farkın ölçülüp aynı istemin koşum farkıyla karşılaştırılması. Aynı 120 kurgu destek talebinde önekli istemlerin isabeti 0,7500 tabana göre -0,0667, -0,0583, -0,2208 ve +0,0125 oynuyor; tabanın dört tohumdaki bandı ise 0,1500. Dört önekten hiçbiri bandın dışına çıkmıyor, yani hiçbirinin farkı ölçülmüş sayılmıyor. Ölçülen tek şey bedeldir: 9 ile 27 belirteç arasındaki önekler 120 istekte 1080 ile 3240 belirteç ekliyor ve doğru etiket başına bedeli 65,1'den 84,6 ile 123,8 arasına çıkarıyor.
İçindekiler
Önceki ders yönergenin uzunluğunu ölçtü ve isabetin otuz üç belirteçte doyduğunu buldu; eklenen otuz dokuz belirteç bedeli kesin biçimde artırdı, sayıyı ise ölçülebilir biçimde oynatmadı. Yönergeye ne ekleneceği sorusu orada kapanmadı. En sık verilen cevap modele kim olduğunu söylemektir: bir uzmanlık alanı, bir görev unvanı, bir kıdem. Bu ekin isabeti yükselttiği yaygın bir kabuldür.
Bu ders o kabulü ölçer ve ölçerken kursun üçüncü kuralını adıyla işletir. Model belirsiz bir bileşendir: aynı istem, tohum değiştiğinde başka bir sayı verir. Bir istem değişikliğinin kattığı fark, aynı istemin koşumdan koşuma oynadığı aralıktan büyük değilse, o fark bir kazanç değil bir çakışmadır. Bu kursta öyle bir sayı ölçülmemiş sayılır. Ders bu ölçütü kurar, dört öneke uygular ve sonucu açıkça yazar.
- IT17. Kod bir benzeticiyi çağırır; gerçek bir model uç noktası çağrılmaz. Destek talepleri kurgudur ve önceki iki dersteki 120 kayıtla aynıdır.
- IT18. Taban istem, önceki dersin ölçtüğü orta yönergedir: etiket kümesi, görev ve yanıt biçimi. Bu derste yönerge değişmez; yalnızca önüne bir önek eklenir.
- IT19. Rol belirtme, modele bir kimlik atfeden metindir. Davranış belirtme, modelden izlemesi istenen adımları yazan metindir. İkisi de yönergenin önüne aynı biçimde konur.
- IT20. Her istem dört tohumla koşulur (20260218’den 20260221’e). İlk iki tohum iki koşum sütunlarıdır; dördünün en büyüğü ile en küçüğü arasındaki fark koşum bandıdır.
- IT21. Bir öneğin etkisi, ilk iki koşumun ortalaması ile tabanın ilk iki koşumunun ortalaması arasındaki farktır.
- IT22. Ölçülebilirlik ölçütü: bir etki, karşılaştırılan iki istemin bantlarının büyüğünden büyük değilse ölçülmemiş sayılır. Ölçüt bu yönüyle tutucudur ve gerekçesi derste yazılıdır.
- IT23. Bedel belirteçtir. Önek bedeli önek uzunluğu çarpı istek sayısıdır ve toplam belirtecin içindedir; doğru etiket başına bedel ayrıca basılır.
- IT24. Benzeticinin iz tablosu koddadır ve okunabilir. Bir önek metninin hangi etikete ağırlık eklediği bu tablodan doğrulanır.
- IT25. Bu ders yalnız isabeti ve bedeli ölçer; yanıtın biçimi önceki derste kapatıldı ve burada sabittir.
Tek Kayıtta Rol İşe Yaramış Görünüyor
İlk blok benzeticiyi ve kurguyu kurar, dört öneki tanımlar, her birinin yüz yirmi istekteki bedelini yazar ve tek bir kurgu talebi tabanla ve rol önekiyle, iki ayrı tohumda çağırır.
# BENZETICI. Bu kod gercek bir model uc noktasi cagirmaz; standart kitaplikla yazilmis # bir dil modeli benzeticisidir. Destek talepleri de KURGU'dur. import math TOHUM, M32 = 20260218, 0xFFFFFFFF PENCERE, EN_UZUN = 240, 24 # baglam penceresi ve en buyuk cikti, belirtec 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): # istemin icerigine bagli, kosumdan bagimsiz iz h = 2166136261 for c in m: h = ((h ^ ord(c)) * 16777619) & M32 return h KONU = ["fatura", "ariza", "sayac", "tarife", "kesinti"] KALIP = { "fatura": ["bu ayki fatura tutari gecen aya gore cok yuksek geldi", "faturami odedim ama sistemde borc gorunuyor", "fatura ayrintisini nereden gorebilirim"], "ariza": ["evde su akmiyor bir ariza var galiba", "baglanti bozuk oldu ve hic calismiyor", "ariza kaydi actim ama ekip gelmedi"], "sayac": ["sayac okumasi yanlis girilmis endeks tutmuyor", "sayac degisimi icin randevu istiyorum", "sayac uzerindeki endeks ile fatura ayni degil"], "tarife": ["hangi tarife basamagindayim ogrenmek istiyorum", "tarife degisikligi icin ne yapmam gerekiyor", "birim ucret abone tipine gore degisiyor mu"], "kesinti": ["mahallede kesinti var ne zaman gelecek", "planli kesinti duyurusu nereden takip edilir", "aksamdan beri kesinti yasiyoruz"], } EK = ["ayrica gecen ay da ayni sorun olmustu", "bu konuda memnun degilim", "acil bilgi almam gerekiyor", "kayit numaram elimde yok"] TALEP = [] for i in range(120): r = uretec(TOHUM + i) k = KONU[ayrik(r(), [0.24, 0.22, 0.18, 0.20, 0.16])] m = KALIP[k][int(r() * 3)] if r() < 0.34: m += " " + EK[int(r() * 4)] TALEP.append({"no": 4001 + i, "metin": m, "konu": k}) KAVRAM = KONU + ["odeme", "sikayet", "bilgi", "genel"] IZ = {"fatur": "fatura", "tutar": "fatura", "ayrin": "fatura", "ariza": "ariza", "bozuk": "ariza", "calis": "ariza", "akmiy": "ariza", "sayac": "sayac", "endek": "sayac", "okuma": "sayac", "tarif": "tarife", "birim": "tarife", "abone": "tarife", "basam": "tarife", "kesin": "kesinti", "duyur": "kesinti", "mahal": "kesinti", "borc": "odeme", "odedi": "odeme", "ucret": "odeme", "memnu": "sikayet", "sorun": "sikayet", "acil": "sikayet", "bilgi": "bilgi", "ogren": "bilgi", "nered": "bilgi"} TUZAK = {"degis": "tarife", "kayit": "ariza", "yukse": "tarife", "gorun": "fatura", "ekip": "kesinti", "takip": "tarife", "giril": "fatura"} # yaniltici baglar SERBEST = ["talebiniz {k} konusuyla ilgili gorunuyor", "bu kayit {k} basligina girer , ilgili ekibe yonlendirildi", "kaydiniz alindi , konuyu inceleyip donus yapacagiz"] SAYAC = [0] def cagir(istem, tohum=TOHUM, sicaklik=0.6, en_uzun=EN_UZUN): SAYAC[0] += 1 bel = belirtecle(istem) if len(bel) > PENCERE: return {"durum": "baglam_asimi", "giris": len(bel), "cikis": 0, "yanit": ""} if SAYAC[0] % 37 == 0: return {"durum": "hiz_siniri", "giris": len(bel), "cikis": 0, "yanit": ""} r = uretec(tohum ^ izno(istem)) if len(bel) > 90 and r() < 0.04: return {"durum": "zaman_asimi", "giris": len(bel), "cikis": 0, "yanit": ""} aday = [k for k in KAVRAM if k[:5] in bel] # istemde adi gecen kavramlar if len(aday) < 3: aday = KAVRAM p = {k: 0.15 for k in aday} for t in bel: for tablo, w in ((IZ, 1.0), (TUZAK, 1.3)): if tablo.get(t) in p: p[tablo[t]] += w if sicaklik <= 0.0: k = max(sorted(p), key=lambda a: p[a]) # en olasi secim else: e = [math.exp(p[a] / sicaklik) for a in sorted(p)] k = sorted(p)[ayrik(r(), [v / sum(e) for v in e])] y = k if "tek" in bel else SERBEST[ayrik(r(), [0.42, 0.26, 0.32])].format(k=k) cb = belirtecle(y) if len(cb) > en_uzun: # durdurma kosulu cb = cb[:en_uzun] y = " ".join(cb) return {"durum": "tamam", "giris": len(bel), "cikis": len(cb), "yanit": y} def oku(y): # yanittan etiket cikarma for s in y.lower().split(): if s in KONU: return s return None YONERGE = ("Etiketler: fatura , ariza , sayac , tarife , kesinti ." " Talebi bu etiketlerden birine ata . Yanit olarak tek etiket yaz .") ONEK = (("taban", ""), ("rol A", "Sen bir abone destek gorevlisisin ."), ("rol B", "Sen bir deneyimli saha teknisyenisin ."), ("rol C", "Sen dagitim sirketinde on yildir calisan kidemli bir kayit uzmanisin ."), ("davranis", "Once talebin ana nesnesini bul , sonra etiketi sec ." " Emin olmadigin durumda talepte gecen ana sozcugu esas al .")) TOHUMLAR = (TOHUM, TOHUM + 1, TOHUM + 2, TOHUM + 3) def kur(o, x): return (o + " " if o else "") + YONERGE + " Talep: " + x["metin"] print(f"{'onek':<9} {'belirtec':>9} {'120 istekte':>12}") for ad, o in ONEK: b = len(belirtecle(o)) print(f"{ad:<9} {b:>9d} {b * len(TALEP):>12d}") x0 = TALEP[2] print(f"KURGU talep {x0['no']} ({x0['konu']}): {x0['metin']}") for ad, o in ONEK[:2]: SAYAC[0] = 0 y = [cagir(kur(o, x0), tohum=t)["yanit"] for t in TOHUMLAR[:2]] print(f"{ad:<9} iki kosum: {y[0]} / {y[1]}")
onek belirtec 120 istekte taban 0 0 rol A 9 1080 rol B 9 1080 rol C 17 2040 davranis 27 3240 KURGU talep 4003 (ariza): evde su akmiyor bir ariza var galiba ayrica gecen ay da ayni sorun olmustu taban iki kosum: kesinti / ariza rol A iki kosum: ariza / ariza
Son iki satır bir istem değişikliğinin nasıl kanıtlanmış göründüğünü gösteriyor. Talebin gerçek
konusu ariza. Taban istem iki koşumda bir kez yanlış, bir kez doğru cevap verdi; rol öneki
eklenince iki koşumda da doğru cevap geldi. Tek kayda bakan biri buradan “rol isabeti yükseltti”
sonucunu çıkarır. Bu sonucun tek dayanağı, tabanın zaten koşumdan koşuma oynuyor olmasıdır.
Aynı gösteri, ters yönde çıkan bir kayıtla da yapılabilirdi.
Kümede Ne Oluyor
İkinci blok aynı dört öneki 120 kaydın tamamında ve dört ayrı tohumda koşturur. Her satırda ilk iki koşum, bu ikisinin ortalamasının tabandan farkı, dört tohumun bandı ve doğru etiket başına bedel yan yana durur.
def olc(o, tohum): SAYAC[0] = 0 gi = ci = d = 0 for x in TALEP: c = cagir(kur(o, x), tohum=tohum) gi, ci = gi + c["giris"], ci + c["cikis"] d += oku(c["yanit"]) == x["konu"] return {"isabet": d / len(TALEP), "toplam": gi + ci} S = {ad: [olc(o, t) for t in TOHUMLAR] for ad, o in ONEK} ti = [v["isabet"] for v in S["taban"]] tab, tbant = (ti[0] + ti[1]) / 2, max(ti) - min(ti) print(f"{'istem':<9} {'onek':>5} {'toplam':>7} {'kosum 1':>8} {'kosum 2':>8} {'etki':>8} " f"{'iki kosum':>10} {'bant':>7} {'olculur':>8} {'basina':>7}") for ad, o in ONEK: i = [v["isabet"] for v in S[ad]] m = (i[0] + i[1]) / 2 e, ik, bant = m - tab, abs(i[0] - i[1]), max(i) - min(i) t = S[ad][0]["toplam"] esik = max(bant, tbant) print(f"{ad:<9} {len(belirtecle(o)):>5d} {t:>7d} {i[0]:>8.4f} {i[1]:>8.4f} {e:>+8.4f} " f"{ik:>10.4f} {bant:>7.4f} {('evet' if abs(e) > esik else 'hayir'):>8} " f"{t / m / len(TALEP):>7.1f}")
istem onek toplam kosum 1 kosum 2 etki iki kosum bant olculur basina taban 0 5856 0.7500 0.7500 +0.0000 0.0000 0.1500 hayir 65.1 rol A 9 6940 0.7083 0.6583 -0.0667 0.0500 0.0667 hayir 84.6 rol B 9 6942 0.7250 0.6583 -0.0583 0.0667 0.1417 hayir 83.6 rol C 17 7863 0.6417 0.4167 -0.2208 0.2250 0.2250 hayir 123.8 davranis 27 9105 0.7083 0.8167 +0.0125 0.1083 0.1083 hayir 99.5
İki Koşum Bandın Alt Sınırıdır
Tablonun ilk satırı ölçütün niçin bu biçimde kurulduğunu gösteriyor. Taban istem iki koşumda da tam olarak 0,7500 verdi; iki koşum farkı 0,0000. Bu sayıya bakarak “bu istem kararlıdır” denebilirdi. Dört tohum koşulduğunda taban 0,7500, 0,7500, 0,8583 ve 0,7083 veriyor ve bandı 0,1500 çıkıyor. İki koşumun çakışması belirsizliğin yokluğu değil, iki örneğin aynı yere düşmesidir. İki koşum bandın ölçüsü değil, alt sınırıdır.
Ölçüt bu yüzden tutucu kuruldu: bir etki, karşılaştırılan iki istemin bantlarının büyüğünden büyük değilse ölçülmemiş sayılır. Dört önekten hiçbiri bu eşiği geçemiyor. Rol A’nın etkisi −0,0667, eşiği 0,1500. Rol B’nin etkisi −0,0583, eşiği 0,1500. Davranış önekinin etkisi +0,0125, eşiği 0,1500. Rol C’nin etkisi −0,2208 ve eşiği kendi bandı olan 0,2250. Daha gevşek bir okumayla, yalnız tabanın bandına bakılsaydı rol C eşiği geçerdi — ama geçtiği yön aşağı olurdu. Hangi okuma seçilirse seçilsin sonuç aynıdır: dört önekten hiçbiri isabeti ölçülebilir biçimde yükseltmedi.
Ölçülmüş olan tek şey bedeldir ve bedel bir bant taşımaz. Rol A ve rol B dokuzar belirteç; yüz yirmi istekte 1080 belirteç ve toplamda 5856’dan 6940 ile 6942’ye çıkış. Rol C on yedi belirteç, 2040 tekrar, toplam 7863. Davranış öneki yirmi yedi belirteç, 3240 tekrar, toplam 9105. Doğru etiket başına bedel 65,1 belirteçten 84,6, 83,6, 123,8 ve 99,5 belirtece çıkıyor. Doğru etiket başına en pahalı istem tabanın 1,90 katıdır ve karşılığında ölçülebilir hiçbir şey vermiyor.
Rol Metni Yansız Değildir
Rol öneklerinin etkisi ölçülemez çıktı, ama etkilerinin yönü rastgele değil. Benzeticinin iz
tablosu koddadır ve okunabilir. Rol A’nın metnindeki abone parçası iz tablosunda tarife
etiketine bağlıdır; rol C’nin metnindeki calis parçası arizaya, kayit parçası ise yanıltıcı
bağlar tablosunda yine arizaya bağlıdır. Yani rol C her talepte, talebin içeriğinden bağımsız
olarak ariza etiketine ağırlık ekliyor. Rol B’nin metnindeki hiçbir parça iki tabloda da yer
almıyor; etkisi yalnız koşum gürültüsüdür.
Buradan çıkan yapısal sonuç isteme yazılan her metin için geçerlidir. Rol metni ayrı bir kanal değildir; görev metniyle aynı belirteç dizisine girer ve taşıdığı sözcükler kararın içine karışır. Bir role hangi sözcüklerin seçildiği, o rolün ne kadar inandırıcı yazıldığından daha çok şey belirler. Bir istem yazarı rol cümlesini üslup olarak görürken, model onu kanıt olarak okur.
Bu, rol belirtmenin her görevde etkisiz olduğu anlamına gelmez; bu ölçüm tek bir görevde, tek bir küme ve tek bir benzetici üzerinde yapıldı. Anlamına geldiği şey daha dardır ve kurs boyunca sürer: rol eklenmiş bir istem, farkı ölçülene kadar iyileştirilmiş bir istem değildir. Bedeli ise ölçüme gerek kalmadan bellidir, çünkü her istekte yeniden ödenir.
Özet
- Tek bir kayıtta rol öneki tabanın yanlış verdiği cevabı düzeltti. Aynı önek 120 kayıtta isabeti 0,7500’den 0,6833’e indirdi. Tek kayıt üzerinden yapılan gösteri, tabanın kendi oynamasını kanıt diye sunar.
- Taban istem iki koşumda da 0,7500 verdi, iki koşum farkı 0,0000. Dört tohumda bandı 0,1500. İki koşum, bandın ölçüsü değil alt sınırıdır.
- Ölçülebilirlik ölçütü: bir etki, karşılaştırılan iki istemin bantlarının büyüğünden büyük değilse ölçülmemiş sayılır. Rol A −0,0667, rol B −0,0583, rol C −0,2208, davranış +0,0125; dördü de eşiğin altında.
- Bedel bant taşımaz ve tamamen ölçülüdür: önekler 9 ile 27 belirteç, 120 istekte 1080 ile 3240 belirteç. Doğru etiket başına bedel 65,1’den 84,6, 83,6, 123,8 ve 99,5 belirtece çıkıyor.
- Rol metni ayrı bir kanal değildir.
aboneparçası iz tablosundatarifeye,calisvekayitparçalarıarizaya bağlıdır; rol cümlesi görev metniyle aynı dizide okunur ve karara karışır.
Sonraki Adım
Bu derste isteme kimlik ve yordam eklendi, ama ne istendiği hiç değişmedi: talep her üç istemde de aynı cümleydi. Görev tanımının kendisi bir tasarım kararıdır ve belirsiz bırakıldığında bedeli öneklerinkinden büyüktür. Belirsiz bir talep tek bir yanlış cevap üretmez; bir dağılım üretir ve o dağılım tek koşumda görünmez. Sonraki ders bunu ölçer: aynı belirsiz istem on koşumda kaç ayrı biçimde yanıtlanıyor, talep ölçülebilir kılındığında bu sayı kaça iniyor, ve dağılımın daralmasının kaç belirtece mal olduğu.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.