Ders 05 / 26
Çok Kipli Girdi
Aynı saha denetim kaydının altı girdi biçiminde ölçülmesi: metin özeti 21, kırpık ince ızgara 42, kaba ızgara 59, ince ızgara 183 belirteç ve dizi kayıt başına 195 ile 330 arasında. Kullanılabilir kayıt oranı kaba ızgarada 0,0833, ince ızgarada 0,8167, kırpık ızgarada 0,7000; kırpık biçim ince ızgaranın kullanılabilir kayıtlarının yüzde seksen altısını dörtte bir belirteçle veriyor ve kayıt başına bedel 224,1'den 60,0'a düşüyor. Dizi biçimi en yüksek görünürlüğe sahip olduğu hâlde altmış kaydın otuz dördünde bağlam penceresini aştığı için 0,3667'de kalıyor ve en pahalı biçim oluyor. Ses kipi endeksi 0,8833 ile okuyor ama gövde durumuna kör olduğu için kullanılabilir kayıt üretmiyor.
İçindekiler
Önceki dört ders arayüzün ne sunduğunu ölçtü: rol ve içerikten oluşan bir mesaj dizisi, parça parça gelen bir yanıt, kod yürütmeye bağlanan bir çağrı ve üretimi kısıtlayan bir çıktı kipi. Dördünde de modele giren şey metindi. Belirteç sayımı metnin üzerinde yapıldı, bağlam penceresi metinle doldu, kısaltma kararları metinden budandı.
Saha ekibinin elindeki denetim kaydı metin değil. Sayacın yüzünün bir görüntüsü var, bazen bir ses notu, bazen birkaç karelik bir çekim. Çok kipli bir arayüz bunları kabul eder; kabul etmesi bedava değildir. Bu ders aynı denetim kaydını altı ayrı biçimde gönderir ve iki sayıyı yan yana basar: girdinin belirteç bedeli ve okumanın isabeti. Ölçülen şey modelin görme yeteneği değil, biçim seçiminin faturasıdır.
- AK41. Kod bir benzeticidir; gerçek bir çok kipli uç nokta çağrılmaz. Denetim kayıtları, sayaç yüzü ve bütün kip görünürlükleri kurgudur, tohum 20260218.
- AK42. Çok kipli bir uç noktanın faturaladığı birim yine belirteçtir. Görüntü ızgara hücrelerine, ses parçalara, dizi karelere ayrılır ve her hücre bir belirteç sayılır. Bu dersin bütün bedel sütunu bu birimle yazılır.
- AK43. Altı biçim şunlardır: elle yazılmış metin özeti, kaba ızgara (4x10), ince ızgara (8x20), kırpık ince ızgara (3x8), dizi (kayıt başına dört ile yedi kare, her kare bir kaba ızgara) ve ses (on sekiz ile otuz parça).
- AK44. Her kip iki görünürlük payı taşır: endeksin ve gövde durumunun doğru okunma payı. Bu paylar benzeticinin kurgu sabitleridir; çözünürlük arttıkça yükselirler.
- AK45. Ses kipinin gövde durumu görünürlüğü sıfırdır. Bir kip bir alana kör olabilir ve bu bir hata değil, o kipin taşıdığı bilginin sınırıdır.
- AK46. Kullanılabilir kayıt, hem endeksi hem gövde durumu doğru okunan kayıttır; bu dersin ürün ölçütü budur. Tek alanı doğru okunan kayıt saha ekibinin işine yaramaz.
- AK47. Bağlam penceresi 240 belirteç, hız sınırı otuz yedi çağrıda bir. Yapay Zekâ Mühendisliğine Giriş kursunda kurulan yüzey aynen sürer.
- AK48. Makine Öğrenmesi ve Veri Bilimi müfredatının Doğal Dil İşleme ve Bilgisayarla Görme kursu çok kipli modelin ortak temsilini ölçtü; o yordam burada tekrarlanmaz. Ölçülen tek şey girdi biçiminin bedelidir.
Bir Kaydın Altı Biçimi
Bir görüntü arayüzden geçerken bir sayı dizisine, o dizi de belirteçlere çevrilir. Bu dersin benzeticisi çevrimi görünür kılmak için ızgarayı doğrudan istem metnine yazar: her hücre bir damga, her damga bir belirteç. Gerçek bir uç noktada ara adımlar farklıdır, fatura aynı yerden çıkar — çözünürlük yükseldikçe belirteç sayısı hücre sayısıyla birlikte büyür.
Aşağıdaki blok altmış kurgu denetim kaydını üretir, altı biçimi kurar ve çok kipli çağrıyı tanımlar. Görünürlük paylarının kipe göre değişmesi benzeticinin tek varsayımıdır.
# BENZETICI -- KURGUDUR. Gercek bir cok kipli uc nokta cagrilmaz. Denetim # kayitlari, sayac yuzu ve butun kip gorunurlukleri kurgudur. TOHUM, M32 = 20260218, 0xFFFFFFFF PENCERE = 240 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): h = 2166136261 for c in m: h = ((h ^ ord(c)) * 16777619) & M32 return h DURUM = ["saglam", "catlak", "muhursuz"] KAYIT = [] for i in range(60): # 60 KURGU saha denetim kaydi r = uretec(TOHUM + 900 + i) KAYIT.append({"no": 7001 + i, "endeks": "".join(str(int(r() * 10)) for _ in range(5)), "durum": DURUM[ayrik(r(), [0.58, 0.27, 0.15])], "kare": 4 + int(r() * 4), "sure": 18 + int(r() * 13)}) HUCRE = ".:-=+*#" def izgara(kayit, satir, sutun): """Sayac yuzunun KURGU izgarasi: her hucre ayri bir belirtec olarak yazilir.""" r = uretec(izno(kayit["endeks"] + kayit["durum"]) ^ (satir * 31 + sutun)) out = [] for y in range(satir): out.append(f"s{y}") out += [HUCRE[int(r() * 7)] for _ in range(sutun)] return " ".join(out) def govde(kayit, kip): """Ayni kaydin alti girdi bicimi. Tasinan bilgi ayni, uzunluk degil.""" if kip == "metin": return f"endeks {kayit['endeks']} govde {kayit['durum']}" if kip == "izgara kaba": return izgara(kayit, 4, 10) if kip == "izgara ince": return izgara(kayit, 8, 20) if kip == "izgara kirpik": return izgara(kayit, 3, 8) if kip == "ses": r = uretec(izno(kayit["endeks"]) ^ 7717) return " ".join(f"d{int(r() * 9)}" for _ in range(kayit["sure"])) return " ".join(f"k{j} " + izgara(kayit, 4, 10) for j in range(kayit["kare"])) # dizi: kare kare GORUNUR = {"metin": (1.00, 1.00), "izgara kaba": (0.62, 0.16), "izgara ince": (0.93, 0.85), "izgara kirpik": (0.91, 0.80), "dizi": (0.88, 0.95), "ses": (0.90, 0.00)} ONEK = "Sayac yuzunu oku . Endeks ve govde durumunu yaz . Kayit: " SAYAC = [0] def cagir_kipli(kayit, kip, tohum=TOHUM): """Cok kipli benzetici: her kip her alani kendi gorunurluk payiyla tasir.""" SAYAC[0] += 1 bel = belirtecle(ONEK + govde(kayit, kip)) if len(bel) > PENCERE: return {"durum": "baglam_asimi", "giris": len(bel), "cikis": 0} if SAYAC[0] % 37 == 0: return {"durum": "hiz_siniri", "giris": len(bel), "cikis": 0} r = uretec(tohum ^ izno(" ".join(bel))) ge, gd = GORUNUR[kip] e, d = kayit["endeks"], kayit["durum"] if r() >= ge: # okunamayan basamak komsusuna kayar j = int(r() * 5) e = e[:j] + str((int(e[j]) + 1 + int(r() * 8)) % 10) + e[j + 1:] if r() >= gd: d = DURUM[(DURUM.index(d) + 1 + int(r() * 2)) % 3] return {"durum": "tamam", "giris": len(bel), "endeks": e, "govde": d, "cikis": len(belirtecle(f"endeks {e} govde {d}"))} k = KAYIT[0] print(f"kayit {k['no']} : endeks {k['endeks']} , govde {k['durum']} ," f" {k['kare']} kare , {k['sure']} ses parcasi") for kip in GORUNUR: print(f" {kip:<14} giris belirteci {len(belirtecle(ONEK + govde(k, kip))):>4}") print("kaba izgaranin ilk iki satiri:") print(" ", " ".join(izgara(k, 4, 10).split()[:22])) uzun = next(x for x in KAYIT if x["kare"] == 7) for kayit, kip in ((k, "metin"), (k, "izgara kaba"), (k, "izgara ince"), (uzun, "dizi")): s = cagir_kipli(kayit, kip) bilgi = (f"endeks {s['endeks']} govde {s['govde']}" if s["durum"] == "tamam" else f"{s['giris']} belirtec , pencere {PENCERE}") print(f"{kayit['no']} {kip:<14} {s['durum']:<13} {bilgi}")
kayit 7001 : endeks 17328 , govde saglam , 5 kare , 21 ses parcasi metin giris belirteci 21 izgara kaba giris belirteci 59 izgara ince giris belirteci 183 izgara kirpik giris belirteci 42 dizi giris belirteci 240 ses giris belirteci 36 kaba izgaranin ilk iki satiri: s0 . * : - = * - : : + s1 = . : + = + : * + . 7001 metin tamam endeks 17328 govde saglam 7001 izgara kaba tamam endeks 17328 govde catlak 7001 izgara ince tamam endeks 17328 govde saglam 7005 dizi baglam_asimi 330 belirtec , pencere 240
Tek kaydın altı biçimi arasındaki fark 21 belirteç ile 240 belirteç arasında geziniyor. Taşınan bilgi her satırda aynı: beş basamaklı bir endeks ve üç değerli bir gövde durumu. Aradaki on bir katlık fark bilgiden değil, bilginin sarıldığı kaptan geliyor.
Son dört satır iki ayrı başarısızlık gösteriyor. Kaba ızgara endeksi doğru okuyor ama gövde
durumunu saglam yerine catlak diye veriyor: çözünürlük mührün ve çatlağın ayırt edilmesine
yetmiyor. Yedi kareli 7005 numaralı kayıtta ise okuma hiç gerçekleşmiyor; 330 belirteçlik dizi
240 belirteçlik pencereye girmiyor ve çağrı baglam_asimi ile dönüyor. En zengin girdi, hiç
girdi olmayan girdidir.
Altı Biçimin Bedel ve İsabet Tablosu
Altmış kaydın tamamı altı biçimde ayrı ayrı koşturulur. Her satırda toplam giriş belirteci, toplam çıkış belirteci, başarısız çağrı sayısı, iki alanın ayrı isabetleri, kullanılabilir kayıt oranı ve kullanılabilir kayıt başına belirteç basılır. Son sütun ikinci koşumdur: tohum 20260219 ile alınan kullanılabilir kayıt oranı, bir farkın gürültüden ayırt edilip edilemeyeceğini söyler.
def olc(kip, tohum=TOHUM): SAYAC[0] = 0 g = c = hata = ie = idr = kul = 0 for x in KAYIT: s = cagir_kipli(x, kip, tohum) g, c = g + s["giris"], c + s["cikis"] if s["durum"] != "tamam": hata += 1 continue e, d = s["endeks"] == x["endeks"], s["govde"] == x["durum"] ie, idr, kul = ie + e, idr + d, kul + (e and d) return g, c, hata, ie / 60, idr / 60, kul / 60 print("kip giris cikis basarisiz endeks durum kullanilabilir" " bel/kayit ikinci kosum") for kip in GORUNUR: a, b = olc(kip), olc(kip, TOHUM + 1) bk = f"{a[0] / (a[5] * 60):.1f}" if a[5] else "-" print(f"{kip:<14} {a[0]:>6} {a[1]:>6} {a[2]:>10} {a[3]:>7.4f} {a[4]:>7.4f}" f" {a[5]:>15.4f} {bk:>10} {b[5]:>13.4f}")
kip giris cikis basarisiz endeks durum kullanilabilir bel/kayit ikinci kosum metin 1260 354 1 0.9833 0.9833 0.9833 21.4 0.9833 izgara kaba 3540 354 1 0.6500 0.1333 0.0833 708.0 0.0833 izgara ince 10980 354 1 0.9500 0.8500 0.8167 224.1 0.7833 izgara kirpik 2520 354 1 0.8833 0.7833 0.7000 60.0 0.6833 dizi 16155 150 35 0.3667 0.4167 0.3667 734.3 0.2833 ses 2300 354 1 0.8833 0.0000 0.0000 - 0.0000
Çıkış belirteci sütunu altı satırda da aynı: 354. Yanıt her biçimde altı belirteçlik tek bir kayıttır. Değişen şey yalnız girdidir ve bu, çok kipli bir arayüzün faturasının hangi tarafta şiştiğini gösteren en sade satırdır. Metin özetinin toplam bedeli 1260 belirteç; ince ızgaranın bedeli 10980, yani sekiz buçuk katı. Aynı bilgi, aynı yanıt.
Birinci satır bir sınır durumudur ve dürüstçe okunmalıdır. Metin özeti hem en ucuz hem en isabetlidir, ama o özeti birisi zaten okumuş olmalıdır. Kullanılabilir kayıt oranının 0,9833’te kalmasının sebebi de okuma değil, otuz yedinci çağrıda gelen hız sınırı reddidir. Bu satır bir kip seçeneği değil, işin insan tarafında çözülmüş hâlidir; tablodaki işlevi diğer beş satırın ne kadarını geri kazanmaya çalıştığını göstermektir.
Kırpma, Kör Kip ve Pencereye Sığmayan Dizi
Kaba ızgara ile ince ızgara arasındaki fark, çözünürlüğün hangi alanı kurtardığını söylüyor. Endeks isabeti 0,6500’den 0,9500’e çıkıyor, ama asıl sıçrama gövde durumundadır: 0,1333’ten 0,8500’e. Bir çatlak beş basamaklı bir sayıdan daha ince bir ayrıntıdır ve kaba ızgarada görünmez. Kullanılabilir kayıt bu iki alanın çarpımı gibi davranıyor ve 0,0833’ten 0,8167’ye çıkıyor. Bedel dörtte üç oranında artıyor: 3540 belirteçten 10980 belirtece.
Kırpık ızgara satırı bu dersin asıl bulgusudur. Kırpma çözünürlüğü değil alanı küçültür: aynı ince ayrıntı düzeyi, sayacın yalnız endeks ve mühür bölgesine uygulanır. Sonuç 2520 belirteç ve 0,7000 kullanılabilir kayıt. İnce ızgaranın kullanılabilir kayıtlarının yaklaşık yüzde seksen altısını, onun dörtte biri kadar belirteçle veriyor. Kullanılabilir kayıt başına bedel 224,1’den 60,0’a düşüyor. İki koşum sütunu bu okumayı destekliyor: ince ızgara 0,8167 ve 0,7833, kırpık ızgara 0,7000 ve 0,6833 veriyor, yani aradaki 0,1167’lik fark koşum farkından büyüktür ve gerçektir. Gerçek olan şey ince ızgaranın üstünlüğüdür; tartışmalı olan, o üstünlüğün kayıt başına 164 belirtece değip değmediğidir.
Dizi satırı en yüksek görünürlüğe sahip biçimdir ve tablonun en kötü satırlarından biridir. Kare kare bakmak gövde durumunu 0,95 payla görünür kılar, çünkü hareket çatlağı ele verir. Ne var ki altmış kaydın otuz dördü altı ya da yedi kare taşıyor ve 240 belirteçlik pencereye girmiyor. Başarısız çağrı sayısı 35 (otuz dört bağlam aşımı ve bir hız sınırı), kullanılabilir kayıt 0,3667, toplam bedel 16155 belirteçle tablonun en yükseği. Görünürlüğü en yüksek kip, teslim ettiği kayıt bakımından kırpık ızgaranın yarısı kadar. Bu, bu müfredatın ikinci iddiasının çok kipli girdideki karşılığıdır: eklenen zenginlik ölçüyü düşürebilir.
Ses satırı bir başka sınırı gösteriyor. Endeks isabeti 0,8833 ile ince ızgaraya yakın, gövde durumu isabeti 0,0000. Ses kaydı endeksi okuyan bir insanı taşıyor, çatlağı taşımıyor. Kullanılabilir kayıt bu yüzden sıfırdır ve kayıt başına bedel hesaplanamaz. Bir kipin bir alanı taşımaması ortalama bir isabet sayısında görünmez; ancak alanlar ayrı ayrı sayıldığında ortaya çıkar. Bir kip seçimi bir çözünürlük kararı değil, hangi alanların taşınacağı kararıdır.
Özet
- Çok kipli bir arayüzün faturası yine belirteçle yazılır: ızgara hücresi, ses parçası ve dizi karesi girdi belirtecine dönüşür, çıkış belirteci altı biçimde de 354’te sabit kalır.
- Aynı kaydın bedeli metin özetinde 21, kırpık ızgarada 42, kaba ızgarada 59, ince ızgarada 183 belirteç; taşınan bilgi değişmez, kap değişir.
- Çözünürlük artışı gövde durumu isabetini 0,1333’ten 0,8500’e çıkarır; ince ayrıntı kaba ızgarada görünmez ve kullanılabilir kayıt 0,0833’te kalır.
- Kırpma çözünürlüğü değil alanı küçültür: ince ızgaranın kullanılabilir kayıtlarının yüzde seksen altısını dörtte bir belirteçle verir, kayıt başına bedel 224,1’den 60,0’a düşer.
- Dizi biçimi en yüksek görünürlüğe sahiptir ama altmış kaydın otuz dördü pencereye sığmadığı için 0,3667’de kalır ve 16155 belirteçle en pahalı satırdır.
- Ses kipi endeksi 0,8833 ile okur, gövde durumuna kördür ve kullanılabilir kayıt üretmez; bir kipin taşımadığı alan ancak alanlar ayrı sayıldığında görünür.
Sonraki Adım
Bu derste girdi hep bir kayıt hakkında gönderildi ve model onu okudu. Sorulmayan soru şu: altmış kaydın hangisinin şu anki talebe benzediğini bulmak gerekseydi, hepsini isteme koymak mümkün olmadığına göre benzerlik neyin üzerinden hesaplanırdı. Arayüz bunun için ayrı bir yüzey sunar: metni bir sayı dizisine çeviren ve yanıt olarak metin değil vektör döndüren bir uç nokta. Sonraki ders bu yüzeyi ölçer ve tek bir karara odaklanır: vektörün kaç boyutlu olacağı. Boyut düştükçe saklanan sayı ve karşılaştırma maliyeti düşer, komşuluk isabeti de düşer; ikisinin hangi noktada ayrıştığı sayılır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.