BERT (Bidirectional Encoder Representations from Transformers)
BERT là Transformer encoder hai chiều của Google, được pretrain để dự đoán từ bị che dựa trên ngữ cảnh ở cả hai phía. Nội dung đề cập cách hoạt động, fine-tuning và các biến thể.
BERT (Biểu diễn bộ mã hóa hai chiều từ Transformer) là một bộ mã hóa transformer đọc toàn bộ câu cùng lúc và tạo biểu diễn cho mỗi từ dựa trên các từ ở cả hai phía. Jacob Devlin, Ming-Wei Chang, Kenton Lee và Kristina Toutanova thuộc Google AI Language giới thiệu BERT vào tháng 10 năm 2018 trong bài báo BERT: Tiền huấn luyện Transformer hai chiều sâu để hiểu ngôn ngữ, bài báo đoạt giải bài báo dài xuất sắc nhất tại NAACL 2019. Một BERT được tiền huấn luyện duy nhất, tinh chỉnh bằng một lớp đầu ra bổ sung, đã thiết lập kết quả tiên tiến mới trên 11 tác vụ xử lý ngôn ngữ tự nhiên (NLP), nâng điểm benchmark GLUE lên 80.5%, cải thiện tuyệt đối 7.7 điểm, và đạt F1 kiểm thử 93.2 trên tác vụ hỏi đáp SQuAD v1.1.
BERT được tiền huấn luyện như thế nào#
BERT-Base xếp chồng 12 lớp encoder với trạng thái ẩn 768 chiều và 12 attention head, tổng cộng khoảng 110 triệu tham số; BERT-Large có 24 lớp, 1.024 chiều, 16 head và 340 triệu tham số. Văn bản đầu vào được chia token bằng tokenization WordPiece thành bộ từ vựng 30.000 token, token đặc biệt [CLS] mở đầu mọi chuỗi, còn [SEP] phân tách hai đoạn của một cặp câu. Google tiền huấn luyện cả hai kích thước trên BooksCorpus (800 triệu từ) và Wikipedia tiếng Anh (2.500 triệu từ) bằng hai mục tiêu tự giám sát.
Mô hình hóa ngôn ngữ có che (MLM) chọn 15% vị trí token, thay 80% trong số đó bằng [MASK], 10% bằng token ngẫu nhiên và giữ nguyên 10%; sau đó model dự đoán các token ban đầu. Self-attention của BERT không có causal mask, vì vậy mỗi dự đoán sử dụng ngữ cảnh từ cả hai phía—điều mà language model dự đoán từ trái sang phải không thể làm được. Dự đoán câu tiếp theo (NSP) ghép mỗi đoạn với câu thực sự đứng sau nó trong một nửa số trường hợp, và với một câu ngẫu nhiên trong các trường hợp còn lại; bộ phân loại trên đầu ra [CLS] học cách phân biệt hai loại này.
Checkpoint đã tiền huấn luyện giữ lại head dự đoán từ bị che, vì vậy model gốc có thể trực tiếp điền vào chỗ trống:
from transformers import pipeline
# BERT dự đoán từ bị che dựa trên các từ ở cả hai phía
fill = pipeline("fill-mask", model="bert-base-uncased")
for text in ["She went to the [MASK] to buy bread.", "She went to the [MASK] to see a doctor."]:
predictions = fill(text, top_k=3)
print(text, [(p["token_str"], round(p["score"], 2)) for p in predictions])Hai câu chỉ khác nhau ở phần sau chỗ trống, và dự đoán hàng đầu của BERT đổi từ "market" (0.82) sang "hospital" (0.78). Model đọc từ trái sang phải nhìn thấy "She went to the" trong cả hai câu và không có thông tin nào để phân biệt chúng.
Tinh chỉnh và ứng dụng#
Fine-tuning bổ sung một lớp nhỏ cho tác vụ và huấn luyện toàn bộ trọng số trên các ví dụ có nhãn; cách tiếp cận này đã đưa transfer learning trở thành mặc định trong NLP. Vector [CLS] đưa vào các bộ phân loại cấp câu như phân tích cảm xúc, vector của từng token đưa vào các tác vụ gán nhãn như nhận dạng thực thể có tên (NER), còn điểm bắt đầu và kết thúc trên các token được dùng để trích xuất đoạn chứa câu trả lời.
Vào tháng 10 năm 2019, Google bắt đầu sử dụng BERT cho 1 trong 10 lượt tìm kiếm bằng tiếng Anh tại Mỹ, đồng thời nêu truy vấn "2019 brazil traveler to usa need a visa," trong đó BERT nhận ra rằng từ "to" cho biết một người Brazil đang đi đến Mỹ. Đến tháng 10 năm 2020, BERT đã được áp dụng cho gần như mọi truy vấn tiếng Anh. Các bộ mã hóa thuộc họ BERT cũng tạo ra các embedding làm nền tảng cho tìm kiếm ngữ nghĩa: Sentence-BERT tinh chỉnh BERT để ánh xạ mỗi câu thành một vector phục vụ tìm kiếm vector, ColBERT giữ một vector cho mỗi token, còn các bộ xếp hạng lại dạng cross-encoder chấm điểm các cặp truy vấn-đoạn văn trong pipeline tạo sinh tăng cường truy xuất (RAG).
Trong phát hiện thị giác-ngôn ngữ, Grounding DINO mã hóa prompt văn bản bằng encoder BERT-base trước khi ghép prompt với các vùng ảnh. Ultralytics Platform lưu trữ Grounding DINO để gán nhãn thông minh bằng prompt lớp, chuyển tên lớp trong dataset thành các hộp có thể chỉnh sửa để huấn luyện bộ phát hiện YOLO26. Dự đoán vùng bị che cũng được áp dụng cho ảnh: vision transformer (ViT) sử dụng lại token [CLS] của BERT cho classification, còn masked autoencoder (MAE) pretrain encoder ảnh bằng cách ẩn 75% patch ảnh rồi tái tạo chúng.
BERT so với GPT và các encoder đời sau#
Các model GPT được xây dựng từ decoder transformer có causal mask, nên dự đoán từng token tiếp theo dựa trên các token đứng trước và phù hợp với tác vụ tạo sinh văn bản. BERT tạo vector cho mỗi token đầu vào, phù hợp với phân loại, trích xuất và truy xuất, nhưng không có sẵn cơ chế để viết văn bản từ trái sang phải. Một mô hình ngôn ngữ lớn (LLM) với hàng tỷ tham số có thể xử lý nhiều tác vụ hiểu ngôn ngữ tương tự thông qua prompting, nhưng chi phí mỗi truy vấn cao hơn nhiều lần so với encoder 110 triệu tham số.
Các encoder đời sau đã tinh chỉnh công thức này. RoBERTa của Meta bỏ NSP và huấn luyện lâu hơn với batch lớn hơn trên khoảng 160 GB văn bản, cho thấy BERT đã bị huấn luyện thiếu đáng kể; DistilBERT của Hugging Face dùng chưng cất tri thức để giảm 40% số tham số và chạy nhanh hơn 60%, trong khi vẫn giữ được 97% hiệu năng hiểu ngôn ngữ của BERT. ModernBERT, do Answer.AI và LightOn phát hành vào tháng 12 năm 2024, được huấn luyện trên 2 nghìn tỷ token với độ dài ngữ cảnh gốc 8.192 token, gấp 16 lần giới hạn 512 token của BERT.










