Phase 07: Transformers Deep Dive

BERT Mô hình hóa ngôn ngữ che đậy

GPT dự đoán từ tiếp theo. BERT dự đoán một từ bị mất. Một câu khác biệt và nửa thập kỷ của mọi thứ hình dạng nhúng.

Type: Build

Languages: Python

Prerequisites: Phase 7 · 05 (Full Transformer), Phase 5 · 02 (Text Representation)

Time: ~45 minutes

Vấn đề

Năm 2018, mỗi nhiệm vụ NLP cảm xúc, NER, QA, liên quan đã đào tạo mô hình riêng của nó từ đầu trên dữ liệu được dán nhãn của riêng nó. Không có điểm kiểm soát "nghiểu tiếng Anh" được đào tạo trước mà bạn có thể điều chỉnh. ELMo (2018) cho thấy bạn có thể đào tạo trước các nhúng ngữ cảnh bằng LSTM hai chiều; nó giúp nhưng không phổ biến.

BERT (Devlin et al. 2018) hỏi: nếu chúng ta lấy một bộ mã hóa biến đổi, đào tạo nó trên mỗi câu trên internet, và buộc nó dự đoán từ thiếu trong ngữ cảnh ở cả hai bên?

Kết quả: trong vòng 18 tháng BERT và các biến thể của nó (RoBERTa, ALBERT, ELECTRA) thống trị mọi bảng xếp hạng NLP hiện có. Đến năm 2020 mọi công cụ tìm kiếm, đường ống dẫn kiểm soát nội dung và hệ thống tìm kiếm ngữ nghĩa trên trái đất đều có BERT bên trong.

Trong năm 2026, các mô hình chỉ có mã hóa vẫn là công cụ phù hợp để phân loại, lấy lại và lấy lại cấu trúc. Chúng chạy nhanh hơn 510x mỗi token so với các mã hóa và nhúng của chúng là xương sống của mọi ngăn xếp tìm kiếm hiện đại. ModernBERT (Dec 2024) đã đẩy kiến trúc đến bối cảnh 8K với Flash Attention + RoPE + GeGLU.

Khái niệm

!Masked language modeling: pick tokens, mask them, predict originals

Đèn huấn luyện

Hãy lấy một câu:the quick brown fox jumps over the lazy dog- Tôi không biết.

Mái 15% mã thông báo theo cách ngẫu nhiên:

input:  the [MASK] brown fox jumps [MASK] the lazy dog
target: the  quick brown fox jumps  over  the lazy dog

Tập mô hình để dự đoán các token gốc ở các vị trí che giấu.[MASK]ở vị trí 1 có thể sử dụng brown fox jumpsở vị trí 2+. Đó là điều mà GPT không thể làm.

Quy tắc mặt nạ BERT

Trong số 15% các token được chọn để dự đoán:

  • 80% được thay thế bằng [MASK]- Tôi không biết.
  • 10% được thay thế bằng một token ngẫu nhiên.
  • 10% vẫn không thay đổi.

Tại sao không phải lúc nào cũng vậy?[MASK]Vì...[MASK]Không bao giờ xuất hiện tại thời điểm suy luận.[MASK]ở 100% các vị trí che giấu sẽ tạo ra sự thay đổi phân phối giữa việc tập luyện trước và điều chỉnh tinh tế. 10% ngẫu nhiên + 10% không thay đổi giữ cho mô hình trung thực.

Next Sentence Prediction (NSP) và tại sao nó đã bị bỏ rơi

BERT gốc cũng được đào tạo về NSP: được đưa ra hai câu A và B, dự đoán nếu B theo A. RoBERTa (2019) đã xóa nó và cho thấy NSP bị tổn thương, không giúp đỡ.

Điều gì đã thay đổi vào năm 2026: ModernBERT

Bảng ModernBERT năm 2024 đã xây dựng lại khối với những nguyên thủy năm 2026:

ComponentOriginal BERT (2018)ModernBERT (2024)
PositionalLearned absoluteRoPE
ActivationGELUGeGLU
NormalizationLayerNormPre-norm RMSNorm
AttentionFull denseAlternating local (128) + global
Context length5128192
TokenizerWordPieceBPE

Và không giống như đống 2018 , nó là Flash-Attention-native. Inference là 23x nhanh hơn với độ dài chuỗi 8K so với DeBERTa-v3 với điểm số GLUE tốt hơn.

Use cases vẫn chọn một encoder vào năm 2026

TaskWhy encoder beats decoder
Retrieval / semantic search embeddingsBidirectional context = better embedding quality per token
Classification (sentiment, intent, toxicity)One forward pass; no generation overhead
NER / token labelingPer-position output, natively bidirectional
Zero-shot entailment (NLI)Classifier head on top of encoder
Reranker for RAGCross-encoder scoring, 10x faster than LLM rerankers

Hãy xây dựng nó

Bước 1: Hình lý che giấu

