3 điểm bởi GN⁺ 2025-10-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • BERT và RoBERTa như các mô hình ngôn ngữ masked cũng có thể được diễn giải theo khái niệm mô hình khuếch tán văn bản
  • Khác với phương pháp tự hồi quy truyền thống (ví dụ: GPT), đã chứng minh khả năng áp dụng sinh theo khối và phục hồi dần
  • Khi huấn luyện với tỷ lệ masking điều chỉnh theo từng giai đoạn, thực nghiệm xác nhận RoBERTa cũng có thể tạo văn bản tự nhiên
  • Chỉ cần điều chỉnh mục tiêu huấn luyện, không cần thay đổi kiến trúc hiện có, vẫn có thể có được năng lực sinh
  • So với GPT-2, mô hình khuếch tán dựa trên RoBERTa cũng cho ra kết quả tạo văn bản có độ mạch lạc nhất định

Tổng quan

Gemini Diffusion do Google DeepMind công bố là một mô hình ngôn ngữ dựa trên khuếch tán tạo văn bản theo từng khối cùng lúc, khác với họ GPT. Đây là phương pháp tạo văn bản bằng cách tinh lọc dần dần tiếng ồn ngẫu nhiên. Từ việc xem xét bài báo Large Language Diffusion Models, kết quả cho thấy khuếch tán ngôn ngữ rời rạc là một sự tổng quát hóa của Masked Language Modeling (MLM). Tức là, bài viết này thử nghiệm xem liệu có thể tận dụng ý tưởng này để tạo văn bản với các mô hình họ BERT hay không.

Lưu ý: Sau đó, bài báo DiffusionBERT kiểm chứng nghiêm ngặt hơn với ý tưởng tương tự.

Lược sử nhanh về Transformer

Transformer, được đề xuất lần đầu năm 2017, có kiến trúc encoder-decoder. Năm 2018, encoder (BERT: hai chiều, tập trung khôi phục masked) và decoder (GPT: autoregressive, tập trung dự đoán tuần tự) tách ra, hình thành các nhóm mô hình chuyên dụng.

  • Chỉ encoder (họ BERT)
    • Nhận toàn bộ ngữ cảnh đầu vào, che một phần bằng <MASK> và khôi phục từ phần còn lại
    • Ưu thế trong biểu diễn câu, phân loại, ...
  • Chỉ decoder (họ GPT)
    • Dự đoán token tiếp theo từ thứ tự đã cho
    • Tỏa sáng ở tạo văn bản, tóm tắt, dịch thuật

BERT ban đầu được dùng trực tiếp cho phân loại, nhưng sau đó họ GPT giành được nhiều trường hợp sử dụng hơn nhờ năng lực sinh đã được cải thiện.

Mô hình khuếch tán ngôn ngữ rời rạc

Mô hình khuếch tán vốn đã nổi tiếng ở tạo ảnh. Trong trường hợp ảnh:

  • Quy trình thuận: thêm dần dần nhiễu Gaussian vào ảnh gốc để đạt trạng thái chỉ còn nhiễu
  • Quy trình nghịch: dùng mô hình deep learning để lặp lại khử nhiễu dần dần, khôi phục dữ liệu gốc

Khi áp dụng cho văn bản, cách đơn giản nhất là quy trình nhiễu dựa trên masking.

  • Thuận (masking)
    • Khi t=0 là văn bản gốc, khi bước tăng dần thì thay thế ngẫu nhiên một số token bằng <MASK>
    • Ở bước cuối cùng, toàn bộ chuỗi được thay bằng <MASK>
  • Nghịch (de-noise)
    • Transformer encoder học khôi phục token gốc trong cấu hình masking đã cho
    • Masking tỷ lệ thấp dễ khôi phục hơn, còn tỷ lệ càng cao thì càng khó
    • Lặp lại từ tỷ lệ masking cao đến thấp để tạo toàn bộ chuỗi

Trong khuôn khổ khuếch tán này, mô hình huấn luyện bằng cách cộng tổng loss khử nhiễu trên các mức tỷ lệ masking khác nhau. Mục tiêu khôi phục masking của BERT về bản chất là một phần của khuếch tán văn bản. Kết hợp lịch trình tỷ lệ masking và lặp lại de-noise sẽ mở rộng mục tiêu BERT thành thủ tục sinh ngôn ngữ.

