🤖 Generative AI
Bạn đã bao giờ tự hỏi: “Chuyện gì xảy ra từ khi tôi gõ prompt đến lúc AI trả lời?” Bài viết này sẽ giải thích chi tiết toàn bộ quá trình đó.
📚 Bài viết liên quan:
- Context Window - Giới hạn tokens của AI
- Context Engineering - Tối ưu input cho LLM
- Terminology - Thuật ngữ AI Engineering
1. Generative AI là gì?
Phần tiêu đề “1. Generative AI là gì?”Generative AI (GenAI) là các hệ thống AI có khả năng tạo ra nội dung mới (text, image, audio, code, video) thay vì chỉ phân loại hoặc dự đoán.
Sự khác biệt với AI truyền thống
Phần tiêu đề “Sự khác biệt với AI truyền thống”AI Truyền thống (Discriminative):Input: "Con vật này là gì?" + [hình con mèo]Output: "Đây là con mèo" (phân loại)
Generative AI:Input: "Viết bài thơ về con mèo"Output: "Chú mèo lười biếng nằm hong nắng sớm, Đôi mắt xanh ngọc lấp lánh hồn nhiên..." (tạo mới)Các loại Generative AI phổ biến
Phần tiêu đề “Các loại Generative AI phổ biến”| Loại | Mô tả | Ví dụ |
|---|---|---|
| LLM (Large Language Model) | Sinh văn bản | GPT-5, Gemini 3, Claude 4.5 |
| Image Generation | Sinh hình ảnh | DALL-E 3, Midjourney, Imagen 3 |
| Audio/Voice | Sinh âm thanh/giọng nói | ElevenLabs, Suno |
| Video Generation | Sinh video | Sora, Runway Gen-3 |
| Code Generation | Sinh code | GitHub Copilot, Cursor |
2. Học như thế nào? (Learning Pattern)
Phần tiêu đề “2. Học như thế nào? (Learning Pattern)”GenAI học thông qua một quá trình gọi là Self-Supervised Learning (Học tự giám sát).
Mục tiêu đào tạo: Dự đoán từ tiếp theo
Phần tiêu đề “Mục tiêu đào tạo: Dự đoán từ tiếp theo”Model được huấn luyện với hàng nghìn tỷ tokens từ internet, sách, code, Wikipedia…
Training Data: "The cat sat on the ___"
Model học:- "mat" ← xác suất cao (câu phổ biến)- "roof" ← xác suất trung bình (hợp lý)- "airplane" ← xác suất thấp (ít logic)- "xyzabc" ← xác suất ~0 (vô nghĩa)Token là gì?
Phần tiêu đề “Token là gì?”Token là đơn vị nhỏ nhất mà model xử lý. Không phải 1 từ = 1 token!
# Tokenization ví dụ (tiếng Anh)"Hello, world!" → ["Hello", ",", " world", "!"] # 4 tokens
# Tiếng Việt tốn nhiều token hơn"Xin chào Việt Nam" → ["X", "in", " ch", "ào", " Việt", " Nam"] # ~6-7 tokens💡 Quy tắc nhanh:
- Tiếng Anh: 1 token ≈ 0.75 từ
- Tiếng Việt: 1 từ ≈ 1.5-2 tokens
- Code: Mỗi dấu ngoặc, space đều tính riêng
Quá trình huấn luyện 3 giai đoạn
Phần tiêu đề “Quá trình huấn luyện 3 giai đoạn”graph LR A[Pre-training] --> B[Fine-tuning] B --> C[RLHF]
A1["Học ngôn ngữ<br/>từ internet"] --> A B1["Học theo dõi<br/>instruction"] --> B C1["Học từ feedback<br/>của con người"] --> C| Giai đoạn | Mục đích | Dữ liệu |
|---|---|---|
| Pre-training | Học cấu trúc ngôn ngữ, kiến thức chung | Terabytes text từ internet |
| Fine-tuning | Học làm theo hướng dẫn (instruction) | Dataset Q&A được chuẩn bị |
| RLHF | Học phản hồi an toàn, hữu ích | Human feedback/ratings |
3. Kiến trúc Transformer
Phần tiêu đề “3. Kiến trúc Transformer”Hầu hết GenAI hiện đại đều dựa trên kiến trúc Transformer (giới thiệu 2017 bởi Google).
Thành phần chính
Phần tiêu đề “Thành phần chính”flowchart TD subgraph TRANSFORMER["🧠 TRANSFORMER"] direction TB ATT["🎯 Self-Attention Layers<br/>Từ này liên quan đến từ nào?"] FF["⚙️ Feed-Forward Networks<br/>Xử lý thông tin đã học"] OUT["📊 Output Probabilities<br/>Từ tiếp theo khả năng nhất?"]
ATT --> FF --> OUT end
INPUT["📥 Input Embeddings"] --> TRANSFORMER TRANSFORMER --> NEXT["📤 Next Token"]
style TRANSFORMER fill:#e3f2fd,stroke:#1976d2 style ATT fill:#fff3e0,stroke:#ff9800 style FF fill:#e8f5e9,stroke:#4caf50 style OUT fill:#f3e5f5,stroke:#9c27b0Self-Attention: Trái tim của Transformer
Phần tiêu đề “Self-Attention: Trái tim của Transformer”Self-Attention cho phép model hiểu được mối quan hệ giữa các từ trong câu.
Câu: "Con mèo đuổi con chuột vì nó đói"
Attention tập trung:"nó" → attention cao đến "mèo" (không phải "chuột")
Vì model học được rằng:- "mèo đuổi" → mèo là chủ thể hành động- "vì nó đói" → "đói" thường gắn với kẻ săn mồi🎯 Tại sao Attention quan trọng?
Trước Transformer, các model RNN/LSTM xử lý tuần tự từng từ → Quên thông tin ở đầu câu.
Transformer với Attention có thể nhìn toàn bộ câu cùng lúc → Hiểu context tốt hơn, train nhanh hơn (parallel).
4. Inference Pipeline: Từ Prompt đến Response
Phần tiêu đề “4. Inference Pipeline: Từ Prompt đến Response”Đây là phần quan trọng nhất! Hãy theo dõi hành trình của prompt.
Bước 1: Tokenization
Phần tiêu đề “Bước 1: Tokenization”Prompt của bạn được chia thành tokens.
# Inputprompt = "Giải thích đệ quy trong Python"
# Tokenizationtokens = ["Gi", "ải", " th", "ích", " đ", "ệ", " quy", " trong", " Python"]# → Vector IDs: [15234, 892, 1023, 456, 227, 1891, 7823, 234, 12892]Bước 2: Embedding
Phần tiêu đề “Bước 2: Embedding”Mỗi token ID được chuyển thành vector số (embedding) trong không gian nhiều chiều.
Token "Python" → [0.23, -0.67, 0.91, ..., 0.12] (768-4096 chiều)
Các từ có nghĩa tương tự sẽ có vector gần nhau:- "Python" ↔ "Java" ↔ "JavaScript" → Gần nhau- "Python" ↔ "apple" → Xa nhauBước 3: Qua các Transformer Layers
Phần tiêu đề “Bước 3: Qua các Transformer Layers”Embeddings đi qua nhiều lớp Transformer (GPT-4 có ~120 layers).
flowchart TD INPUT["📥 Input Embeddings"] --> L1
subgraph Layers["🧠 Transformer Layers"] L1["Layer 1<br/>Attention + Processing"] L2["Layer 2<br/>Deeper understanding"] LN["Layer N<br/>Final representation"] L1 --> L2 --> |"..."| LN end
LN --> OUTPUT["📊 Output Logits"]
style Layers fill:#e3f2fd,stroke:#1976d2 style INPUT fill:#e8f5e9,stroke:#4caf50 style OUTPUT fill:#f3e5f5,stroke:#9c27b0Bước 4: Output Generation (Autoregressive)
Phần tiêu đề “Bước 4: Output Generation (Autoregressive)”Model sinh từng token một, mỗi lần chọn token có xác suất cao nhất.
Prompt: "Đệ quy là"Bước 1: "Đệ quy là" → P(kỹ)=0.7, P(một)=0.2 → Chọn "kỹ"Bước 2: "Đệ quy là kỹ" → P(thuật)=0.9 → Chọn "thuật"Bước 3: "Đệ quy là kỹ thuật" → P(lập)=0.6 → Chọn "lập"...Cho đến khi: Token <END> hoặc max_tokensTổng quan Pipeline
Phần tiêu đề “Tổng quan Pipeline”graph TD A["💬 Prompt<br/>'Giải thích đệ quy'"] --> B["🔤 Tokenizer<br/>Chia text → tokens"] B --> C["🔢 Embedding<br/>Tokens → vectors"] C --> D["🧠 Transformer<br/>120+ layers xử lý"] D --> E["📊 Logits<br/>Xác suất từng token"] E --> F["🎲 Sampling<br/>Chọn token tiếp theo"] F --> G{"Token = END?"} G -->|No| D G -->|Yes| H["✅ Response hoàn chỉnh"]5. Non-Determinism: Tại sao câu trả lời không giống nhau?
Phần tiêu đề “5. Non-Determinism: Tại sao câu trả lời không giống nhau?”Nếu chạy cùng 1 prompt 10 lần, bạn có thể nhận được 10 câu trả lời khác nhau. Tại sao?
Temperature
Phần tiêu đề “Temperature”Temperature điều chỉnh độ “sáng tạo” của model.
Temperature = 0 (Deterministic)→ Luôn chọn token xác suất CAO NHẤT→ Câu trả lời giống nhau mọi lần→ Dùng cho: Coding, Math, Facts
Temperature = 1 (Creative)→ Chọn ngẫu nhiên theo phân phối xác suất→ Câu trả lời đa dạng→ Dùng cho: Creative writing, BrainstormingVí dụ trực quan:
Prompt: "Viết một từ mô tả bầu trời"
Token probabilities: "xanh" = 40% "trong" = 25% "đẹp" = 15% "cao" = 10% "rộng" = 10%
Temperature=0: Luôn chọn "xanh" (40%)Temperature=0.7: Thường "xanh", đôi khi "trong" hoặc "đẹp"Temperature=1.5: Có thể chọn bất kỳ từ nàoTop-P (Nucleus Sampling)
Phần tiêu đề “Top-P (Nucleus Sampling)”Top-P giới hạn pool các tokens được xem xét.
Top-P = 0.9 nghĩa là:→ Chỉ xem xét các token có tổng xác suất = 90%→ Loại bỏ các tokens "đuôi" ít khả năng
Ví dụ:Tokens: xanh(40%) + trong(25%) + đẹp(15%) + cao(10%) = 90%→ Loại bỏ: "rộng" (10% còn lại)→ Giảm khả năng sinh text "lạ"Top-K
Phần tiêu đề “Top-K”Top-K giới hạn số lượng tokens được xem xét.
Top-K = 3 nghĩa là:→ Chỉ xem xét 3 tokens có xác suất cao nhất→ Đơn giản hơn Top-P
Ví dụ: Chỉ chọn trong ["xanh", "trong", "đẹp"]Bảng so sánh các tham số
Phần tiêu đề “Bảng so sánh các tham số”| Tham số | Giá trị thấp | Giá trị cao | Dùng khi |
|---|---|---|---|
| Temperature | 0-0.3: Chính xác, lặp lại | 0.7-1.5: Sáng tạo, đa dạng | Code → thấp; Story → cao |
| Top-P | 0.1: Rất hạn chế | 0.9-1.0: Linh hoạt | Thường dùng 0.9-0.95 |
| Top-K | 1-10: Ít lựa chọn | 50-100: Nhiều lựa chọn | Thường dùng 40-50 |
6. Tại sao AI trả lời thuyết phục?
Phần tiêu đề “6. Tại sao AI trả lời thuyết phục?”Đây là câu hỏi hay nhất! Tại sao GPT/Gemini/Claude thường đưa ra câu trả lời “có vẻ đúng”?
Lý do 1: Học từ lượng dữ liệu khổng lồ
Phần tiêu đề “Lý do 1: Học từ lượng dữ liệu khổng lồ”GPT-4 pre-training: ~13 trillion tokens≈ 10 triệu cuốn sách≈ Toàn bộ Wikipedia x1000≈ Hàng triệu code repositoriesModel đã “đọc” hầu hết những gì con người viết!
Lý do 2: Pattern Recognition siêu mạnh
Phần tiêu đề “Lý do 2: Pattern Recognition siêu mạnh”Transformer với Self-Attention cực kỳ giỏi nhận diện patterns.
Pattern học được:"X là Y vì Z" → Cấu trúc giải thích"Bước 1... Bước 2..." → Cấu trúc hướng dẫn"def function_name(params):" → Cấu trúc Python
→ Khi bạn hỏi "Giải thích X", model tự động dùng pattern giải thích!Lý do 3: Compression = Understanding?
Phần tiêu đề “Lý do 3: Compression = Understanding?”Một giả thuyết thú vị: Nén hiệu quả = Hiểu sâu
Để dự đoán từ tiếp theo chính xác, model PHẢI hiểu:- Grammar (ngữ pháp)- Facts (kiến thức)- Logic (suy luận)- Context (ngữ cảnh)
→ "Nén" terabytes text vào model GB = Phải "hiểu" để nén!Lý do 4: RLHF - Học từ phản hồi con người
Phần tiêu đề “Lý do 4: RLHF - Học từ phản hồi con người”Giai đoạn RLHF:Human: "Câu trả lời A tốt hơn B"Model: Cập nhật weights để ưu tiên kiểu A
→ Model học được style trả lời "thuyết phục"→ Câu văn mạch lạc, có cấu trúc, giải thích từng bước⚠️ Cảnh báo: “Thuyết phục” ≠ “Đúng”
Phần tiêu đề “⚠️ Cảnh báo: “Thuyết phục” ≠ “Đúng””Model có thể tự tin nói sai!
Ví dụ:Q: "Ai phát minh ra điện thoại?"A: "Thomas Edison phát minh ra điện thoại vào năm 1876."
→ Câu trả lời rất tự tin→ Nhưng SAI! (Alexander Graham Bell mới đúng)
Đây gọi là "Hallucination"⚠️ Luôn verify thông tin quan trọng! GenAI giỏi tổng hợp và trình bày, nhưng có thể “bịa” sự thật.
7. Prompting: Nghệ thuật ra lệnh cho AI
Phần tiêu đề “7. Prompting: Nghệ thuật ra lệnh cho AI”Prompt tốt = Output tốt. Đây là một số kỹ thuật cơ bản.
Zero-Shot Prompting
Phần tiêu đề “Zero-Shot Prompting”Không cần ví dụ, chỉ cần instruction rõ ràng.
❌ "Phân loại sentiment"✅ "Phân loại sentiment của câu sau thành 'positive', 'negative', hoặc 'neutral': 'Sản phẩm này tuyệt vời!'"Few-Shot Prompting
Phần tiêu đề “Few-Shot Prompting”Cho vài ví dụ trước khi hỏi.
Ví dụ 1: "Tôi yêu món này!" → positiveVí dụ 2: "Chất lượng tệ quá" → negativeVí dụ 3: "Giao hàng bình thường" → neutral
Bây giờ phân loại: "Sẽ mua lại lần nữa!"→ positiveChain-of-Thought (CoT)
Phần tiêu đề “Chain-of-Thought (CoT)”Yêu cầu model giải thích từng bước.
❌ "25 x 17 = ?"✅ "Tính 25 x 17. Giải thích từng bước."
Output:"Bước 1: 25 x 10 = 250 Bước 2: 25 x 7 = 175 Bước 3: 250 + 175 = 425 Đáp án: 425"System Prompt
Phần tiêu đề “System Prompt”Đặt vai trò và quy tắc cho model.
system = """Bạn là trợ lý lập trình Python.Quy tắc:- Luôn thêm type hints- Viết docstring theo Google style- Giải thích logic trước khi code"""
user = "Viết hàm tính giai thừa"8. Bài tập thực hành 🧪
Phần tiêu đề “8. Bài tập thực hành 🧪”Bài 1: Khám phá Temperature
Phần tiêu đề “Bài 1: Khám phá Temperature”- Truy cập Google AI Studio
- Dùng prompt: “Viết 1 câu mô tả buổi sáng”
- Thử với Temperature: 0, 0.5, 1.0, 1.5
- Quan sát sự khác biệt
Bài 2: So sánh Tokenization
Phần tiêu đề “Bài 2: So sánh Tokenization”- Truy cập OpenAI Tokenizer
- So sánh số tokens:
- “Hello world” vs “Xin chào thế giới”
def calculate(x):vsfunction calculate(x) { }
Bài 3: Chain-of-Thought
Phần tiêu đề “Bài 3: Chain-of-Thought”Hỏi model 1 câu logic phức tạp với và không có CoT:
❌ "A có 5 quả táo, cho B 2 quả, B cho lại A 1 quả. Hỏi A có mấy quả?"✅ "A có 5 quả táo, cho B 2 quả, B cho lại A 1 quả. Hãy tính từng bước và cho biết A có mấy quả?"Tóm tắt
Phần tiêu đề “Tóm tắt”| Khái niệm | Ý nghĩa |
|---|---|
| Generative AI | AI tạo nội dung mới (text, image, code…) |
| Transformer | Kiến trúc với Self-Attention, nền tảng của LLM |
| Token | Đơn vị nhỏ nhất model xử lý |
| Inference | Quá trình từ prompt → response |
| Temperature | Điều chỉnh độ sáng tạo (0 = chính xác, 1+ = sáng tạo) |
| Top-P/Top-K | Giới hạn pool tokens được xem xét |
| Prompting | Nghệ thuật viết instruction hiệu quả |
Bài tiếp theo: Context Window - Hiểu về giới hạn tokens và cách tối ưu.