TROISINH
FoundationsAlignment & Adaptation

Chain-of-Thought — "Nghĩ từng bước" và accuracy nhảy vọt

Kỹ thuật prompting đơn giản 'hãy nghĩ từng bước' giúp LLM tăng độ chính xác 40% trên bài toán logic. Không cần fine-tune, chỉ cần đổi cách hỏi.

Bạn từng thấy ChatGPT tính nhầm "10 - 3 × 2 = 14" khi hỏi vội, nhưng đúng ngay khi bắt nó "nghĩ từng bước"? Hiện tượng đó có tên gọi Chain-of-Thought (CoT). Từ một bài paper năm 2022, kỹ thuật này đã trở thành công cụ mặc định trong mọi pipeline reasoning hiện đại — từ DeepSeek-R1 đến Claude và GPT-4o. Không cần động vào weight model, chỉ cần thêm vài chữ vào prompt, bạn biến một "học sinh cẩu thả" thành "thủ khoa toán".

Vấn đề

LLM trước khi có CoT hoạt động như chế độ "System 1" của con người: phản xạ nhanh, đoán đáp án ngay lập tức dựa trên pattern đã gặp trong pretraining. Khi gặp bài toán đòi hỏi nhiều bước suy luận (multi-hop reasoning) như "John có 10 quả táo, cho bạn 3 quả, rồi mua thêm gấp đôi số táo còn lại. Hỏi John có bao nhiêu quả?", model thường trả lời 14 thay vì 17. Nó "nhảy cóc" từ đề bài sang đáp án, bỏ qua bước trung gian (còn 7 quả, rồi 7×2=14, tổng cộng 17).

Vấn đề không phải model "ngu", mà là cách chúng ta hỏi ép buộc model phải đưa ra kết luận ngay lập tức, trong khi bản thân Transformer không có bộ nhớ làm việc (working memory) riêng để lưu trữ các giá trị trung gian.

Ý tưởng cốt lõi

Thay vì hỏi "Đáp án là gì?", hãy hỏi "Hãy nghĩ từng bước rồi mới đưa ra đáp án".

Đơn giản vậy thôi. Câu magic "Let's think step by step" khiến model generate ra một chuỗi token trung gian (intermediate reasoning tokens) trước khi đưa ra kết luận cuối cùng.

Hãy tưởng tượng bạn giải toán trên giấy nháp. Nếu tính nhẩm, bạn dễ nhầm lẫn thứ tự phép tính. Nhưng khi viết từng bước ra — "Trừ trước: 10-3=7, nhân sau: 7×2=14, cộng lại: 7+14=17" — dù chậm hơn nhưng chính xác hơn. CoT chính là việc biến context window của LLM thành tờ giấy nháp đó. Model viết ra suy nghĩ của mình, rồi đọc lại chính những gì vừa viết để tính tiếp.

Đây là phần tinh tế: Transformer vẫn là next-token predictor như mọi khi. Nhưng khi buộc nó dự đoán "Bước 1: John còn 7 quả" trước, nó buộc phải thực hiện phép trừ 10-3 và ghi kết quả vào KV cache. Ở bước tiếp theo, attention mechanism "nhìn thấy" token "7" trong lịch sử và dùng nó làm input cho phép nhân tiếp theo. CoT không dạy model thêm kiến thức toán mới — nó cho phép model externalize bộ nhớ làm việc, biến context window thành băng chuyền xử lý thông tin thay vì chỉ là input đọc một lần.

"Nhiều người nghĩ CoT là một loại fine-tuning hoặc kiến trúc mới — thực ra nó chỉ là kỹ thuật prompting. Phần quan trọng nhất là bạn đang reframe tác vụ từ 'trả lời ngay' sang 'viết suy luận ra trước'. That's it."

Tại sao nó hoạt động

Cơ chế đằng sau CoT là sự kết hợp giữa autoregressive generationattention as working memory.