Thí nghiệm RoBERTa Diffusion

RoBERTa, được công bố năm 2019, đặc trưng bởi mở rộng hyperparameter và dữ liệu so với BERT, cùng mục tiêu huấn luyện đơn giản hơn (MLM Only). Trong thí nghiệm, sử dụng trọng số RoBERTa gốc, tokenizer và Trainer từ các thư viện HuggingFace transformers, datasets. Dựa trên tập dữ liệu WikiText, tinh chỉnh tiếp theo các bước:

  • Lấy mẫu ngẫu nhiên một trong 10 lịch trình khuếch tán (mask_probs: 1.0~0.1) cho mỗi batch để masking
  • Với diffusion_collator tùy chỉnh, sau khi chọn xác suất masking thì áp dụng <MASK> ngẫu nhiên theo từng token
  • Để giữ bối cảnh prompt, 16 token đầu luôn được giữ lại

Che dữ liệu (custom collator):

  • Sau khi đệm (padding) mỗi nhóm token mẫu, chọn xác suất masking ngẫu nhiên
  • Áp dụng <MASK> theo xác suất cho tất cả token ngoài 16 token đầu
  • Trả về cả dữ liệu đã masking và bộ nhãn đáp án

Tạo sinh (inference):

  • Nhập chuỗi đầu vào độ dài 256 token, 16 token đầu là prompt, phần còn lại là <MASK>
  • Ở mỗi bước, mẫu hóa token mà mô hình dự đoán để điền vào, rồi remask lại một phần theo tỷ lệ nhất định
  • Lặp lại bằng cách giảm dần tỷ lệ masking, và cuối cùng toàn bộ được khôi phục

Ví dụ kết quả tạo:

  • Có thể tạo ra văn bản nối tiếp tự nhiên cùng với prompt, với tính nhất quán khá tốt
  • Một số dị biệt do định dạng tiền xử lý của tập WikiText (ví dụ: dấu nối @-@)

So sánh với GPT-2

  • GPT-2 nhanh hơn một chút và nhất quán hơn, nhưng RoBERTa Diffusion vẫn cho hiệu năng tốt hơn kỳ vọng (đặc biệt có tiềm năng cải thiện dần)
  • Các cách AR-Diffusion, Skip-Step Diffusion mới và tối ưu hóa có thể cải thiện chất lượng/tốc độ

Kết luận

  • Các mô hình ngôn ngữ masked như RoBERTa, nếu huấn luyện với điều chỉnh tỷ lệ masking, cũng có thể trở thành engine sinh ngôn ngữ
  • Chỉ cần cách học làm hỏng rồi khôi phục dần văn bản bằng token <MASK> đã cho thấy khả năng chuyển hoàn toàn thành mô hình sinh
  • Không cần sửa đổi kiến trúc, chỉ cần thay đổi mục tiêu huấn luyện đã có thể đạt năng lực sinh
  • Về bản chất, các mô hình họ BERT cũng tương ứng với một mô hình khuếch tán văn bản

