Transformer mã hóa–giải mã

Các mô hình Transformer với PyTorch

James Chapman

Curriculum Manager, DataCamp

Encoder gặp decoder

Kiến trúc transformer gốc

Các mô hình Transformer với PyTorch

Encoder gặp decoder

Kết hợp encoder và decoder

Các mô hình Transformer với PyTorch

Cơ chế cross-attention

 

  1. Thông tin được xử lý trong decoder
  2. Trạng thái ẩn cuối từ khối encoder

 

Ví dụ cross-attention

Decoder với cross-attention

Các mô hình Transformer với PyTorch

Chỉnh sửa DecoderLayer

 

  1. Thông tin được xử lý trong decoder
  2. Trạng thái ẩn cuối từ khối encoder

 

  • x: dòng chảy thông tin decoder, thành truy vấn cross-attention
  • y: đầu ra encoder, thành khóagiá trị cross-attention
class DecoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        self.self_attn = MultiHeadAttention(
                          d_model, num_heads)
        self.cross_attn = MultiHeadAttention(
                          d_model, num_heads)
        ...


def forward(self, x, y, tgt_mask, cross_mask): self_attn_output = self.self_attn(x, x, x, tgt_mask) x = self.norm1(x + self.dropout(self_attn_output)) cross_attn_output = self.cross_attn(x, y, y, cross_mask) x = self.norm2(x + self.dropout(cross_attn_output)) ...
Các mô hình Transformer với PyTorch

Chỉnh sửa DecoderTransformer

 

Chỉ decoder
class TransformerDecoder(nn.Module):
...
def forward(self, x, tgt_mask):
    x = self.embedding(x)
    x = self.positional_encoding(x)
    for layer in self.layers:
        x = layer(x, tgt_mask)
    x = self.fc(x)
    return F.log_softmax(x, dim=-1)

 

Encoder–decoder
class TransformerDecoder(nn.Module):
...

def forward(self, x, y, tgt_mask, cross_mask): x = self.embedding(x) x = self.positional_encoding(x) for layer in self.layers: x = layer(x, y, tgt_mask, cross_mask) x = self.fc(x) return F.log_softmax(x, dim=-1)
Các mô hình Transformer với PyTorch

Encoder gặp decoder

Kết hợp encoder và decoder

Các mô hình Transformer với PyTorch

Transformer head

 

Ví dụ đầu ra cho dịch máy

  • jugar (chơi): 0.03
  • viajar (du lịch): 0.96
  • dormir (ngủ): 0.01

Với nhiệm vụ khác, có thể cần các kích hoạt khác

Decoder với đầu transformer

Các mô hình Transformer với PyTorch

Gộp tất cả lại!

Tổng quan transformer encoder–decoder

Các mô hình Transformer với PyTorch

Gộp tất cả lại!

class InputEmbeddings(nn.Module):
  ...  
class PositionalEncoding(nn.Module):
  ...  
class MultiHeadAttention(nn.Module):
  ...
class FeedForwardSubLayer(nn.Module):
  ...  
class EncoderLayer(nn.Module):
  ...
class DecoderLayer(nn.Module):
  ...
class TransformerEncoder(nn.Module):
  ...
class TransformerDecoder(nn.Module):
  ...
class ClassificationHead(nn.Module):
  ...
class Transformer(nn.Module):
    def __init__(self, vocab_size, d_model, num_heads, 
                 num_layers, d_ff, max_seq_len, dropout):
        super().__init__()


self.encoder = TransformerEncoder(vocab_size, d_model, num_heads, num_layers, d_ff, dropout, max_seq_len) self.decoder = TransformerDecoder(vocab_size, d_model, num_heads, num_layers, d_ff, dropout, max_seq_len)
def forward(self, x, src_mask, tgt_mask, cross_mask): encoder_output = self.encoder(x, src_mask) decoder_output = self.decoder(x, encoder_output, tgt_mask, cross_mask) return decoder_output
Các mô hình Transformer với PyTorch

Ayo berlatih!

Các mô hình Transformer với PyTorch

Preparing Video For Download...