- Transformer decoder-only đã trở thành kiến trúc tiêu chuẩn của LLM, nhưng trong ngữ cảnh dài, nhiễu attention — việc bỏ lỡ thông tin cốt lõi và phân bổ sự chú ý cho các token không liên quan — làm dao động hiệu năng
- differential attention chia query và key thành hai nhóm để tạo hai bản đồ attention bằng softmax, rồi trừ bản đồ thứ hai đã áp dụng λ có thể học được để tính attention score cuối cùng
- DIFF Transformer cho kết quả tốt hơn Transformer trong các thí nghiệm tăng kích thước mô hình, số token huấn luyện và độ dài ngữ cảnh; để đạt hiệu năng tương tự, chỉ cần khoảng 65% kích thước mô hình hoặc token huấn luyện
- Thể hiện ưu điểm ở mô hình hóa ngữ cảnh dài, truy hồi thông tin cốt lõi, giảm ảo giác, in-context learning, suy luận toán học và giảm activation outlier; trong QA và tóm tắt, ảnh hưởng của ngữ cảnh không liên quan cũng giảm đi
- Giữ nguyên layout tổng thể như Transformer và chỉ thay softmax attention, nên có thể tái sử dụng FlashAttention trong khi vẫn khớp số lượng tham số và khối lượng tính toán
Vấn đề nhiễu attention của Transformer
- Transformer decoder-only là kiến trúc tiêu chuẩn trên thực tế của LLM, với phần cốt lõi là attention mechanism gán trọng số bằng softmax cho mức độ quan trọng của các token trong chuỗi
- LLM gặp khó khăn khi xác định chính xác thông tin cốt lõi trong ngữ cảnh; đặc biệt càng có nhiều ngữ cảnh không liên quan, manh mối dẫn đến đáp án càng dễ bị chôn vùi
- Trong ví dụ phải tìm đáp án được chèn vào giữa một đống tài liệu, Transformer có xu hướng chỉ gán attention score nhỏ cho đáp án, trong khi phân bổ score quá mức cho ngữ cảnh không liên quan
- Những attention score không thể bỏ qua được phân bổ cho ngữ cảnh không liên quan như vậy đóng vai trò là attention noise
- Ví dụ Multi-Needle Retrieval trong Figure 1 hiển thị độ chính xác của Transformer và Differential Transformer lần lượt là 55% và 85%
Cách differential attention hoạt động
- DIFF Transformer là kiến trúc nền tảng cho sequence modeling và LLM; nó giữ nguyên macro layout của Transformer hiện có và thay thế softmax attention thông thường bằng differential attention
- Từ đầu vào
X, chiếu query, key và value, nhưng chia query và key thành hai nhómQ1, Q2, K1, K2, còn value để làV - Đầu ra attention được tính bằng hiệu của hai bản đồ attention softmax
DiffAttn(X) = (softmax(Q1K1^T / √d) − λ softmax(Q2K2^T / √d))V- Đây là cấu trúc loại bỏ nhiễu chung bằng cách trừ bản đồ attention thứ hai khỏi bản đồ attention thứ nhất
λlà một scalar có thể học được và được tái tham số hóa như sau để khớp động lực học huấn luyệnλ = exp(λq1 · λk1) − exp(λq2 · λk2) + λinit- Trong thí nghiệm mặc định, dùng
λinit = 0.8 − 0.6 × exp(−0.3 · (l − 1)) - Nhóm tác giả cũng xem xét cách dùng cùng một
λinitcho mọi layer, chẳng hạn0.8; trong ablation, hiệu năng tỏ ra tương đối bền vững trước khác biệt về chiến lược khởi tạo
- Cách này tương tự ý tưởng của differential amplifier, vốn loại bỏ common-mode noise bằng hiệu của hai tín hiệu, và của tai nghe chống ồn
- Naderi et al. chứng minh rằng differential attention làm cho spectral distribution của attention matrix cân bằng hơn, nhờ đó giải quyết hiệu quả rank collapse
Cấu trúc multi-head và kiến trúc tổng thể
- Multi-head differential attention sử dụng các projection matrix khác nhau cho từng head, và trong cùng một layer thì scalar λ được chia sẻ giữa các head
- Đầu ra của mỗi head được áp dụng RMSNorm độc lập rồi nhân với
(1 − λinit), các head được concatenate theo channel dimension, sau đó đi qua output projectionWO - Ký hiệu GroupNorm trong Figure 2 nhấn mạnh rằng normalization được áp dụng độc lập cho từng head
- Differential attention có xu hướng có pattern sparse hơn, nên thông tin thống kê giữa các head đa dạng hơn
- Normalization theo từng head chuẩn hóa từng head trước khi concatenate, giúp cải thiện gradient statistics
- Toàn bộ DIFF Transformer layer gồm hai module
MultiHead(LN(Xl)) + XlSwiGLU(LN(Yl)) + Yl
- Về cấu trúc, nó dùng pre-RMSNorm và SwiGLU, theo các cải tiến của dòng LLaMA
Hiệu quả và độ ổn định huấn luyện
- Differential attention có thể tái sử dụng trực tiếp FlashAttention, nhờ đó cải thiện đáng kể hiệu quả của mô hình
- Số head được đặt là
h = dmodel / 2d, trong đódbằng head dimension của Transformer - Thiết lập này nhằm khớp số lượng tham số và độ phức tạp tính toán với Transformer
- Sau head normalization, dùng multiplier cố định
(1 − λinit)để khớp luồng gradient với Transformer - Appendix G cho thấy luồng gradient tổng thể được duy trì tương tự Transformer, qua đó có thể kế thừa các hyperparameter tương tự và đảm bảo độ ổn định huấn luyện
Kết quả thí nghiệm và hiệu quả ứng dụng
- Các thí nghiệm language modeling mở rộng DIFF Transformer theo hướng tăng parameter count, training tokens và context length
- Trên scaling curve, để DIFF Transformer đạt hiệu năng language modeling tương tự Transformer, kích thước mô hình hoặc token huấn luyện cần thiết chỉ khoảng 65%
- Trong các downstream task, nó cũng cho hiệu năng tốt hơn Transformer; trong đánh giá long-sequence, khi ngữ cảnh dài hơn, mô hình tận dụng ngữ cảnh hiệu quả hơn
- Trong truy hồi thông tin cốt lõi, mô hình thể hiện pattern gán attention score cao hơn cho span chứa đáp án và score thấp hơn cho ngữ cảnh không liên quan
- Trong QA và text summarization, mô hình ít bị phân tâm bởi ngữ cảnh không liên quan hơn, qua đó giảm hallucination
- Trong in-context learning, mô hình vừa tăng độ chính xác, vừa bền vững hơn trước order permutation, vốn được xem là vấn đề dai dẳng về độ vững chắc
- Kết quả giảm activation outlier mở ra cơ hội mới cho quantization
1 bình luận
Các ý kiến trên Hacker News
Tôi có cảm giác ở đây đang bỏ lỡ trực giác cốt lõi. Có thể hiểu vấn đề rằng attention softmax thông thường khó gán mức chú ý gần 0 cho những thứ không liên quan, và cũng có thể hiểu rằng nếu có cấu trúc phép trừ thì có thể tạo ra trọng số attention đúng bằng hoặc gần bằng 0 mà không cần các giá trị kích hoạt ngoại lai
Tuy nhiên, cấu trúc này có vẻ cũng dễ tạo ra trọng số attention âm, và điều đó trông giống như gán chú ý dương cho phần phủ định của vector giá trị. Theo trực giác, có vẻ khó cân bằng để giữ tất cả những thứ không quan tâm ở gần 0. Dù vậy, Figure 1 cho thấy nó hoạt động tốt nên tôi không nghi ngờ khả năng này, chỉ là tôi chưa hình dung rõ mạng cụ thể đã làm điều đó như thế nào
exp()/1+∑exp()Điểm mấu chốt là mẫu số được thêm 1. Ở giới hạn âm, softmax có thể trở thành 0 chứ không phải một epsilon nào đó. Thêm một giá trị 0 vào
xcũng có thể tạo ra hiệu ứng tương tự. Nhược điểm là để sửa điều này thì phải huấn luyện lại mô hình từ đầuNhìn vào hình trọng số attention đầu tiên, thực ra có các điểm số âm ở vùng nhiễu. Dù vậy, mức chú ý dành cho vùng đó vốn đã rất nhỏ. Bản đồ attention thứ hai chỉ cần dự đoán nhiễu của bản đồ thứ nhất, và vì nó có quyền truy cập đầy đủ vào đầu vào thứ nhất nên đây là việc có thể làm khá chính xác
Quay lại phép ví von thực tế trong bài báo, tai nghe chống ồn có micro để tiếp cận âm thanh mà tai nghe được, nên có thể tạo ra tín hiệu triệt tiêu chính xác. Tương tự, bản đồ attention thứ hai biết những gì được đưa vào bản đồ thứ nhất, nên có thể tạo ra tín hiệu triệt tiêu tương ứng. Không hoàn hảo, nhưng tai nghe chống ồn cũng không hoàn hảo, và dù vậy vẫn đạt tới 99%, đủ để cải thiện hiệu năng
Cắt tỉa đã được thiết lập khá vững trong tài liệu như một cách giảm số lượng tham số hiệu quả đến mức đáng ngạc nhiên, có thể giảm khoảng tới 40%. Mô hình thực tế có thể không hoạt động chính xác như vậy, nhưng cuối cùng nếu nó chỉ xấp xỉ Transformer thông thường thì cũng không có gì đáng ngạc nhiên
Rất thông minh. Tôi thích những công việc đi vào chi tiết như thế này, và thay đổi cũng nhỏ nên có vẻ người khác có thể dễ dàng áp dụng. Tuyệt vời
Tuy nhiên, câu cuối ở phần mở đầu của mục "2 Differential Transformer" hơi khiến tôi lo. Họ nói dùng các cải tiến từ những bài báo trước, nhưng theo ngữ cảnh ngữ pháp thì không rõ các cải tiến đó được đưa vào cả Transformer thông thường lẫn diff Transformer hay không. Nếu không thì phép so sánh sẽ bị mờ đi. Cụm "main difference" trong câu ngay trước đó đã khiến tôi chú ý
Tất nhiên, các nhà nghiên cứu thiện chí có thể đã biết điều này nên không cảm thấy cần phải nói rõ. Nhưng với một số nghiên cứu được xuất bản trong lĩnh vực này, cẩn thận đến mấy cũng không thừa
Tôi liên tưởng đến kiến trúc MoE, nơi người ta chọn mô hình nhỏ tối ưu để xử lý một phần hoặc toàn bộ tác vụ suy luận. Tôi tò mò liệu MoE có đạt được lợi ích tương tự vì Transformer bị buộc phải phân biệt giữa các khả năng thay thế hay không
Dù sao, nếu các con số vẫn giữ được thì có vẻ nó sẽ được áp dụng rộng rãi. Như đã nói, về cơ bản có vẻ không có nhược điểm và cũng dễ tái hiện
Cũng như hầu hết mọi thứ trong thế giới mới này của machine learning, thật sự rất khó hiểu vì sao nó hoạt động
Phép ví von với tai nghe chống ồn có ích, nhưng trong trường hợp đó ta biết rõ đâu là tín hiệu và đâu là nhiễu. Nếu ở đây cũng biết được như vậy thì tôi không hiểu tại sao ngay từ đầu lại cần làm việc khử nhiễu
Tệ hơn nữa, gradient của các giá trị attention thấp trở nên rất nhỏ, nên cần nhiều lần cập nhật trọng số để sửa những sai lầm đó. Ngược lại, nếu lấy đầu ra của hai softmax trừ nhau, mô hình có thể dự đoán các trọng số đúng bằng 0 cho một số giá trị, đồng thời vẫn duy trì được luồng gradient hợp lý
Nói cách khác, mô hình vốn đã biết đâu là nhiễu, nhưng softmax đơn lẻ khiến việc loại trừ nó trở nên khó khăn. Ngoài ra, với softmax đơn lẻ, đầu ra của mọi head bị buộc phải nằm trong bao lồi của các vector giá trị, còn trong biến thể này, mỗi head có thể chọn lambda riêng để dịch phạm vi đầu ra ra ngoài bao lồi do các giá trị định sẵn. Vì vậy năng lực biểu diễn của toàn bộ mô hình tăng lên
Ví dụ tốt hơn là tín hiệu vi sai được dùng trong audio chuyên nghiệp và nhiều giao thức tín hiệu số như Ethernet, HDMI, USB. Thay vì dùng một dây lấy đất làm mốc, tín hiệu được truyền bằng độ chênh giữa hai dây. Hai dây mang cùng một tín hiệu với cực tính ngược nhau và chạy song song, nên nhiễu bên ngoài tác động giống nhau lên cả hai
Điện áp sẽ thay đổi, nhưng hiệu điện áp giữa hai dây vẫn giữ nguyên. Ở đầu nhận, khi trừ hai điện áp cho nhau thì nhiễu đơn giản là bị triệt tiêu
Cách đơn giản để làm điều này là bỏ softmax hoặc dùng sigmoid, nhưng trên thực tế có vẻ softmax hoạt động tốt hơn
Nói đơn giản, RoPE là một chiến lược hiện đại cung cấp cho mô hình thông tin về khoảng cách giữa query và key khi thực hiện attention. Đây là chiến lược tốt nhất hiện có, nhưng nó có một nhược điểm lớn: làm cho một số liên kết giữa các token ở xa nhau mạnh hơn rất nhiều so với mong muốn. Xpos (https://arxiv.org/pdf/2212.10554) cũng là bài báo của Microsoft xử lý vấn đề RoPE; xem Figure 1 ở trang 4 sẽ thấy cách diễn giải trực quan về cường độ attention dạng sóng sin. Ban đầu ta muốn nó mượt hơn
Tôi cho rằng lý do lớn khiến Differential Transformer hoạt động tốt, đặc biệt với chuỗi dài, là ngay cả khi
q1vàq2đều không khớp với một token nào đó, cường độ tương đối của RoPE vẫn có cùng giá trị nên nhiễu bị triệt tiêu. Chỉ những khớp có chủ đích còn lại, dù cái giá là các giá trị mà RoPE vốn mang lại bị làm yếu đi phần nàoTất nhiên đây chỉ là giả thuyết. Có thể kiểm chứng dễ dàng bằng cách thí nghiệm so với baseline dùng alibi attention (https://arxiv.org/pdf/2108.12409) cho cả hai. Alibi có những đánh đổi khác mà phương pháp này không giảm nhẹ được, nhưng dù vậy đây vẫn là một kết quả thật sự thú vị
Trực giác về lý do chúng hoạt động có vẻ là chúng làm cho bề mặt tối ưu của gradient descent “thân thiện” hơn một chút, giúp học dễ hơn theo các bước nhỏ. Bởi giờ đây bản thân mạng được thiết kế tường minh theo ý tưởng rằng ban đầu nó sẽ mắc nhiều lỗi trong dự đoán rồi dần dần cải thiện theo thời gian
Nếu tôi hiểu đúng câu “Differential attention takes the difference between two softmax attention functions to eliminate attention noise”, thì cấu trúc này có vẻ là một đánh đổi: dùng gấp đôi bộ nhớ attention để đổi lấy mô hình chất lượng cao hơn, hoặc chất lượng tương tự với ít tham số hơn
Phần “6.8B-size DIFF Transformer achieves a validation loss comparable to 11B-size Transformer, requiring only 62.2% of parameters” khiến tôi có vài câu hỏi. Nếu chỉ có 60% tham số, liệu điều đó có bù lại việc không gian attention tăng gấp đôi để đặc tính bộ nhớ trở nên tương tự Transformer truyền thống hay không, và liệu sự đánh đổi đó có khác biệt đáng kể giữa huấn luyện và suy luận không
Trong bài báo có viết: “We set the number of heads h = dmodel/2d, where d is equal to the head dimension of Transformer. So we can align the parameter counts and computational complexity.” Nói cách khác, họ giảm một nửa số attention head ở mỗi tầng để bù lại điều này
Tôi tò mò không biết đằng sau công thức “We empirically find that the setting λᵢₙᵢₜ = 0.8 − 0.6 × exp(−0.3 · (l − 1)) works well in practice” có câu chuyện gì
lnhỏ, nhỏ hơn so với các tầng phía sau. Nghe hợp lý. Vì trước khi kết luận đâu là vài vị trí thực sự cần nhìn, ta có lẽ sẽ muốn chú ý một chút đến mọi thứTuy nhiên có vẻ tác giả không thảo luận riêng lựa chọn này trong bài báo
Điểm cốt lõi ban đầu tôi không hiểu là chuyện gì xảy ra nếu hai nhóm attention học cùng một thứ. Vì các mask attention bị trừ lẫn nhau, nếu cả hai đều xuất ra các giá trị tương tự thì attention tổng sẽ rơi về 0 và loss tăng lên
Vì vậy cách duy nhất để giảm loss là học sao cho chúng chú ý tới những thứ khác nhau. Một trong những chiến lược đơn giản nhất chúng có thể học, như bài báo lập luận, là một nhóm tập trung vào ngữ cảnh liên quan, còn nhóm kia tập trung vào ngữ cảnh không liên quan. Như vậy một nhóm học nhiễu, nhóm kia học tín hiệu. Thực tế chắc không rạch ròi như vậy, nhưng đây là cách đơn giản hóa hữu ích để hiểu
Điều này có lý nếu nghĩ rằng nếu hai bản sao giống hệt nhau thì đầu ra softmax cũng giống hệt, khiến hiệu ở mọi nơi đều bằng 0. Nhưng nếu trừ một bản sao đã được scale, quá trình chuẩn hóa hiệu dường như làm nổi bật giá trị tín hiệu lớn hơn nhiễu, khiến tín hiệu nổi rõ hơn so với trước khi chuẩn hóa
Kiểu như một attention head tăng trọng số nếu nó ngạc nhiên trước thứ head khác đã học, còn nếu cả hai cùng tìm thấy một thứ thì coi là không mấy ngạc nhiên và giảm trọng số
Phải thừa nhận rằng “ngạc nhiên” chiếm một vùng khá lớn trong nền tảng kiến thức của tôi[1][2][3]. Vừa là một cảm xúc chủ quan, vừa là một chức năng thích nghi của tâm trí, một trong những hệ thích nghi phức tạp nhất mà ta biết
[1] https://plus.maths.org/content/information-surprise
[2] https://blakeelias.name/papers/Multi-Agent-Cooperation-Intri...
[3] https://complexity.simplecast.com/episodes/81/transcript
Tôi tò mò ở đây ta đánh mất điều gì. Chắc chắn phải có đánh đổi
Tôi cũng tự hỏi liệu nó có ảnh hưởng đến tính sáng tạo hay khả năng nội suy giữa các khái niệm không. Ảo giác và sáng tạo trông có vẻ khá liên quan. Tôi hiểu ảo giác là thứ lệch khỏi không gian nội suy mà con người cảm thấy phù hợp
Tất nhiên sai lầm đôi khi có thể truyền cảm hứng, nhưng sáng tạo còn nhiều hơn sai lầm rất nhiều
Các mô hình ngôn ngữ kiểu này là bộ dự đoán token tiếp theo. Token tiếp theo được dự đoán bằng cách sampling từ không gian xác suất mà mô hình xuất ra. Quá trình sampling đó có thể phi tất định
Ảo giác là khi kết quả sampling đó cho ra các token tạo thành câu sai hoặc không như ý. Cũng có thể coi mọi thứ mô hình xuất ra đều là ảo giác, nhưng chúng ta huấn luyện mô hình để nó xuất ra một không gian có xác suất cao hơn trong việc ảo giác ra thứ chúng ta muốn. Nếu không thì nó chỉ phun ra nhiễu vô nghĩa
“Ảo giác” là một từ thật sự tệ để mô tả thứ nó đang cố giải thích
Tôi tò mò bao nhiêu phần giá trị ở đây đến từ việc triệt tiêu nhiễu vị trí do RoPE tạo ra. Ngoài các mô hình RoPE ở đây, tôi cũng muốn thấy một bảng so sánh phiên bản alibi với baseline alibi
Dù sao đây vẫn là một cải thiện rất lớn, xin chúc mừng các nhà nghiên cứu
Có phải điều đang xảy ra ở đây là softmax không thể đẩy giá trị về 0, nhưng nếu trừ hai bản đồ softmax thì có thể tạo ra đầu ra bằng 0 không
Đây là một vấn đề hay cần giải, nhưng tôi cho rằng cách tiếp cận là sai
Để biết đã chú ý vào cái gì và toàn bộ ngữ cảnh, cần làm theo cách phân cấp. Nếu vector sai phân được tính từ cùng đầu vào với vector attention, tôi không thấy làm sao nó biết cách sửa vector attention cho đúng