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ố để đư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:
- : Giá trị phần tử thứ trong vector.
- : Trung bình các phần tử trong vector.
- : Độ lệch chuẩn các phần tử.
Sau chuẩn hóa, thường nhân với và cộng với (đượ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 , ký hiệu là giá trị tại vị trí và chiều :
Vector đầu vào:
Self-Attention
Multi-Head Attention
Với:
Feed Forward Network (FFN)
Áp dụng cho từng token sau attention:
Sau mỗi khối (Attention hoặc FFN):
Decode Layer
Giống như self-attention ở Encoder nhưng có thêm masking.
Khi tính attention cho từ vị trí trong chuỗi đầu ra, chỉ được nhìn thấy các từ từ 1 đến (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).
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)
Loss Function (Khi Train)
- : Từ đúng tại vị trí .
- : 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:
- : 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.