Khi model viết ra "John còn 7 quả", nó tạo ra một "checkpoint" trong chuỗi token. Các layer attention sau đó có thể truy cập giá trị này thông qua Key-Value cache giống như con người liếc lại dòng tính nhẩm vừa viết. Điều này cho phép model thực hiện các phép tính lặp lại (iterative computation) mà không cần sửa đổi kiến trúc neural network.

Về mặt toán học, nếu biểu diễn reasoning như một đồ thị tính toán, CoT biến một phép tính "đơn bước" thành "đa bước" với độ phức tạp O(n) theo số bước suy luận, thay vì cố gắng nén toàn bộ logic vào một lớp representation duy nhất.

Một yếu tố quan trọng khác là self-consistency: khi đã dùng CoT, bạn có thể generate nhiều lời giải khác nhau (với temperature > 0), rồi chọn đáp án xuất hiện nhiều nhất. Điều này giảm variance đáng kể — giống như hỏi một nhóm học sinh cách giải, rồi chọn đáp án đa số thay vì tin vào một người duy nhất.

Ý nghĩa thực tế

Impact thực tế: Trên benchmark GSM8K (toán lớp 5-8), PaLM 540B đạt 17% accuracy với zero-shot prompting thông thường, nhưng nhảy vọt lên 57% khi thêm CoT. Với BIG-Bench Hard — bộ test đòi hỏi reasoning phức tạp — PaLM chỉ vượt qua mức trung bình của con người khi được kích hoạt CoT trên 10/23 tác vụ. DeepSeek-R1 và OpenAI o-series đã đưa ý tưởng này lên tầm cao mới bằng cách kết hợp CoT với Reinforcement Learning (GRPO), tạo ra các chuỗi suy luận dài hàng nghìn token với độ chính xác >90%.

Ai đang dùng: Tất cả các model chat hiện đại (ChatGPT, Claude, Gemini) đều được instruction-tuning để tự động sinh CoT khi gặp câu hỏi phức tạp. Các framework agent như ReAct dùng CoT để interleave reasoning với tool use — nghĩ một bước, gọi API một bước, rồi nghĩ tiếp.

Các giới hạn:

  • Chi phí token: Một chuỗi CoT dài có thể tiêu tốn 10-50 lần số token của câu trả lời cuối cùng, làm tăng chi phí inference đáng kể.
  • Không phải task nào cũng cần: Viết thư cảm ơn hay tạo ý tưởng sáng tạo không cần CoT — thậm chí CoT còn làm output cứng nhắc.
  • Model size threshold: Model quá nhỏ (< 10B parameters) đôi khi không đủ khả năng học pattern reasoning tốt, dù có prompt CoT vẫn sinh ra các bước vô nghĩa.
  • Hallucination tích lũy: Nếu bước 1 sai, các bước sau thường "chạy theo" lỗi đó, tạo ra chuỗi suy luận tự tin nhưng hoàn toàn sai lầm.

Đào sâu hơn

Paper gốc:

Bài liên quan TroiSinh:

Cùng cụm (Alignment & Adaptation):

  • Supervised Fine-Tuning (SFT) — Cách dạy model bắt chước output tốt, thường bao gồm cả ví dụ CoT trong data.
  • Instruction Tuning — Biến model từ "nối text" thành "làm theo lệnh", nơi CoT trở thành behavior mặc định.
  • Prompt Engineering — Zero-shot, Few-shot, và nghệ thuật "ra đề" để kích hoạt CoT hiệu quả.
  • LoRA — Khi bạn muốn fine-tune model để nó tự động sinh CoT tốt hơn mà không cần sửa toàn bộ weight.

Đọc tiếp:

  • GRPO & RLVR — Huấn luyện model tự sinh ra CoT dài và chất lượng cao thông qua reinforcement learning, không cần dữ liệu human-labeled.
  • Test-Time Compute Scaling — Tăng thời gian "nghĩ" (CoT tokens) thay vì tăng kích thước model để đạt accuracy cao hơn.
  • Agentic AI & Tool Use — Kết hợp CoT với khả năng gọi function, tạo thành vòng lặp Reason-Act.

Mở rộng:

On this page