1 bình luận

 
GN⁺ 2025-10-21
Ý kiến trên Hacker News
  • Khi BERT mới xuất hiện, mọi người đều thử dùng nó để sinh văn bản, nhưng nhìn chung không thành công lắm; bài báo tham khảo về việc này là ở đây. Savinov và cộng sự tại DeepMind cho thấy rằng nếu chỉ áp dụng hai bước trong quá trình huấn luyện và ngẫu nhiên hóa xác suất masking thì nó có thể hoạt động khá ổn

    • Tuần trước tôi đã thử đủ cách để làm cho BERT có thể trò chuyện, rồi nhờ bài viết này mới biết thêm những điều đó. Tôi vẫn còn vài ý tưởng muốn thử thêm nên vẫn đang tiếp tục thực nghiệm rất thú vị blog liên quan

    • Tôi thuộc nhóm rất đông những người cho rằng BERT chỉ dùng được như một encoder thuần túy, chẳng hạn để đo độ tương đồng ngữ nghĩa và phân loại, chứ không phải để sinh văn bản

  • Theo tôi biết, mối liên hệ này lần đầu được chỉ ra trong bài báo này năm 2021 (trang 5). Họ đã thử cách trong text diffusion là làm nhiễu từ bằng những từ khác có nghĩa tương tự, nhưng thấy rằng để mô hình tìm lại từ đã bị mask thì dễ hơn. Lịch sử của hướng tiếp cận này còn quay ngược xa hơn đến bài báo này, nơi họ đã tạo ra một MLM sinh sinh mà không diễn giải nó bằng toán học diffusion

    • Còn cũ hơn thế nữa. Năm 2014, Li Yao và cộng sự trong bài báo này đã chỉ ra sự tương đương giữa mô hình autoregressive (dự đoán token tiếp theo) và generative stochastic networks (denoising autoencoder, tiền thân của diffusion model). Họ lập luận rằng lấy mẫu song song xấp xỉ tốt lấy mẫu tuần tự, và trong nghiên cứu năm 2016 của tôi, Counterpoint by Convolution, liên kết, tôi cũng áp dụng cách này và cho thấy còn đạt hiệu năng tốt hơn. Đáng tiếc vì đó là một bài báo ứng dụng nên không nhận được nhiều trích dẫn từ phía diffusion. Tôi nghĩ còn có những gốc rễ thậm chí lâu đời hơn nữa

    • Tôi cũng nhớ đó là tài liệu tham chiếu đầu tiên chính thức bàn về chuyện này (sau khi thấy BERT, có vẻ tự nhiên là các nhà nghiên cứu NLP sẽ nghĩ đến khái niệm diffusion). Bộ sưu tập các tài liệu tham chiếu ban đầu về text diffusion mà tôi gom từ 3 năm trước ở đây

    • Nhân tiện, bài báo liên quan cũng có thể xem tại đây

  • Cách tiếp cận dựa trên diffusion cho cảm giác giống hơn với những gì diễn ra trong não động vật. Khi tôi nói, tôi không tạo ra từng từ một chỉ dựa trên từ trước đó; thay vào đó, tôi cảm thấy phần lớn hơn là có một ý tưởng tổng thể mơ hồ trong đầu trước rồi mới sắp xếp nó thành ngôn ngữ

    • LLM autoregressive trên thực tế cũng không đơn giản chỉ dự đoán từ tiếp theo như vậy. Dù mỗi lần forward pass cho ra từng token một, trong không gian tiềm ẩn vẫn xuất hiện rõ ràng việc lập kế hoạch dài hạn và suy luận. Khi chúng ta thực sự nói, ta cũng vạch ra bức tranh tổng thể trong đầu rồi mới nói tuần tự, nên không thể kết luận rằng cách diffusion giống chúng ta hơn

    • Cá nhân tôi rất thích bài blog mô tả diffusion như một dạng "autoregression phổ". Diffusion có xu hướng dự đoán các đặc trưng tần số thấp trước rồi mới đến các đặc trưng tần số cao

    • Mỗi lần chỉnh sửa tin nhắn trên Slack khoảng 5 lần, tôi thường cảm thấy mình đúng là một diffusion model

    • Khi nói hoặc viết, đúng là ta phát ra từ theo thứ tự tuần tự. Nhưng trước khi bắt đầu câu, ta thường đã nghĩ đại khái ý chính trong đầu. Điều này tương tự với việc LLM lập kế hoạch hướng đi tổng thể trong không gian tiềm ẩn trước khi xuất token ra ngoài

    • Nghiên cứu interpretability cũng cho thấy LLM autoregressive có lập kế hoạch nội bộ trước về việc sẽ nói gì

  • Cá nhân tôi thấy việc hỗ trợ chỉnh sửa kiểu chèn/xóa theo phong cách Levenshtein tự nhiên hơn là chỉ cho phép masking và điền vào chỗ trống. Ví dụ, nếu ở bước cuối muốn thay một từ bằng một từ đồng nghĩa dài hơn thì không thể dịch sang phải, nên điều đó không dễ trong kiểu kiến trúc diffusion này

    • Đã có tiến triển cho việc đó. Những nỗ lực thêm token expand/delete đang xuất hiện trong DreamOn và các công trình tương tự
  • Những thí nghiệm đơn giản kiểu này rất thú vị vì có thể nhanh chóng nắm được nguyên lý. Điểm đáng tiếc ở mô hình text diffuser là phải xử lý token như giá trị rời rạc chứ không phải liên tục. Với ảnh, pixel là liên tục nên có thể thêm nhiễu một cách tự nhiên, còn token văn bản thì không. Phần lớn đành xử lý bằng thay thế toàn bộ; dù cũng có nhiều hướng như thêm nhiễu trong không gian embedding hoặc học trực tiếp embedding, tất cả đều phức tạp hơn diffusion cho ảnh

  • Tôi kỳ vọng hơn vào những cách tiếp cận như bài báo này. Nó kết hợp latent diffusion liên tục với sinh văn bản dựa trên autoregressive transformer. Có thể huấn luyện autoencoder và transformer đồng thời (hoặc độc lập)

  • Lúc mới tiếp xúc với mô hình text diffusion, tôi đã nghĩ: “Cái này chẳng phải chỉ là MLM sao?” Điều tôi chú ý là MaskGIT. Cách này chỉ thực sự đáng gọi là diffusion nếu mô hình được huấn luyện để thay token sai bằng token đúng, vì điểm mạnh của continuous diffusion là khả năng chống nhiễu. Nhưng trên thực tế, ý tưởng tạo ra token sai không dễ triển khai, nên có vẻ đến nay vẫn chưa được thử nhiều

    • Tôi đã thử nghiệm MLM ở mức byte UTF8 để làm một mô hình dịch phi chuẩn. Dùng curriculum learning và cách làm nhiễu ngẫu nhiên tăng dần. Nếu mục tiêu chỉ là thêm noise thì chỉ cần thay các chỉ số ngẫu nhiên bằng các giá trị byte ngẫu nhiên là đủ. Ví dụ cho mô hình đầu vào theo mẫu dưới đây

      [Source UTF8 bytes] => [Corrupted Target UTF8 bytes]
      

      Đánh giá lặp lại toàn bộ chuỗi đích để khi mức độ khó tăng lên, miền huấn luyện không bị biến đổi rời rạc. Kết quả là tôi không còn quá bận tâm đến thuật ngữ hay phân loại nữa; điều quan trọng không phải là ‘có phải diffusion hay không’ mà là ‘nó có thực sự hoạt động không’

  • Tôi cũng tò mò không biết so với electra thì sẽ như thế nào

    • Cũng đáng đem so với deberta. Dù sao thì rất thú vị
  • Tôi từng muốn thử fine-tune một mô hình hoàn thành mã inline để xem có đạt hiệu năng tương tự cursor không (thực tế chắc khó, nhưng sẽ rất vui). Nhưng hiện vẫn chưa có một open diffusion model nào đủ ổn để dùng làm nền, nên tôi đang chờ đợi

  • Điểm hấp dẫn của mô hình diffusion cho ảnh là nó tạo ảnh từ nhiễu ngẫu nhiên. Nhưng tôi thắc mắc vì sao mô hình text diffusion lại bắt đầu từ các token rỗng đã bị mask toàn bộ, thay vì từ token ngẫu nhiên

    • Tùy vào tác vụ mong muốn. Nếu chỉ là hoàn thành văn bản đơn giản thì đưa câu đầu vào không mask và để mô hình điền các token mask tiếp theo. Nếu muốn chỉnh sửa mã chẳng hạn, có thể chỉ mask phần cần sửa rồi để nó điền dần theo thứ tự. Điểm mạnh của mô hình text diffusion là khả năng thực hiện chỉnh sửa thực dụng như chỉnh sửa code (LLM autoregressive cần một hệ thống riêng để chỉnh sửa thông qua chỉ thị). Nếu huấn luyện mô hình với một head chỉnh sửa code thật phù hợp, có thể tăng tốc độ và hiệu quả của nhiều công việc lập trình. Có lẽ sau này những nơi như GPT Codex sẽ tích hợp kiểu tính năng này một cách tự nhiên

    • Không phải ai cũng chỉ dùng cách bắt đầu từ token rỗng. Có nhiều thử nghiệm khác nhau: có mô hình bắt đầu từ token ngẫu nhiên, có mô hình từ mask, và có mô hình từ vector embedding