Kiến trúc transformer là một thiết kế mạng nơ-ron được xây dựng xoay quanh self-attention. Thay vì chủ yếu dựa vào xử lý từng bước một, nó cho phép mỗi token thu thập thông tin từ các token liên quan khác trong chuỗi.
Đó là lý do transformer hoạt động tốt cho ngôn ngữ và các bài toán chuỗi khác. Nếu một từ phụ thuộc vào một từ khác ở rất xa, attention tạo cho mô hình một đường kết nối trực tiếp giữa chúng.
Kiến trúc transformer có nghĩa là gì
Một khối transformer không chỉ áp dụng một công thức duy nhất, nhưng self-attention là ý tưởng trung tâm. Trong self-attention, mỗi token tạo ra ba vector:
- query, biểu diễn điều mà token này đang tìm kiếm
- key, biểu diễn điều mà token này cung cấp để đối sánh
- value, là thông tin có thể được truyền đi
Nếu các biểu diễn token được sắp xếp trong một ma trận , một head attention thường tạo thành
trong đó , và là các ma trận được học.
Công thức attention tích vô hướng có chia tỷ lệ tiêu chuẩn là
Ở đây là số chiều của key. Việc chia tỷ lệ theo giúp giữ cho các điểm tích vô hướng thô không trở nên quá lớn khi số chiều tăng lên.
Softmax được áp dụng theo từng hàng. Mỗi hàng trả lời câu hỏi của một token: "Tôi nên chú ý đến các token khác ở mức nào?"
Self-attention hoạt động thế nào theo cách dễ hiểu
Self-attention thường không chọn một token rồi bỏ qua tất cả phần còn lại. Nó xây dựng một trung bình có trọng số của các vector value.
Nếu một token khớp mạnh với key của token khác, token đó sẽ nhận trọng số lớn hơn. Nếu mức khớp yếu, trọng số sẽ nhỏ hơn. Vì vậy, đầu ra cho một token là một hỗn hợp thông tin có xét ngữ cảnh từ toàn bộ chuỗi.
Điều này giúp xử lý sự hòa hợp chủ ngữ - động từ, tham chiếu đại từ và các quan hệ xa khác. Mô hình không cần thông tin phải đi qua nhiều bước trung gian trước khi có thể sử dụng được.
Ví dụ self-attention có lời giải
Xét một query và hai token ứng viên trong một attention head. Để phép tính đơn giản, dùng .
Giả sử token hiện tại có query
và hai token ứng viên có
với các value
Các điểm attention thô là các tích vô hướng:
Vì , hệ số chia tỷ lệ là , nên các điểm đã chia tỷ lệ vẫn là và .
Bây giờ áp dụng softmax cho hai điểm đó:
Đầu ra attention là tổ hợp có trọng số
Ý chính rất đơn giản: đầu ra nằm gần hơn vì query khớp với mạnh hơn so với .
Đây là mẫu cơ bản bên trong một mô hình lớn hơn nhiều. Transformer thực tế làm điều này trong không gian nhiều chiều hơn và trên nhiều token cùng lúc, nhưng ý tưởng tính toán vẫn giống nhau.
Còn gì khác bên trong một khối transformer
Transformer không chỉ là một công thức attention. Một khối tiêu chuẩn thường chứa:
- multi-head attention, để mô hình có thể học nhiều kiểu quan hệ cùng lúc
- một mạng feedforward theo từng vị trí, biến đổi biểu diễn của mỗi token sau attention
- các kết nối residual, giúp bảo toàn và tinh chỉnh thông tin qua các tầng
- layer normalization, giúp quá trình huấn luyện ổn định hơn
Trong kiến trúc transformer gốc cho các bài toán sequence-to-sequence, mô hình có một chồng encoder và một chồng decoder.
- Encoder dùng self-attention trên chuỗi đầu vào.
- Decoder dùng masked self-attention để một vị trí không thể nhìn trước các token đầu ra trong tương lai.
- Decoder cũng có thể dùng cross-attention, trong đó query đến từ decoder còn key và value đến từ đầu ra của encoder.
Nhiều mô hình ngôn ngữ hiện đại chỉ dùng phía decoder. Ý tưởng attention cốt lõi vẫn còn đó, nhưng kiến trúc tổng thể được chuyên biệt hóa cho dự đoán token tiếp theo.
Vì sao transformer cần thông tin vị trí
Chỉ riêng attention là permutation-equivariant đối với các token đầu vào. Nói đơn giản, nếu bạn chỉ áp dụng attention lên cùng một tập vector token mà không thêm vị trí, mô hình vốn dĩ không biết token nào đến trước.
Đó là lý do transformer thêm thông tin vị trí, chẳng hạn như position embedding được học hoặc positional encoding. Nếu không có tín hiệu bổ sung đó, các bài toán nhạy với thứ tự như ngôn ngữ sẽ khó được mô hình hóa chính xác hơn nhiều.
Những hiểu lầm thường gặp về kiến trúc transformer
Nghĩ rằng attention là toàn bộ transformer
Đó là ý tưởng trung tâm, nhưng kiến trúc còn phụ thuộc vào các tầng feedforward, đường residual, chuẩn hóa và thông tin vị trí.
Nhầm lẫn giữa self-attention và cross-attention
Trong self-attention, , và đến từ cùng một chuỗi. Trong cross-attention, chúng không phải tất cả đều đến từ cùng một nguồn.
Quên vai trò của masking
Các mô hình ngôn ngữ chỉ dùng decoder cần causal masking trong cả huấn luyện lẫn suy luận để một token không thể attention tới các token tương lai.
Coi trọng số attention là lời giải thích đầy đủ
Trọng số attention có thể cung cấp thông tin, nhưng chúng không phải bằng chứng đầy đủ về cách mô hình suy luận. Hành vi cuối cùng còn phụ thuộc vào các vector value, các tầng phía sau và các phép biến đổi phi tuyến.
Khi nào các mô hình transformer được sử dụng
Transformer được dùng rộng rãi trong mô hình ngôn ngữ, dịch máy, tóm tắt văn bản, sinh mã, tiếng nói và nhiều bài toán thị giác. Chúng đặc biệt hiệu quả khi các mối quan hệ trong một chuỗi hoặc một tập hợp quan trọng hơn các mẫu cục bộ thuần túy.
Chúng không phải phép màu cho mọi tình huống. Với tập dữ liệu rất nhỏ, ràng buộc thời gian thực nghiêm ngặt hoặc các bài toán mà cấu trúc quy nạp cục bộ là quan trọng nhất, một kiến trúc khác vẫn có thể phù hợp hơn.
Hãy thử một bài tương tự
Lấy một cụm gồm ba từ và tập trung vào một từ. Quyết định xem từ nào trong các từ còn lại nên nhận trọng số attention cao và vì sao, rồi phác thảo một ví dụ query-key-value nhỏ để khớp với trực giác đó.
Nếu muốn đi thêm một bước, hãy tự tính bằng tay một đầu ra attention nhỏ. Đó thường là con đường nhanh nhất để đi từ "Tôi biết công thức" đến "Tôi hiểu kiến trúc đang làm gì."
Cần trợ giúp giải bài?
Tải câu hỏi lên và nhận lời giải từng bước đã được xác minh trong vài giây.
Mở GPAI Solver →