Cơ chế chú ý trong các máy biến áp về cơ bản cải thiện việc tạo mã bằng cách cho phép mô hình tập trung có chọn lọc vào các phần khác nhau của chuỗi đầu vào trong khi tạo ra mỗi mã thông báo đầu ra. Điều này dẫn đến việc tạo mã thông báo bối cảnh và kết hợp nhiều hơn. Cơ chế chú ý giúp nắm bắt các phụ thuộc tầm xa, mô hình cấu trúc và các sắc thái ngữ nghĩa trong mã nguồn, rất quan trọng để tạo các chương trình hợp nhất và nhất quán chính xác về mặt pháp lý. Các khả năng đa diện của nó cung cấp các lợi thế đáng kể so với các mô hình trình tự truyền thống dựa trên các biểu diễn bối cảnh có độ dài cố định.
Khái niệm cơ bản về sự chú ý trong Transformers
Trong máy biến áp, sự chú ý là một kỹ thuật tính toán một tập hợp các vectơ đầu ra là tổng trọng số của các vectơ giá trị đầu vào. Các trọng số được tính toán động dựa trên điểm số tương thích giữa một truy vấn (đại diện cho vị trí hiện tại mà đầu ra được tạo) và một tập hợp các vectơ chính (đại diện cho tất cả các vị trí trong chuỗi đầu vào). Điều này cho phép mô hình "tham dự" hoặc tập trung vào các phần có liên quan của đầu vào khi tạo mỗi mã thông báo, thay vì xử lý toàn bộ chuỗi đồng đều hoặc nén nó thành một vectơ có kích thước cố định.
Công thức cốt lõi cho sự chú ý của sản phẩm chấm được chia tỷ lệ là:
$$
\ text {chú ý} (q, k, v) = \ text {softmax} \ left (\ frac {qk^t} {\ sqrt {d_k> \ right) v
$$
Trong đó $$ Q $$, $$ K $$ và $$ V $$ lần lượt là ma trận của các truy vấn, khóa và giá trị, và $$ D_K $$ là kích thước của các phím được sử dụng để chia tỷ lệ. Hàm SoftMax biến đổi điểm sản phẩm DOT giữa các truy vấn và khóa thành phân phối xác suất, sau đó được sử dụng để trọng lượng các giá trị.
Chụp bối cảnh và phụ thuộc trong mã
Mã lập trình vốn đã được cấu trúc với các phụ thuộc tầm xa; Các biến được khai báo ở đầu hàm có thể được sử dụng ở nhiều nơi sau đó. Các mô hình truyền thống như RNN hoặc CNN đã đấu tranh để duy trì các mối quan hệ bối cảnh tầm xa như bản chất tiếp nhận tuần tự hoặc cục bộ của chúng. Ngược lại, cơ chế tự chú ý trong các máy biến áp có thể liên hệ trực tiếp với mọi mã thông báo với mọi mã thông báo khác, bất kể khoảng cách của chúng trong chuỗi.
Tự ý cho phép mỗi vị trí mã thông báo thu thập thông tin từ tất cả các vị trí khác trong chuỗi đầu vào cùng một lúc. Ví dụ, trong khi tạo ra một khung đóng, mô hình có thể tham gia vào khung mở tương ứng của nó có thể là một vài dòng trước đó. Kết nối đầy đủ này cho phép mô hình mã hóa cấu trúc cú pháp và ngữ nghĩa hiệu quả hơn, điều này rất cần thiết để tạo mã không có lỗi.
Sự chú ý nhiều đầu cho các bối cảnh đa dạng
Máy biến áp sử dụng sự chú ý nhiều đầu, trong đó nhiều hoạt động chú ý song song (đầu) được thực hiện trên các hình chiếu tuyến tính khác nhau của các nhúng đầu vào. Mỗi đầu học cách tập trung vào các khía cạnh khác nhau của đầu vào, chẳng hạn như tên biến, cấu trúc luồng điều khiển hoặc ranh giới chức năng. Thiết lập đa đầu này cung cấp một số lợi ích:
- Nó cho phép mô hình cùng tham gia thông tin từ các không gian đại diện khác nhau.
- Nó kết hợp nhiều quan điểm trên chuỗi đầu vào, mở rộng phạm vi của những gì mô hình có thể học.
- Nó cải thiện sự mạnh mẽ bằng cách không dựa vào một đại diện chú ý duy nhất.
Đầu ra của nhiều đầu này được nối và biến đổi tuyến tính để tạo thành biểu diễn cuối cùng được sử dụng để tạo mã thông báo đầu ra.
Trình giải mã bộ mã hóa cho căn chỉnh mục tiêu nguồn
Trong tạo mã, các máy biến áp thường sử dụng kiến trúc bộ giải mã bộ mã hóa, trong đó bộ mã hóa xử lý mô tả đầu vào (ví dụ: đặc tả vấn đề ngôn ngữ tự nhiên) thành một biểu diễn theo ngữ cảnh và trình giải mã tạo ra chuỗi mã tương ứng. Bộ giải mã sử dụng sự chú ý của bộ mã hóa (sự chú ý chéo) để tập trung có chọn lọc vào các phần có liên quan của đầu vào được mã hóa ở mỗi bước giải mã. Sự liên kết này giữa đầu vào và đầu ra giúp mô hình tạo các đoạn mã có liên quan và chính xác phù hợp với ý định được thể hiện trong dấu nhắc đầu vào.