AI Core cho lập trình viên/Hallucination — vì sao model bịa
25/54
Bài 25 / 54~13 phútCỗ máy LLMMiễn phí lượt xem

Hallucination — vì sao model bịa

Model không nói dối — nó chọn token khả dĩ nhất, không có khái niệm đúng/sai. Hallucination là hệ quả tất yếu của cơ chế, nên đoán trước được khi nào nó dễ xảy ra.

TL;DR: Model không "nói dối" — nó chỉ chọn token khả dĩ nhất theo phân phối xác suất (bài 01), không có khái niệm đúng/sai, không có cơ chế kiểm chứng sự thật nào chạy song song. Khi phân phối đó không được neo bởi dữ liệu train hay context đủ thông tin, model vẫn phải chọn ra một token kế tiếp — ra đời một câu trả lời trôi chảy nhưng bịa. Đó là hallucination: hệ quả tất yếu của cơ chế, không phải bug ngẫu nhiên. Hiểu cơ chế cho bạn thứ hữu ích hơn lời giải thích: khả năng đoán trước tình huống nào dễ bịa, trước khi hỏi.

Quay lại bài tokenization: bot trả lời sai khi đếm chữ "r" trong "strawberry" — vì model không thấy ký tự, chỉ thấy ID token. Nhưng còn một câu hỏi bài đó chưa trả lời: vì sao model không biết là mình có thể sai, vẫn trả lời dõng dạc như chắc chắn? Bài này trả lời đúng câu hỏi đó, rộng hơn nhiều so với việc đếm chữ.

Nhớ lại Context window

Model chỉ nhìn được một cửa sổ token giới hạn. Thông tin nằm ngoài cửa sổ đó — bị cắt, hoặc chưa từng được nạp vào prompt — không tồn tại trong phân phối xác suất model đang tính. Model không "biết mình thiếu dữ liệu"; nó vẫn chọn token kế tiếp bình thường, chỉ là chọn dựa trên ít căn cứ hơn.

Nhớ lại Sampling — temperature

Temperature điều chỉnh việc chọn token từ phân phối xác suất "nhọn" hay "phẳng" thế nào. Temperature cao làm phân phối phẳng ra — token xác suất thấp có cơ hội được chọn cao hơn hẳn. Với tác vụ cần độ chính xác cao (tra số liệu, trích dẫn), đó là vặn thêm may rủi vào đúng chỗ không nên vặn.

1. Analogy — người bị ép trả lời ngay

Hỏi một người bạn: "Thủ đô của Kyrgyzstan là gì?" Không biết thì người bình thường nói "tôi không chắc". Nhưng giả sử luật chơi bắt buộc: phải trả lời ngay bằng một từ, không được im lặng. Người đó sẽ đoán — bằng trực giác về những gì nghe hợp lý, một cái tên nghe giống thành phố Trung Á. Có thể đúng, có thể sai — nhưng câu trả lời luôn được nói ra với vẻ tự tin ngang nhau, vì luật chơi không cho thể hiện mức độ chắc chắn.

Model ở đúng vị trí đó, ở mọi câu hỏi, mọi lúc:

Người bị ép trả lờiModel sinh token
Không được nói "không biết"Không có token nào nghĩa là "dừng lại, tôi không chắc" mặc định
Đoán bằng trực giác "nghe hợp lý"Chọn token có xác suất cao nhất theo phân phối đã học
Giọng tự tin như nhau dù đúng hay đoánKhông có tín hiệu nội tại phân biệt "nhớ chắc" với "đoán"
Càng ít thông tin nền, càng dễ đoán saiCâu hỏi ngoài dữ liệu train / thiếu context → phân phối kém neo
💡 Cách nhớ

Model không có nút "im lặng". Mỗi bước sinh, nó buộc phải xuất ra một token — hallucination là cái giá của việc không bao giờ được phép ngừng đoán.

2. Không có khái niệm đúng/sai — chỉ có phân phối xác suất

