Attention nedir?
- Makine Öğrenmesi kursu
- Uzman
- Ders 1/44
- 5 dk
Attention, modelin girdinin önemli kısımlarına odaklanmasını sağlar.
Attention nedir?
Dikkat (attention), bir dizinin her elemanının diğer elemanlardan ne kadar bilgi alacağını öğrenen mekanizmadır. "Banka" kelimesinin anlamı cümlede "nehir" mi "para" mı geçtiğine bağlıdır; attention bu ilişkiyi ağırlıklarla kurar.
# her kelime için: diğer kelimelere dikkat ağırlıkları (toplamı 1)
# yeni temsil = ağırlıklı ortalama(diğer kelimelerin değerleri)
agirlik = softmax(skorlar) # (n,)
cikis = agirlik @ degerler # (d,)RNN'in aksine attention tüm konumlara aynı anda bakar: uzak kelimeler arasındaki bağ tek adımda kurulur ve hesap paralel yapılabilir.
Ağırlıklı ortalama
Attention'ın çekirdeği basittir: skorları softmax ile olasılığa çevir, değerlerin ağırlıklı ortalamasını al. Skorlar benzerlik ölçer; en benzer elemanlar en çok katkı verir:
degerler = np.array([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]])
skor = np.array([2.0, 0.0, 0.0])
a = softmax(skor) # [0.787 0.107 0.107]
print(a @ degerler) # [0.893 0.213]: çoğunlukla ilk değerSkorlar eşit olsaydı sonuç değerlerin düz ortalaması olurdu.
Uygulama İlk attention
Verilen skor için softmax ağırlıklarını hesapla ve np.round(..., 3) ile yazdır. Ardından degerler'in ağırlıklı ortalamasını np.round(..., 3) ile yazdır. Son olarak eşit skorlarla (np.zeros(3)) sonucun düz ortalama olduğunu np.allclose ile yazdır.
Başlangıç kodu
import numpy as np
def softmax(z, eksen=-1):
e = np.exp(z - z.max(axis=eksen, keepdims=True))
return e / e.sum(axis=eksen, keepdims=True)
degerler = np.array([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]])
skor = np.array([2.0, 0.0, 0.0])
# buraya yazÖrnek çözüm
import numpy as np
def softmax(z, eksen=-1):
e = np.exp(z - z.max(axis=eksen, keepdims=True))
return e / e.sum(axis=eksen, keepdims=True)
degerler = np.array([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]])
skor = np.array([2.0, 0.0, 0.0])
a = softmax(skor)
print(np.round(a, 3))
print(np.round(a @ degerler, 3))
print(np.allclose(softmax(np.zeros(3)) @ degerler, degerler.mean(axis=0)))Beklenen çıktı
[0.787 0.107 0.107] [0.893 0.213] True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Attention'ın RNN'e göre temel avantajı nedir?
- Etiket gerektirmez
- Uzak konumları tek adımda ilişkilendirir ve paralel hesaplanır Doğru cevap
- Daha az bellek kullanır
- Parametresi yoktur
Açıklama: RNN'de bilgi adım adım taşınır; attention doğrudan bağlantı kurar.
2 Değerlerin ağırlıklı ortalamasını al.
cikis = agirlik ____ degerler
cikis = agirlik @ degerler
Açıklama: Ağırlık vektörü ile değer matrisinin çarpımı ağırlıklı toplamdır.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
skor |
Benzerlik ölçüsü |
softmax |
Ağırlıklara çevirir |
değer |
Taşınan bilgi |
eşit skor |
Düz ortalama |