Nhìn xemcode/main.py- chức năngcreate_mlm_batchlấy danh sách các thẻ ID, kích thước từ ngữ và xác suất mặt nạ. trả về các thẻ ID đầu vào (với mặt nạ được áp dụng) và nhãn (chỉ ở các vị trí che giấu, -100 ở nơi khác Phản ứng chỉ số của PyTorch).

pythondef create_mlm_batch(tokens, vocab_size, mask_prob=0.15, rng=None):
    input_ids = list(tokens)
    labels = [-100] * len(tokens)
    for i, t in enumerate(tokens):
        if rng.random() < mask_prob:
            labels[i] = t
            r = rng.random()
            if r < 0.8:
                input_ids[i] = MASK_ID
            elif r < 0.9:
                input_ids[i] = rng.randrange(vocab_size)
            # else: keep original
    return input_ids, labels

Bước 2: chạy dự đoán MLM trên một cơ thể nhỏ

Căn luyện một bộ mã hóa 2 lớp + đầu MLM trên một từ vựng 20 từ, 200 câu. Không gradient chúng tôi làm kiểm tra tâm trí tiến hành.

Bước 3: so sánh các loại mặt nạ

Hãy cho thấy cách thức của quy tắc ba chiều giữ cho mô hình có thể sử dụng mà không cần [MASK]- Dự đoán về một câu không che giấu và một câu che giấu. Cả hai đều nên tạo ra phân phối biểu tượng hợp lý bởi vì mô hình đã thấy cả hai mô hình trong đào tạo.

Bước 4: đầu tinh chỉnh

Thay thế đầu MLM bằng đầu phân loại trên bộ dữ liệu cảm xúc đồ chơi. Chỉ có đầu tàu; bộ mã hóa bị đóng băng. Đây là mô hình mà mọi ứng dụng BERT theo.

Sử dụng nó

pythonfrom transformers import AutoModel, AutoTokenizer

tok = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base")
model = AutoModel.from_pretrained("answerdotai/ModernBERT-base")

text = "Attention is all you need."
inputs = tok(text, return_tensors="pt")
out = model(**inputs).last_hidden_state   # (1, N, 768)

Embedding models are fine-tuned BERT. sentence-transformersmô hình như all-MiniLM-L6-v2BRT được đào tạo với mất mát tương phản.

Cross-encoder rerankers are also fine-tuned BERT.Định dạng cặp trên [CLS] query [SEP] doc [SEP]Sự chú ý hai chiều giữa truy vấn và doc chính là điều cung cấp cho cross-encoder cạnh chất lượng của họ so với biencoders.

When not to pick BERT in 2026.Bất cứ thứ gì tạo ra. Các mã hóa không có cách hợp lý để tự tạo ra các token. Ngoài ra: bất cứ thứ gì dưới các tham số 1B nơi một decoder nhỏ có thể phù hợp với chất lượng với tính linh hoạt hơn (Phi-3-Mini, Qwen2-1.5B).

Chuyển nó

Nhìn xemoutputs/skill-bert-finetuner.md. Khả năng mở rộng một sự điều chỉnh BERT (chọn lựa xương sống, đặc điểm đầu, dữ liệu, đánh giá, dừng) cho một nhiệm vụ phân loại hoặc khai thác mới.

Các bài tập

  1. Easy.Đi chạycode/main.pyVà in phân phối mặt nạ trên 10.000 token. xác nhận ~ 15% được chọn, và ~ 80% trở thành [MASK]- Tôi không biết.
  2. Medium.Thực hiện che giấu toàn từ: nếu một từ được mã hóa thành các từ phụ, che giấu tất cả các từ phụ cùng nhau hoặc không. đo lường xem điều này có cải thiện độ chính xác MLM trên một tập hợp 500 câu không.
  3. Hard.Trình luyện một BERT nhỏ (2 lớp, d=64) trên 10.000 câu từ một tập dữ liệu công cộng.[CLS]So sánh với một đường cơ sở chỉ có trình giải mã ở các param phù hợp nào thắng?

Các điều khoản chính

TermWhat people sayWhat it actually means
MLM"Masked language modeling"Training signal: randomly replace 15% of tokens with [MASK], predict the originals.
Bidirectional"Looks both ways"Encoder attention has no causal mask — every position sees every other position.
[CLS]"The pooler token"A special token prepended to every sequence; its final embedding is used as the sentence-level representation.
[SEP]"Segment separator"Separates paired sequences (e.g. query/doc, sentence A/B).
NSP"Next sentence prediction"BERT's second pretraining task; shown to be useless in RoBERTa, dropped after 2019.
Fine-tuning"Adapt to a task"Keep the encoder mostly frozen; train a small head on top for the downstream task.
Cross-encoder"A reranker"A BERT that takes both query and doc as input, outputs a relevance score.
ModernBERT"2024 refresh"Encoder rebuilt with RoPE, RMSNorm, GeGLU, alternating local/global attention, 8K context.

Đọc thêm

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.