Sobes.tech
Middle — Senior

Bir transformatör nasıl yapılandırılmıştır ve içinde hangi büyük bloklar vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Transformer, dizisi işleme için yaygın olarak kullanılan bir yapay sinir ağı mimarisidir, örneğin metin. Transformer'ın temel fikri, dikkat mekanizmasını kullanarak giriş verilerinin farklı bölümlerinin önemini, yineleyen veya konvolüsyonel katmanlar olmadan ağırlıklandırmaktır.

Transformer'ın ana blokları:

  1. Giriş temsili (Embedding) — giriş tokenlerini vektör temsillerine dönüştürür.

  2. Pozisyonel kodlama (Positional Encoding) — dikkat mekanizması sıralamayı dikkate almadığı için, tokenlerin dizideki konumu hakkında bilgi ekler.

  3. Dikkat mekanizması (Self-Attention) — her token için diğer tüm tokenlere göre ağırlık katsayıları hesaplar, böylece model girişin ilgili bölümlerine odaklanabilir.

  4. Çok başlıklı dikkat (Multi-Head Attention) — farklı bağımlılık yönlerini yakalamak için birkaç dikkat mekanizmasını paralel olarak uygular.

  5. Normalizasyon ve kalıntı bağlantılar (Layer Normalization ve Residual Connections) — eğitim stabilitesini sağlar ve gradyan akışını iyileştirir.

  6. Tam bağlantılı katmanlar (Feed-Forward Network) — her dizilim öğesine bağımsız olarak uygulanır ve doğrusal olmayan dönüşümler sağlar.

  7. Çıkış katmanı — üretim veya sınıflandırma görevleri için.

Basitleştirilmiş bir transformer katmanı yapısına örnek:

class TransformerLayer(nn.Module):
    def __init__(self, d_model, nhead):
        super().__init__()
        self.self_attn = nn.MultiheadAttention(d_model, nhead)
        self.linear1 = nn.Linear(d_model, d_model*4)
        self.linear2 = nn.Linear(d_model*4, d_model)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)

    def forward(self, x):
        attn_output, _ = self.self_attn(x, x, x)
        x = self.norm1(x + attn_output)
        ff_output = self.linear2(F.relu(self.linear1(x)))
        x = self.norm2(x + ff_output)
        return x

Bu şekilde, transformer tekrar eden katmanlardan oluşur, bu da verilerdeki bağımlılıkları verimli bir şekilde modellemeye olanak tanır.