Bài 01 đã dựng vòng lặp: model dự đoán token kế tiếp dựa trên toàn bộ token đứng trước, lặp lại. Điểm bài đó chưa nhấn: bên trong vòng lặp ấy không có bước nào kiểm tra sự thật. Không có "fact-checker" chạy song song, không có bảng tra cứu đối chiếu output với thế giới thực (trừ khi hệ thống cố tình gắn thêm công cụ ngoài — ngoài phạm vi bài này). Model chỉ tính phân phối xác suất cho token kế tiếp, rồi chọn theo cơ chế sampling (bài 04).

Nói cách khác: "đúng sự thật" và "khả dĩ về mặt thống kê" là hai trục khác nhau, model chỉ tối ưu trục thứ hai. Phần lớn thời gian hai trục trùng nhau — văn bản đúng sự thật cũng thường phổ biến, mạch lạc trong dữ liệu train. Nhưng khi hai trục tách ra, model vẫn chọn theo trục nó tối ưu. Nó không "nói dối" theo nghĩa biết sự thật rồi cố tình nói khác; nó không có kênh nào để biết sự thật ngoài chính phân phối xác suất đó.

Đường đi tới một câu bịa khi phân phối không neo vững:

Phân phối không neo vững, model vẫn phải chọn một token vì không có lựa chọn im lặng, kết quả là output bịa

Nhánh ngược lại — phân phối neo vững, nhọn vào token đúng — cho output thường đúng. Nhưng mấu chốt: cả hai nhánh cho ra câu cùng một giọng trôi chảy, tự tin. Vì output không mang tín hiệu độ tin cậy, hallucination khó phát hiện bằng mắt.

3. Vì sao là hệ quả tất yếu, không phải bug ngẫu nhiên?

Gọi hallucination là "bug" ngầm ý sửa được bằng vá lỗi, và khi không xảy ra thì cơ chế "hoạt động đúng". Sai ở ba chỗ:

  • Cùng một cơ chế sinh cả câu đúng lẫn câu bịa — không có "chế độ bịa" riêng để tắt. Chỉ khác đầu vào (câu hỏi neo vững hay không), cùng phép tính phân phối cho ra kết quả khác.
  • Không có tín hiệu nội tại phân biệt "nhớ chắc" với "đoán" — xác suất token cao chỉ nghĩa là khả dĩ theo thống kê, không nghĩa là đúng sự thật.
  • Kiến trúc autoregressive không có bước "dừng vì không chắc" — mỗi bước sinh bắt buộc phải ra token, không như người có thể chọn im lặng.

Vì vậy hallucination không phải "khi model gặp trục trặc" — nó là hành vi mặc định khi phân phối không được neo tốt. Ji et al. (Survey of Hallucination in Natural Language Generation, arXiv:2202.03629) liệt kê nhiều nguồn gây hallucination — trong đó có tính ngẫu nhiên của chiến lược decoding — cho thấy hiện tượng này không giới hạn ở "vài model kém" mà gắn với chính cách văn bản được sinh ra.

⚠️ Nhầm phổ biến

"Model đời mới hơn / nhiều tham số hơn thì hết hallucination." Model tốt hơn thu hẹp vùng dễ bịa (nhiều kiến thức train hơn, phân phối neo tốt hơn ở nhiều chủ đề hơn) — nhưng cơ chế autoregressive vẫn buộc phải chọn token khi gặp câu hỏi vượt ra ngoài vùng đó. Không có kích thước model nào xoá bỏ hoàn toàn tình huống "hỏi ngoài những gì đã neo".

4. Đoán trước: tình huống nào dễ bịa

Thử đoán trước

Trước khi đọc danh sách bên dưới — dựa vào những gì vừa đọc (phân phối cần được "neo" bởi dữ liệu train hoặc context, và temperature ảnh hưởng độ phẳng của phân phối) — bạn đoán có những tình huống nào khiến model dễ bịa nhất? Viết ra ít nhất hai tình huống trước khi cuộn tiếp.

