GPT vs BERT và Seq2Seq bottleneck
Autoencoder, Seq2Seq, attention trong LLM, so sánh GPT giải mã và BERT mã hóa hai chiều, mô hình sâu rộng.
KhóThuật toán ~60 phút
Ôn lại trước khi học
Giới thiệu
Bài này học GPT chuyên viết và BERT chuyên hiểu. Dùng để chọn đúng mô hình cho sinh hay phân loại.
Kiến thức cần nhớ
Seq2Seq và nút cổ chai
- Định nghĩa: encoder đọc vào, decoder viết ra chuỗi.
- Thought vector là 1 vector nối giữa 2 bên.
- Ví dụ đời thường: như dịch qua 1 mẩu giấy trung gian.
- Câu dài thì mẩu giấy mất chi tiết sớm.
- Attention sinh ra để nới nút cổ chai này.
GPT
- Định nghĩa: đọc trái sang phải, đoán từ tiếp theo.
- Đoán đúng thì trượt cửa sổ đi tiếp để viết.
- Ví dụ đời thường: như gõ phím đoán chữ tiếp theo.
- Dùng bộ giải mã nên giỏi sinh văn bản.
- Mạnh ở kể chuyện, sinh mã, đối thoại.
| Mô hình | Nhìn hướng nào | Giỏi việc gì |
|---|---|---|
| GPT | Trái sang phải | Viết, sinh, chat |
| BERT | Cả 2 chiều | Hiểu, phân loại |
| Seq2Seq cũ | 1 vector giữa | Dịch ngắn đơn giản |
BERT
- Định nghĩa: che vài từ rồi dùng 2 phía đoán chỗ trống.
- Nhìn cả trái và phải để hiểu từ hiện tại.
- Ví dụ đời thường: như điền từ vào ô trống giữa câu.
- Dùng bộ mã hóa 2 chiều nên giỏi hiểu ngữ cảnh.
- Mạnh ở phân loại, trích đáp án, gán nhãn.
Ví dụ
- Input: "Tôi ăn ___" -> Output: GPT viết tiếp, BERT điền giữa.
- Giải thích: GPT nhìn quá khứ để sinh, BERT nhìn 2 phía để hiểu.
# GPT đoán từ tiếp theo từ quá khứ
tu_tiep = model.predict(["Tôi", "ăn"]) # chỉ nhìn trái
print(tu_tiep) # ví dụ: "cơm"
💻 Bài tập
Ngôn ngữ: Python 3 với PyTorch và transformers (Hugging Face). Nộp vào day-103/.
Bài 1: Nút cổ chai của seq2seq
Bài toán đảo chuỗi ngày 102 với độ dài L = 5, 10, 20, 40.
- Seq2seq LSTM không attention: encoder nén thành 1 vector, decoder sinh từ vector đó.
- Seq2seq LSTM có attention (Bahdanau hoặc dot-product).
- In accuracy chuỗi đúng hoàn toàn theo
L. Vẽ đồ thị 2 đường.
Bài 2: GPT sinh tiếp và BERT điền chỗ trống
Dùng mô hình có sẵn: gpt2 (hoặc mô hình tiếng Việt tương đương) và bert-base-uncased (hoặc PhoBERT).
| Việc | Yêu cầu |
|---|---|
| GPT sinh tiếp | Cho câu mở đầu, sinh 30 token với greedy, top-k=50, temperature 0.7 và 1.5. So 3 kết quả |
| Xác suất token kế | In top 10 token kế tiếp và xác suất cho câu "The capital of France is" |
| BERT điền chỗ trống | In top 5 cho "I ate a [MASK] for breakfast." |
| So hướng đọc | Câu "The [MASK] barked at the mailman.": BERT dùng được từ phía sau, GPT thì không. Giải thích |
Bài 3: Tinh chỉnh BERT phân loại (nâng cao)
- Tinh chỉnh
distilbert-base-uncasedtrên 2000 review IMDB (hoặc bộ review tiếng Việt) trong 2 epoch. - So accuracy với Naive Bayes ngày 54 và embedding trung bình ngày 99 trên cùng tập test.
- In 3 ví dụ BERT đúng mà Naive Bayes sai (thường là câu có phủ định hoặc mỉa mai).
✅ Tiêu chí hoàn thành
- Đồ thị accuracy theo độ dài cho seq2seq có và không có attention.
- Bảng sinh văn bản 3 cấu hình và top 10 token kế tiếp.
- Bảng so sánh 3 mô hình sentiment có số thật.
- Giải thích được GPT dùng decoder, BERT dùng encoder, và hệ quả.
❓ Câu hỏi ôn tập
- Nút cổ chai Seq2Seq nằm ở đâu?
- GPT đoán từ theo hướng nào?
- BERT học bằng trò gì?
- Viết văn nên dùng GPT hay BERT?
🌕 Bạn đã hoàn thành ngày 103. Làm hết bài tập phía trên rồi sang ngày tiếp theo.