Kodlayıcı transformer'lar

PyTorch ile Transformer Modelleri

James Chapman

Curriculum Manager, DataCamp

Orijinal transformer

Akademik makale Attention Is All You Need'de gösterilen transformer mimarisi.

PyTorch ile Transformer Modelleri

Orijinal transformer

Orijinal transformer mimarisi

PyTorch ile Transformer Modelleri

Yalnızca kodlayıcı transformer'lar

Yalnızca kodlayıcı transformer mimarisi

Transformer gövdesi: N kodlayıcı katmanlı kodlayıcı yığını

Kodlayıcı katmanı

  • Çok başlı öz-dikkat
  • İleri beslemeli (alt)katmanlar
  • Katman normalizasyonları, dropout'lar

Transformer başı

PyTorch ile Transformer Modelleri

Yalnızca kodlayıcı transformer'lar

Yalnızca kodlayıcı transformer mimarisi

Transformer gövdesi: N kodlayıcı katmanlı kodlayıcı yığını

Kodlayıcı katmanı

  • Çok başlı öz-dikkat
  • İleri beslemeli (alt)katmanlar
  • Katman normalizasyonları, dropout'lar

Transformer başı: kodlanmış girdileri işleyerek çıktı tahmini üretir

Denetimli görev: sınıflandırma, regresyon

PyTorch ile Transformer Modelleri

Kodlayıcı katmanlarında ileri beslemeli alt katman

Dikkatten sonra ileri beslemeli alt katman

class FeedForwardSubLayer(nn.Module):
    def __init__(self, d_model, d_ff):
        super().__init__()
        self.fc1 = nn.Linear(d_model, d_ff)
        self.fc2 = nn.Linear(d_ff, d_model)
        self.relu = nn.ReLU()


def forward(self, x): return self.fc2(self.relu(self.fc1(x)))

2 x tam bağlantılı + ReLU aktivasyonu

  • d_ff: doğrusal katmanlar arası boyut

  • forward(): dikkat çıktılarından karmaşık, doğrusal olmayan örüntüler yakalar

PyTorch ile Transformer Modelleri

Kodlayıcı katmanı

class EncoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        self.self_attn = MultiHeadAttention(d_model, num_heads)
        self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)

self.norm1 = nn.LayerNorm(d_model) self.norm2 = nn.LayerNorm(d_model) self.dropout = nn.Dropout(dropout)
def forward(self, x, src_mask): attn_output = self.self_attn(x, x, x, src_mask) x = self.norm1(x + self.dropout(attn_output)) ff_output = self.ff_sublayer(x) x = self.norm2(x + self.dropout(ff_output)) return x

Kodlayıcı katmanı

  • Çok başlı öz-dikkat
  • İleri beslemeli alt katman
  • Katman normalizasyonları ve dropout'lar

forward():

  • mask, dolgu (padding) belirteçlerinin işlenmesini engeller
PyTorch ile Transformer Modelleri

Dikkat sürecini maskeleme

Dizileri doldurma

Öz-dikkatte dolgu maskesi

PyTorch ile Transformer Modelleri

Kodlayıcı transformer gövdesi

class TransformerEncoder(nn.Module):
    def __init__(self, vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length):
        super().__init__()

self.embedding = InputEmbeddings(vocab_size, d_model)
self.positional_encoding = PositionalEncoding(d_model, max_seq_length)
self.layers = nn.ModuleList( [EncoderLayer(d_model, num_heads, d_ff, dropout) for _ in range(num_layers)] )
def forward(self, x, src_mask): x = self.embedding(x) x = self.positional_encoding(x) for layer in self.layers: x = layer(x, src_mask) return x
PyTorch ile Transformer Modelleri

Kodlayıcı transformer başı

class ClassifierHead(nn.Module):
    def __init__(self, d_model, num_classes):
        super().__init__()
        self.fc = nn.Linear(d_model, num_classes)

    def forward(self, x):
        logits = self.fc(x)
        return F.log_softmax(logits, dim=-1)
class RegressionHead(nn.Module):
    def __init__(self, d_model, output_dim):
        super().__init__()
        self.fc = nn.Linear(d_model, output_dim)

    def forward(self, x):
        return self.fc(x)

Sınıflandırma başı

  • Görevler: metin sınıflandırma, duygu analizi, NER, çıkarımsal Soru-Cevap vb.
  • fc: tam bağlantılı doğrusal katman
    • Kodlayıcı gizil durumlarını num_classes sınıf olasılıklarına dönüştürür

Regresyon başı

  • Görevler: metin okunabilirliği, dil karmaşıklığı tahmini vb.
    • Tek sayısal değer tahmini için output_dim 1'dir
PyTorch ile Transformer Modelleri

Ayo berlatih!

PyTorch ile Transformer Modelleri

Preparing Video For Download...