Đoán ra được vài ý dưới đây nghĩa là bạn đã hiểu cơ chế đủ sâu để dự đoán hành vi, không chỉ ghi nhớ triệu chứng.

1. Hỏi ngoài dữ liệu train. Sự kiện sau knowledge cutoff, chủ đề quá hẹp/mới để xuất hiện đủ trong kho huấn luyện — phân phối không có gì để neo, model vẫn chọn token nghe hợp lý nhất.

2. Đòi chi tiết cụ thể — số, tên riêng, ngày tháng, trích dẫn. Nhóm nguy hiểm nhất vì dễ nhầm là đáng tin: một citation đầy đủ (tên tác giả, năm, tạp chí) nghe như đã tra cứu kỹ. Nhưng chi tiết càng cụ thể, xác suất đúng từng chữ càng thấp nếu không có nguồn thật — model sinh ra dạng thức "trông giống trích dẫn", không tra cứu trích dẫn. Citation bịa với định dạng hoàn hảo là dạng phổ biến nhất trong nhóm này.

3. Context thiếu thông tin cần thiết (nối bài 03). Dữ kiện cần nằm ngoài cửa sổ context — bị cắt vì hội thoại dài, hoặc chưa từng đưa vào prompt — model tính phân phối chỉ dựa trên phần còn lại, thiếu căn cứ mà vẫn phải trả lời.

4. Temperature cao (nối bài 04). Phân phối bị làm phẳng chủ động, token xác suất thấp được chọn thường xuyên hơn — với tác vụ cần độ chính xác (tra số liệu, trích dẫn), đó là tự tăng rủi ro bịa.

Tình huốngVì sao phân phối mất neo
Ngoài dữ liệu trainChủ đề không đủ dữ liệu để hình thành phân phối nhọn
Chi tiết cụ thể (số/tên/ngày/citation)Đúng dạng thức dễ, đúng từng ký tự khó — model tối ưu dạng thức
Context thiếu thông tinDữ kiện cần thiết nằm ngoài cửa sổ token model đang thấy
Temperature caoPhân phối bị làm phẳng chủ động, token xác suất thấp dễ được chọn

5. Pitfall

Nhầm 1 — nghĩ giọng tự tin là tín hiệu đáng tin:

✅ Form câu (mạch lạc, dõng dạc) không mang thông tin về độ chắc chắn — model không có cơ chế hạ giọng khi đoán. Tự tin và đúng là hai thứ độc lập.

Nhầm 2 — tin citation vì đúng định dạng (tên tác giả, năm, tạp chí đầy đủ):

✅ Định dạng đúng dễ sinh hơn nội dung đúng — model học rất tốt khuôn mẫu trích dẫn học thuật, nhưng khuôn mẫu không đảm bảo bài báo tồn tại. Luôn tra lại citation trước khi dùng.

Nhầm 3 — hỏi lại model "bạn có chắc không?" để kiểm tra:

✅ Câu hỏi đó đi qua đúng cơ chế sinh token vừa mô tả — model sinh ra lời xác nhận hoặc xin lỗi theo phân phối xác suất, không phải phép tự-kiểm-tra độc lập. Cách đáng tin là đối chiếu nguồn ngoài (tài liệu gốc, search, con người), không phải hỏi lại chính model.

6. 📚 Deep Dive

📚 Nguồn gốc — đọc khi muốn xuống tầng sâu hơn

Paper chính chủ:

Ghi chú: bài này trình bày định tính — không có số liệu benchmark hallucination-rate nào được trích, vì các con số đó thay đổi nhanh theo từng model/phiên bản và dễ lỗi thời. Cơ chế mô tả (phân phối xác suất không neo, không có bước fact-check nội tại) là nội dung ổn định, không phụ thuộc con số.

7. Liên hệ các bài khác

