Bellek bir veritabanı değildir.
Çoklu-ajan tasarımındaki en yaygın hata, ajan belleğini bir veritabanı gibi ele almaktır — her şeyi sakla, sorguda eriş. Bir veritabanı kusursuz hatırlar ve hiçbir şeyi unutmaz, ve bu tam olarak bir zihin için yanlış şekildir. GOGOGO'da ajan belleğini gerçekte nasıl kuruyoruz: epizodik vs semantik, unutmanın neden bir özellik olduğu ve kullandığımız dört-katmanlı model.

Atakan Özalan
Kurucu ortak & mühendislik lideri, GOGOGO LLC

Çoklu-ajan sistemlerinde gördüğüm en yaygın mimari hata şu — GOGOGO LLC'deki erken çalışmamızda da yaptık: bir ajanın belleğini bir veritabanı gibi ele almak. Her etkileşimi sakla. İndeksle. Sonraki turda benzerlikle eriş. Buna bellek de. Yayına al.
Doğru hissettiriyor çünkü bir veritabanı da bir bellek de 'sonradan geri alabileceğin şeyleri tutar.' Ama bir veritabanı kusursuz hatırlamak ve hiçbir şeyi unutmamak için kuruludur — ve bu tam olarak bir zihin için yanlış şekildir. Her şeyi eşit hatırlayan bir sistemin hiç belleği yoktur; bir günlüğü vardır. Bu yazı ajan belleğini gerçekte nasıl kurduğumuz ve işin çoğunun neden neyi atacağına karar vermek olduğu.
Bir veritabanının yaptığı, bir belleğin yapmaması gereken
Bir veritabanının dört özelliği vardır, depolama için erdem, biliş için kusur. Eksiksizdir — yazdığın her satır hâlâ orada. Düzdür — bir yıl önceki bir satır, bir saniye önceki kadar erişilebilir. Lafzidir — ne anlama geldiğini değil, ne olduğunu saklar. Ve sorgulanır — tam olarak istemediğin sürece hiçbir şey yüzeye çıkmaz.
Bir zihin dördünde de tam tersidir. Kayıplıdır — bugün yaşadığının çoğu çoktan gitti, bilerek. Derecelidir — yeni ve önemli şeyler yüksek sesli, eski ve önemsiz şeyler soluk. Yorumlanmıştır — bir konuşmanın anlamını, kelimelerden çok sonra hatırlarsın. Ve çağrışımsaldır — anılar istenmeden yüzeye çıkar çünkü şu anki an onlara benzer. Bir zihni varmış gibi davranması gereken bir ajan, oraya bir tablo sorgulayarak ulaşamaz. İstediğin davranış, veritabanının yapmayı reddettiği dört şeydedir.
Gerçekte kurduğumuz dört katman
Ajan belleğimiz tek bir depo değil. Dört tane, her birinin farklı bir ömrü ve farklı bir işi var.
1 · Çalışma belleği — şu anki çalıştırma
Ajanın şu anda tuttuğu şey: görev, son birkaç adım, anlık bağlam. Küçük, hızlı ve çalıştırma bittiğinde bilerek atılır. Çalışma belleği kalıcılaştırılmaz çünkü onu kalıcılaştırmak, bir sonraki çalıştırmayı bir öncekinin gürültüsüyle zehirleme biçimidir. 'Ajan kafası karıştı' hatalarının çoğu, atılması gereken ama atılmamış çalışma belleğidir.
2 · Epizodik bellek — ne oldu
Belirli geçmiş çalıştırmaların bir kaydı: bu müşteri şunu sordu, sistem şunu yaptı, not buydu. Epizodik bellek bir veritabanına yakındır — ama kritik kısım şu ki çürür. Bir epizot bir önem skoru taşır; sıradan epizotlar solar ve budanır, şaşırtıcı ya da yüksek-sonuçlu olanlar tutulur. Her epizodu tutmayız. Öğrenmeye değer olanları tutarız.
3 · Semantik bellek — ne anlama geliyor
Bu, ekiplerin atladığı katman ve en çok önem taşıyan. Semantik bellek olaylar değil — birçok olayın damıtılmış anlamı. 'Bu müşteri kısa yanıtları tercih ediyor.' 'Bu tedarikçiden gelen faturalar her zaman vergi alanının düzeltilmesini gerektirir.' Epizodik belleği okuyup olgular yazan bir arka plan süreci tarafından üretilir. Semantik bellek küçük, dayanıklı ve insan-okunabilirdir. Bir ajanı seni aramış gibi değil, seni biliyormuş gibi hissettiren şey budur.
4 · Prosedürel bellek — ne işe yarıyor
En yavaş, en değerli katman: öğrenilmiş prosedür. 'Bu görev sınıfı için, bu sıradaki bu ajan dizisi en iyi notu üretir.' Prosedürel bellek, bir çoklu-ajan sisteminin bir insan yeniden ayarlamadan zamanla işinde nasıl daha iyi olduğudur. Nadiren ve yalnızca güçlü kanıtla değişir — sistemin notları değil, zorla kazanılmış becerisidir.
Unutmak, bir özelliktir
Yukarıdaki her şeyin içinde çürüme var ve bu tasarım, özür dilediğimiz bir kısıt değil. Unutamayan bir ajanın üç başarısızlık modu var ve bunu anlamadan önce üçüne de çarptık.
- Yavaşlar. Her tur, sürekli büyüyen bir depoya karşı erişir. 100 epizotta atik olan ajan, 100.000'de ağırdır.
- Kafası karışır. Bayat olgular ve güncel olgular eşit ağırlıkta durur. Ajan, altı ay önce doğru ve bugün yanlış bir şeyi gösterir, çünkü veritabanı ona olgunun yaşlandığını asla söylemedi.
- Ürkütücüleşir. Kullanıcının bir yıl önce, geçerken, bir kez söylediği bir şeyi yüzeye çıkaran bir ajan zeki hissettirmez. Gözetim hissettirir. Zarif unutma aynı zamanda bir nezakettir.
Bu yüzden her belleği önem için skorluyoruz ve düşük-önemli belleklerin ölmesine izin veriyoruz. Unutmak veri kaybı değil. Bir günlüğü bir belleğe çeviren eylem — ve buradaki tasarım içgüdüsü, ajan dünyalarını dikkatle kurmak hakkında yazdığımla aynı: kurduğun zihnin şeklinden sen sorumlusun.
“Bir veritabanı asla kaybetmediğiyle yargılanır. Bir bellek, doğru biçimde bıraktığıyla yargılanır. Ajanın hiçbir şey unutmuyorsa, ona bir bellek vermedin — ona bir istif verdin, ve bir istif her geçen gün daha ağır ve daha az faydalı olur.”
Nasıl başlamalı
Ajanının bugün tek, ayrışmamış bir vektör deposu varsa, her şeyi yeniden kurma. Bunu sırayla yap. Önce çalışma belleğini ayır ve çalıştırma sonunda atıldığından emin ol — bu tek başına şaşırtıcı sayıda 'kafası karışık ajan' hatasını düzeltir. İkincisi, saklanan epizotlara bir önem skoru ve düşük ucu budayan bir iş ekle; artık deponun sınırsız büyümesi durur. Üçüncüsü, semantik damıtma geçişini ekle — epizotları birkaç dayanıklı, okunabilir olguya çeviren arka plan süreci. Prosedürel bellek en son gelir, öğrenecek notların olduğunda. Bir seferde bir katman, ve dört adımdan üçünün şeyleri kaldırmakla ilgili olduğuna dikkat et. Bu tesadüf değil. Bellek budur. Nasıl düşündüğüme dair daha fazlası atakanozalan.com.