- vừa được xem lúc

Transformer: Hiện đại hơn LSTM

0 0 1

Người đăng: Huey Anthony Disward

Theo Viblo Asia

Transformer: Kiến Thức Cơ Bản

1. Khái niệm Transformer

Transformer là một mô hình học sâu dựa trên cơ chế attention (chú ý), đặc biệt là self-attention (tự chú ý), cho phép mô hình tập trung vào các phần khác nhau của đầu vào khi xử lý dữ liệu. Khác với các kiến trúc trước đây như RNN hay LSTM, Transformer không xử lý dữ liệu theo thứ tự tuần tự mà xử lý toàn bộ chuỗi đầu vào cùng lúc (song song).

Cấu trúc chính của Transformer:

  • Encoder: Mã hóa đầu vào thành các vector đặc trưng.
  • Decoder: Giải mã từ các vector đặc trưng thành đầu ra mong muốn.
  • Attention Mechanism: Cho phép mô hình tập trung vào các phần quan trọng của chuỗi đầu vào khi tạo đầu ra.

Mỗi ngăn xếp Encoder và Decoder gồm nhiều tầng, với các tầng Encoder mã hóa các token thành vector ngữ nghĩa, trong khi Decoder giải mã để tạo đầu ra.


2. Encoder

Các Encoder layer giống nhau về mặt kiến trúc nhưng khác nhau về trọng số.

Quy trình hoạt động của Encoder

  • Embedding: Mỗi từ đầu vào được chuyển thành một vector embedding (thường có kích thước 512).
  • Stacking: Encoder dưới cùng nhận embedding, các encoder phía trên nhận đầu ra của tầng dưới.
  • Qua mỗi Encoder Layer:
    • Self-Attention Layer: Cho phép mỗi từ “nhìn” toàn bộ các từ khác trong câu để hiểu ngữ cảnh.
    • Feed-forward Neural Network: Mỗi vector đi qua mạng nơ-ron truyền thẳng độc lập.

Cơ chế Self-Attention

Ví dụ: “Con gà băng qua đường, nó đi rất nhanh”
Khi mã hóa từ “nó”, self-attention xác định “con gà” là từ liên quan nhất, trộn thông tin vào vector “nó”.

Với mỗi vector embedding, ta tạo 3 vector:

  • Query (Q): Tập trung vào các từ khác như thế nào.
  • Key (K): Nhãn để so sánh.
  • Value (V): Chứa thông tin để trộn vào kết quả.

Tính Attention Score:
So sánh Query của từ đang xét với Key của tất cả các từ, tính tích vô hướng, chia cho một giá trị để ổn định gradient, dùng softmax để chuyển thành xác suất.

Áp dụng:
Nhân mỗi Value vector với softmax score tương ứng, cộng lại để tạo vector tổng hợp cho vị trí đang xét.


Multi-Headed Attention

Thay vì chỉ có một bộ Q/K/V, ta có n bộ (n-heads).
Mỗi head học một “góc nhìn” khác nhau về ngữ nghĩa.

Hoạt động:

  • Tạo n bộ Q/K/V, mỗi head tính toán self-attention riêng.
  • Kết quả các head được concat lại, rồi nhân với ma trận trọng số WOW_O để đưa về kích thước đầu ra.

Vấn đề thứ tự:
Vì Transformer xử lý song song, cần Positional Encoding để biểu diễn vị trí từng từ.


Residual Connection

Là một đường nối “tắt” cho phép dữ liệu đi thẳng từ đầu vào đến đầu ra của một hoặc nhiều tầng.

Áp dụng:
Output của sub-layer được cộng với input ban đầu, rồi qua Layer Normalization.

Lợi ích:

  • Giúp truyền thông tin hiệu quả qua nhiều lớp, giảm vanishing/exploding gradient, tăng tốc hội tụ, tránh mất mát thông tin.

Layer Normalization

Chuẩn hóa các giá trị trong một layer cho từng mẫu dữ liệu.

Công thức chuẩn hóa:

LN(xi)=xiμσLN(x_i) = \frac{x_i - \mu}{\sigma}

  • xix_i: Giá trị phần tử thứ ii trong vector.
  • μ\mu: Trung bình các phần tử trong vector.
  • σ\sigma: Độ lệch chuẩn các phần tử.

Sau chuẩn hóa, thường nhân với γ\gamma và cộng với β\beta (được học).

Lợi ích:
Ổn định quá trình huấn luyện, tăng tốc hội tụ, không phụ thuộc batch size, giảm overfitting.


Công Thức Trong Encoder

Embedding + Positional Encoding

Với embedding kích thước dmodeld_{model}, ký hiệu PE(pos,k)PE(pos, k) là giá trị tại vị trí pospos và chiều kk:

PE(pos,2i)=sin(pos100002i/dmodel)PE(pos, 2i) = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)

PE(pos,2i+1)=cos(pos100002i/dmodel)PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)

Vector đầu vào:

xi=Embedding(wi)+PositionalEncoding(i)x_i = Embedding(w_i) + PositionalEncoding(i)

Self-Attention

