[ad_1]
Để hiểu những thay đổi được thực hiện ở đây, trước tiên chúng ta cần thảo luận về Bộ đệm ẩn giá trị khóa. Bên trong máy biến áp, chúng ta có 3 vectơ rất quan trọng để chú ý hoạt động — khóa, giá trị và truy vấn. Ở cấp độ cao hơn, sự chú ý là cách chúng tôi chuyển thông tin quan trọng về mã thông báo trước đó sang mã thông báo hiện tại để nó có thể dự đoán mã thông báo tiếp theo. Trong ví dụ về tự chú ý với một đầu, chúng tôi nhân vectơ truy vấn trên mã thông báo hiện tại với các vectơ chính từ các mã thông báo trước đó và sau đó chuẩn hóa ma trận kết quả (ma trận kết quả mà chúng tôi gọi là mẫu chú ý). Bây giờ chúng tôi nhân các vectơ giá trị với mẫu chú ý để nhận các bản cập nhật cho từng mã thông báo. Dữ liệu này sau đó được thêm vào mã nhúng hiện tại để bây giờ nó có bối cảnh để xác định điều gì sẽ xảy ra tiếp theo.
Chúng tôi tạo mẫu chú ý cho mỗi mã thông báo mới mà chúng tôi tạo, do đó, mặc dù các truy vấn có xu hướng thay đổi nhưng khóa và giá trị không đổi. Do đó, các kiến trúc hiện tại cố gắng giảm thời gian tính toán bằng cách lưu vào bộ nhớ đệm các vectơ khóa và giá trị khi chúng được tạo ra bởi mỗi vòng chú ý liên tiếp. Bộ đệm này được gọi là Bộ đệm khóa-giá trị.
Trong khi các kiến trúc như mô hình biến áp chỉ bộ mã hóa và mô hình biến áp bộ giải mã-bộ giải mã đã thành công, các tác giả thừa nhận rằng tính năng tự hồi quy được trình bày ở trên và tốc độ mà nó cho phép các mô hình của nó là lý do tại sao các mô hình chỉ bộ giải mã được sử dụng phổ biến nhất hiện nay.
Để hiểu kiến trúc YOCO, chúng ta phải bắt đầu bằng cách hiểu cách nó thiết lập các lớp của nó.
Đối với một nửa mô hình, chúng tôi sử dụng một loại chú ý để tạo ra các vectơ cần thiết để lấp đầy Bộ nhớ đệm KV. Sau khi chuyển sang nửa sau, nó sẽ sử dụng KV Cache riêng cho các vectơ khóa và giá trị tương ứng, giờ đây tạo ra các phần nhúng mã thông báo đầu ra.
Kiến trúc mới này yêu cầu hai loại chú ý – chú ý bản thân hiệu quả và chú ý chéo. Chúng ta sẽ đi vào từng phần bên dưới.
Tự chú ý hiệu quả (ESA) được thiết kế để đạt được trí nhớ suy luận liên tục. Nói cách khác, chúng tôi muốn độ phức tạp của bộ đệm không phụ thuộc vào độ dài đầu vào mà phụ thuộc vào số lớp trong khối của chúng tôi. Trong phương trình dưới đây, các tác giả đã trừu tượng hóa ESA, nhưng phần còn lại của bộ tự giải mã nhất quán như được hiển thị bên dưới.
Chúng ta hãy đi qua phương trình từng bước một. X^l là nhúng mã thông báo của chúng tôi và Y^l là biến trung gian được sử dụng để tạo mã nhúng tiếp theo X^l+1. Trong phương trình, ESA là Tự chú ý hiệu quả, LN là hàm chuẩn hóa lớp – ở đây luôn là Định mức bình phương trung bình gốc (RMSNorm
), và cuối cùng SwiGLU
. SwiGLU
được xác định bởi dưới đây:
Đây swish = x*sigmoid (Wg * x)
, trong đó Wg là tham số có thể huấn luyện được. Sau đó, chúng tôi tìm tích số theo phần tử (Sản phẩm Hadamard) giữa kết quả đó và X*W1 trước khi nhân toàn bộ sản phẩm đó với W2. Mục tiêu với SwiGLU
là để có được một chức năng kích hoạt có điều kiện sẽ chuyển lượng thông tin khác nhau qua lớp tới mã thông báo tiếp theo.
Bây giờ chúng ta đã thấy cách bộ tự giải mã hoạt động, hãy đi sâu vào hai cách mà các tác giả đã cân nhắc khi triển khai ESA.
Đầu tiên, họ xem xét cái được gọi là Gated Retention. Phải thừa nhận rằng khả năng duy trì và tự chú ý là rất giống nhau, với các tác giả của bài báo “Mạng lưới lưu giữ: Người kế thừa để chuyển đổi cho các mô hình ngôn ngữ lớn” nói rằng sự khác biệt chính nằm ở chức năng kích hoạt – khả năng lưu giữ loại bỏ softmax cho phép tạo công thức lặp lại. Họ sử dụng công thức định kỳ này cùng với khả năng track track hóa để nâng cao hiệu quả bộ nhớ.
Để đi sâu vào các chi tiết toán học:
Chúng ta có các ma trận điển hình là Q, Ok và V – mỗi ma trận được nhân với các trọng số có thể học được liên quan đến mỗi ma trận. Sau đó chúng ta tìm tích Hadamard giữa các ma trận có trọng số và đại lượng vô hướng Θ. Mục tiêu của việc sử dụng Θ là tạo ra sự phân rã theo cấp số nhân, trong khi đó chúng tôi sử dụng ma trận D để trợ giúp việc che giấu thông thường (ngăn các mã thông báo trong tương lai tương tác với các mã thông báo hiện tại) và kích hoạt.
Lưu giữ có kiểm soát khác với lưu giữ thông qua giá trị γ. Ở đây ma trận Wγ được sử dụng để cho phép ESA của chúng tôi được điều khiển theo dữ liệu.
Cửa sổ trượt ESA giới thiệu ý tưởng giới hạn số lượng mã thông báo mà cửa sổ chú ý nên chú ý tới. Trong khi tự chú ý thường xuyên, tất cả các mã thông báo trước đó đều được tham dự theo một cách nào đó (ngay cả khi giá trị của chúng là 0), trong cửa sổ trượt ESA, chúng tôi chọn một số giá trị không đổi C để giới hạn kích thước của các ma trận này. Điều này có nghĩa là trong thời gian suy luận, bộ nhớ đệm KV có thể được giảm xuống độ phức tạp không đổi.
Để một lần nữa đi sâu vào toán học:
Chúng ta có ma trận được chia tỷ lệ theo trọng số tương ứng của chúng. Tiếp theo, chúng tôi tính toán phần đầu tương tự như cách tính sự chú ý của nhiều đầu, trong đó B đóng vai trò như một bản đồ nhân quả và cũng để đảm bảo chỉ có các mã thông báo C quay lại được tham dự.
[ad_2]
Source link