Görsellerle Attention
Bazı kelimelerin anlamı çevresindeki kelimelerle değişir. "Dere boyunca yürüdük ve çay kenarında oturduk" cümlesinde çay bir akarsudur. "Kahvaltıda simit yedik ve çay içtik" cümlesinde ise bir içecektir. Bir dil modeli bunu her kelime için, her seferinde çözmek zorundadır. Bunun için kullandığı araca attention denir.
Fikir basit. Model bir kelimeye bakarken metindeki diğer kelimelere de bakar ve her birinin ne kadar önemli olduğuna karar verir. Basit tutmak için burada tam kelimeler kullanıyoruz; gerçek modeller aynı şeyi tokenlarla yapar. Bir cümle seçin ve "çay"ın her kelimeye ne kadar dikkat verdiğini görün.
Örnek ağırlıklar, elle seçildi. Mor kutu bakan kelimedir; daha koyu kelimeler onun dikkatinden daha çok pay alır ve bütün ağırlıklarının toplamı %100'dür.
Dere cümlesinde "çay" en çok "Dere" kelimesine bakıyor. Kahvaltı cümlesinde ise en çok "Kahvaltıda" kelimesine bakıyor. "Çay"dan sonra gelen kelimelere dikkat edin: Hiç pay almıyorlar. Önceki yazılardakiler gibi metni token token yazan modeller, her kelimenin yalnızca kendisine ve kendisinden önceki kelimelere bakmasına izin verebilir.
Model bu sayılara nasıl karar veriyor? Her kelime üç sayı listesi üretir. Bir query, kelimenin ne aradığını söyler. Bir key, kelimenin ne sunduğunu söyler. Bir value ise başka bir kelime ona baktığında aktardığı bilgidir. Model, "çay"ın başka bir kelimeye ne kadar bakacağına karar vermek için "çay"ın query'sini o kelimenin key'iyle karşılaştırır.
Bu karşılaştırma, embedding yazısındaki ok fikrinin aynısıdır: İki ok aynı yöne baktığında skor yüksek olur. Ardından softmax adlı bir fonksiyon bütün skorları toplamı %100 olan ağırlıklara çevirir. Query'yi döndürün ve dikkatin nereye gittiğini izleyin.
| Key | Skor | Ağırlık |
|---|---|---|
| Dere | 0.99 | %81 |
| Kahvaltıda | 0.48 | %18 |
| ve | -0.45 | %1 |
İkişer sayılık örnek vektörler. Skor, query ile her key'in dot product'ıdır. Softmax ardından skorları toplamı %100 olan ağırlıklara çevirir. Farklar daha kolay görünsün diye burada skorlar önce 3 ile çarpılıyor; gerçek modeller de skorları sabit bir sayıyla ölçekler.
Yani bu ağırlıkları kimse elle yazmaz. Her query'nin her key'e ne kadar uyduğundan çıkarlar; model de eğitim sırasında her kelime için iyi query'ler ve key'ler üretmeyi öğrenir. "Çay"ın "Dere" ya da "Kahvaltıda" kelimesini kendi başına bulabilmesini sağlayan budur.
Son adım harmanlamaktır. Ağırlıklar hazır olunca model kelimelerin value'larını alır, ağırlıklarıyla çarpar ve toplar. Bu karışım kelimenin kendi sayılarına eklenir; böylece "çay" artık cümleye göre biraz "Dere" ya da biraz "Kahvaltıda" taşır. Cümleler arasında geçiş yapın ve "çay"ın nasıl kaydığını izleyin.
Dere boyunca yürüdük ve çay kenarında oturduk
İkişer sayılık örnek vektörler; ilk demodaki ağırlıklar kullanılıyor. Gerçek modellerde her kelime için yüzlerce ya da binlerce sayı vardır.
Attention budur: Etrafına bak, neyin önemli olduğuna karar ver ve onu harmanla. Gerçek modeller bunu her seferinde farklı query'ler ve key'lerle, yan yana birçok kez yapar. Bunların her birine attention head denir. Ayrıca bütün adımı üst üste birçok katmanda tekrarlarlar. Bugünkü dil modellerinin çoğunun ardındaki tasarım olan transformer, bu fikrin etrafında kuruludur.
Bir de uyarı. Yukarıdakiler gibi attention resimlerine bakmak eğlencelidir; ama gerçek bir modelde bunlar, modelin neden o yanıtı verdiğini her zaman açıklamaz. Birçok head ve katman birlikte çalışır ve tek bir ağırlık kümesi hikayenin yalnızca küçük bir kısmını gösterir.
Bu içerik size yardımcı olduysa bana bir kahve ısmarlayabilirsiniz.
yazılım, tasarım ve yapay zeka üzerine etkileşimli yazı ve kurslardan haberdar olmak için bültene katılabilirsiniz. Ayda en fazla birkaç e-posta alırsınız.