Q=xWQ,K=xWK,V=xWVQ = xW^Q,\quad K = xW^K,\quad V = xW^V

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q, K, V) = softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Multi-Head Attention

MultiHead(Q,K,V)=Concat(head1,...,headh)WOMultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O

Với:

headi=Attention(QWiQ,KWiK,VWiV)head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)

Feed Forward Network (FFN)

Áp dụng cho từng token sau attention:

FFN(x)=ReLU(xW1+b1)W2+b2FFN(x) = ReLU(xW_1 + b_1)W_2 + b_2

Sau mỗi khối (Attention hoặc FFN):

LayerNorm(x+SubLayer(x))LayerNorm(x + SubLayer(x))


Decode Layer

Giống như self-attention ở Encoder nhưng có thêm masking.
Khi tính attention cho từ vị trí ii trong chuỗi đầu ra, chỉ được nhìn thấy các từ từ 1 đến ii (không được nhìn thấy các từ phía sau).

Mục đích: Đảm bảo sinh tuần tự, không "nhìn trộm" đáp án phía sau.


Encoder-Decoder Attention (Cross-Attention)

  • Output từ Masked Self-Attention làm Query.
  • Output encoder làm Key và Value.
  • Kết nối thông tin từ câu gốc (input) với từng bước sinh câu mới (output).

CrossAttention(Qdec,Kenc,Venc)CrossAttention(Q_{dec}, K_{enc}, V_{enc})


Feed Forward Neural Network (FFN) trong Decoder

Mỗi token qua 2 attention rồi đưa vào FFN giống Encoder.

Cấu trúc:

  • Linear (tăng số chiều)
  • ReLU
  • Linear (giảm số chiều về ban đầu)

FFN(x)=(xW1+b1)ReLUzzW2+b2FFN(x) = (xW_1 + b_1) \xrightarrow{ReLU} z \rightarrow zW_2 + b_2


Loss Function (Khi Train)

L=t=1TlogP(yty<t,x)L = -\sum_{t=1}^T \log P(y_t \mid y_{<t}, x)

  • yty_t: Từ đúng tại vị trí tt.
  • P(yty<t,x)P(y_t \mid y_{<t}, x): Xác suất sinh ra từ đúng.

Mô hình cải thiện như thế nào từ Loss này?

a. Lan truyền ngược (Backpropagation)

  • Tính loss toàn bộ batch.
  • Backpropagation tính gradient của loss theo từng tham số.
  • Sử dụng chain rule truyền lỗi ngược từ output về input.

b. Cập nhật trọng số (Weight Update)

  • Sau khi có gradient, cập nhật trọng số theo hướng giảm loss.

Gradient descent:

WWηLWW \leftarrow W - \eta \frac{\partial L}{\partial W}

  • η\eta: learning rate (tốc độ học)

Các thuật toán tối ưu như Adam, RMSprop thường được sử dụng.

c. Ý nghĩa

  • Mô hình “học” cách gán xác suất cao cho các từ đúng tại mỗi vị trí (giảm loss).
  • Điều chỉnh attention, FFN, embedding... để dự đoán tốt hơn.

3. Quá trình lặp lại

  • Quá trình được lặp lại nhiều lần với nhiều batch dữ liệu:
    • Tính loss → lan truyền ngược → cập nhật trọng số.
  • Sau nhiều epoch, mô hình dự đoán tốt hơn, loss giảm dần.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tản mạn về Self Attention

Self attention hay intra-attention - cụm từ chắc hẳn đã được đồng đạo trong giới Machine Learning biết đến nhiều qua một bài báo rất nổi tiếng Attention is All You Need đề cập đến mô hình Transfomer đ

0 0 70

- vừa được xem lúc

Xây dựng mô hình Transformer cơ bản dịch tiếng Nhật sang tiếng Việt

I. Mở đầu.

0 0 133

- vừa được xem lúc

Tìm hiểu về kiến trúc Transformer

Giới thiệu. Với sự ra đời của cơ chế attention thì vào năm 2017 paper Attention is all you need đã giới thiệu một kiến trúc mới dành cho các bài toán NLP mà không có sự xuất hiện của các mạng nơ-ron h

0 0 397

- vừa được xem lúc

Deformable DETR: Phương pháp tiếp cận end-to-end cho bài toán object detection

Bài viết hôm nay là về một bài toán cực lỳ phổ biến mà ai làm việc trong ngành này cũng từng không ít lần thử sức, đó là bài toán object detection. Trên Papers with code, bài toán này ghi nhận 2080 pa

0 0 68

- vừa được xem lúc

Giới thiệu Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Mở đầu. Gần đây, các kiến trúc Transformer đã dần dần trở nên phổ biến trong các bài toán về computer vision.

0 0 46

- vừa được xem lúc

Giới thiệu SegFormer - Mô hình Transformer đơn giản, hiệu quả cho bài toán segmentation

Giới thiệu. Bài toán semantic segmentation là một trong những bài toán rất quan trọng trong lĩnh vực computer vision, nhiệm vụ của bài toán là phân loại từng pixel trong ảnh.

0 0 43