8. Tóm tắt

  • Model không có khái niệm đúng/sai — chỉ có phân phối xác suất token kế tiếp, không có bước fact-check nội tại nào chạy song song.
  • Hallucination là hệ quả tất yếu của next-token prediction: khi phân phối không được neo vững, model vẫn buộc phải chọn ra một token — không có lựa chọn "im lặng vì không chắc".
  • Bốn tình huống dễ bịa, đoán trước được từ cơ chế: hỏi ngoài dữ liệu train, đòi chi tiết cụ thể (số/tên/ngày/citation), context thiếu thông tin, temperature cao.
  • Giọng văn tự tin không phải tín hiệu đáng tin — form câu không mang thông tin về độ chắc chắn.
  • Cách kiểm chứng đáng tin là đối chiếu nguồn ngoài, không phải hỏi lại chính model.

9. Tự kiểm tra

Tự kiểm tra
Q1
Vì sao gọi hallucination là 'bug' là cách nhìn không chính xác về mặt cơ chế?

Cơ chế sinh câu bịa và câu đúng là cùng một phép tính phân phối xác suất token — không có "chế độ bịa" riêng để tắt. Khác biệt duy nhất là đầu vào: câu hỏi có được dữ liệu train hoặc context neo vững hay không.

Gọi là bug ngầm ý sửa được bằng vá lỗi cục bộ; thực tế đây là hành vi mặc định của kiến trúc autoregressive khi thiếu neo, không có nhánh "dừng vì không chắc".

Q2
Đồng nghiệp nói: 'Model trả lời rất dõng dạc, chắc chắn đúng.' Phản biện dựa trên cơ chế đã học ở bài này.

Giọng tự tin và độ chính xác là hai trục độc lập — model không tự lộ ra output một tín hiệu đáng tin để phân biệt "nhớ chắc" với "đoán": cả hai đều đi qua cùng bước chọn token xác suất cao nhất, và calibration (nếu có) thường bị RLHF/instruction-tuning làm méo. Câu bịa nghe hợp lý có thể có xác suất token cao ngang câu đúng.

Form câu không mang thông tin về độ tin cậy — không nên dùng giọng văn làm bằng chứng.

Q3
Bạn hỏi model một câu hỏi có kèm yêu cầu 'trích dẫn nguồn: tên tác giả, năm, tên tạp chí'. Vì sao đây là tình huống rủi ro hallucination cao, dù câu trả lời có thể trông rất chuyên nghiệp?

Model học rất tốt khuôn mẫu trích dẫn học thuật (thứ tự tên-năm-tạp chí) — nhưng đúng khuôn mẫu không đảm bảo bài báo tồn tại. Chi tiết càng cụ thể, xác suất đúng từng phần càng thấp nếu không có nguồn thật.

Citation bịa với định dạng hoàn hảo là dạng phổ biến nhất trong nhóm "đòi chi tiết cụ thể" — luôn tra lại trước khi dùng.

Q4
Nối với bài context window: vì sao một hội thoại rất dài với model dễ dẫn tới hallucination hơn một hội thoại ngắn, cùng chủ đề?

Context window có giới hạn token; hội thoại dài có thể đẩy dữ kiện quan trọng ở đầu ra ngoài cửa sổ (bài 03). Model tính phân phối chỉ dựa trên phần còn lại — thiếu dữ kiện cần thiết mà vẫn phải trả lời.

Đây là "context thiếu thông tin" không phải model "quên" theo nghĩa con người — thông tin đó không còn nằm trong dữ liệu model đang thấy.

Q5
Bạn nghi ngờ một câu trả lời của model bị bịa, nên hỏi lại: 'Bạn có chắc chắn không?' Vì sao cách kiểm chứng này không đáng tin, và nên làm gì thay thế?

Câu hỏi đó vẫn đi qua đúng cơ chế sinh token ban đầu — model sinh câu trả lời "nghe như" xác nhận hoặc xin lỗi theo phân phối xác suất, không phải phép tự-kiểm-tra độc lập.

Cách đáng tin là đối chiếu nguồn ngoài — tài liệu gốc, search, con người — vì đó là kênh duy nhất xác nhận sự thật mà model không có.

Bài tiếp theo: Mini-challenge — đọc log ba sự cố

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

Mini-challenge: đọc log ba sự cố LLM