Transformer nedir?
- Makine Öğrenmesi kursu
- Uzman
- Ders 7/44
- 5 dk
Transformer, attention mekanizmasına dayalı dizi modelidir.
Transformer nedir?
Transformer (2017, "Attention Is All You Need"), yinelemeli katman kullanmadan yalnızca dikkat ve ileri beslemeli katmanlarla kurulan dizi modelidir. Bir blok iki alt katmandan oluşur; her birinin çevresinde artık bağlantı ve katman normalizasyonu vardır:
# bir encoder bloğu
x = layer_norm(x + self_attention(x))
x = layer_norm(x + ffn(x)) # ffn: Linear -> ReLU -> LinearBloklar üst üste yığılır (BERT-base: 12, GPT-3: 96). Giriş ve çıkış şekli hep (n, d_model) kaldığı için yığma kolaydır.
Artık bağlantı ve LayerNorm
Artık bağlantı (x + f(x)) gradyanın derin ağda doğrudan akmasını sağlar. LayerNorm her konumun vektörünü kendi içinde normalleştirir (ortalama 0, varyans 1); BatchNorm'un aksine yığın boyutundan bağımsızdır:
def layer_norm(x, eps=1e-5):
m = x.mean(axis=-1, keepdims=True)
v = x.var(axis=-1, keepdims=True)
return (x - m) / np.sqrt(v + eps)
print(layer_norm(np.array([1., 2., 3., 4.]))) # [-1.342 -0.447 0.447 1.342]Gerçek LayerNorm, normalleştirmeden sonra öğrenilen bir ölçek (γ) ve kayma (β) da uygular.
Uygulama LayerNorm
layer_norm fonksiyonunu yaz. Verilen x (3 konum × 4 boyut) için sonucun her satırının ortalamasını ve standart sapmasını np.round(..., 3) ile alt alta yazdır. Ardından ilk satırın normalleşmiş hâlini np.round(..., 3) ile yazdır.
Başlangıç kodu
import numpy as np
x = np.array([[1., 2., 3., 4.], [10., 10., 20., 20.], [-1., 0., 0., 1.]])
# buraya yazÖrnek çözüm
import numpy as np
x = np.array([[1., 2., 3., 4.], [10., 10., 20., 20.], [-1., 0., 0., 1.]])
def layer_norm(x, eps=1e-5):
m = x.mean(axis=-1, keepdims=True)
v = x.var(axis=-1, keepdims=True)
return (x - m) / np.sqrt(v + eps)
y = layer_norm(x)
print(np.round(y.mean(axis=-1), 3))
print(np.round(y.std(axis=-1), 3))
print(np.round(y[0], 3))Beklenen çıktı
[0. 0. 0.] [1. 1. 1.] [-1.342 -0.447 0.447 1.342]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Transformer bloklarını üst üste yığmayı kolaylaştıran nedir?
- Havuzlama katmanları
- Giriş ve çıkış şeklinin aynı (n, d_model) kalması Doğru cevap
- Parametre paylaşımı
- Yinelemeli bağlantılar
Açıklama: Her blok aynı şekli alıp aynı şekli verir.
2 Artık bağlantıyı ekle.
x = layer_norm(x ____ self_attention(x))
x = layer_norm(x + self_attention(x))
Açıklama: Artık bağlantı girişi alt katmanın çıktısına ekler.
3 Parçaları eşleştir.
| Kavram | Anlamı |
|---|---|
self-attention |
Konumlar arası bilgi |
FFN |
Konum başına dönüşüm |
x + f(x) |
Artık bağlantı |
LayerNorm |
Vektör başına normalleştirme |