Bỏ qua tới nội dung
Bài 7/12 · Prompt engineering từ cơ bản đến trung cấp (DAIR.AI)

Chain-of-thought prompting

Chain-of-thought (CoT) prompting dùng các bước suy luận trung gian; zero-shot CoT với "Let's think step by step" và Auto-CoT tự sinh minh hoạ.

Trung cấp@shine19045 phút đọc

Bài này giới thiệu chain-of-thought (CoT) prompting, kỹ thuật giúp LLM giải các tác vụ cần suy luận bằng cách đi qua các bước trung gian, cùng hai biến thể là zero-shot CoT và Auto-CoT.

Chain-of-thought (CoT) prompting

Minh hoạ chain-of-thought prompting

Nguồn ảnh: Wei et al. (2022)

Được giới thiệu trong Wei et al. (2022), chain-of-thought (CoT) prompting giúp model có khả năng suy luận phức tạp thông qua các bước suy luận trung gian. Bạn có thể kết hợp nó với few-shot prompting để có kết quả tốt hơn ở các tác vụ phức tạp cần suy luận trước khi trả lời.

Prompt:

code
The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.

The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
A: Adding all the odd numbers (17, 19) gives 36. The answer is True.

The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
A: Adding all the odd numbers (11, 13) gives 24. The answer is True.

The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
A: Adding all the odd numbers (17, 9, 13) gives 39. The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
A:

Đầu ra:

code
Adding all the odd numbers (15, 5, 13, 7, 1) gives 41. The answer is False.

Tuyệt! Chúng ta có kết quả hoàn hảo khi đưa ra bước suy luận. Thực tế, có thể giải tác vụ này với ít ví dụ hơn nữa, chỉ một ví dụ có vẻ là đủ:

Prompt:

code
The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
A:

Đầu ra:

code
Adding all the odd numbers (15, 5, 13, 7, 1) gives 41. The answer is False.

Hãy nhớ rằng các tác giả cho rằng đây là một khả năng "nảy sinh" (emergent ability), chỉ xuất hiện ở các model ngôn ngữ đủ lớn.

Zero-shot CoT prompting

Minh hoạ zero-shot CoT

Nguồn ảnh: Kojima et al. (2022)

Một ý tưởng xuất hiện gần đây hơn là zero-shot CoT (Kojima et al. 2022), về cơ bản là thêm câu "Let's think step by step" (Hãy suy nghĩ từng bước) vào prompt gốc. Thử một bài toán đơn giản xem model làm thế nào:

Prompt:

code
I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?

Đầu ra:

code
11 apples

Câu trả lời sai! Giờ thử với prompt đặc biệt.

Prompt:

code
I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?

Let's think step by step.

Đầu ra:

code
First, you started with 10 apples.
You gave away 2 apples to the neighbor and 2 to the repairman, so you had 6 apples left.
Then you bought 5 more apples, so now you had 11 apples.
Finally, you ate 1 apple, so you would remain with 10 apples.

Thật ấn tượng khi một prompt đơn giản như vậy lại hiệu quả với tác vụ này. Điều này đặc biệt hữu ích khi bạn không có nhiều ví dụ để đưa vào prompt.

Automatic Chain-of-Thought (Auto-CoT)

Khi áp dụng chain-of-thought prompting có minh hoạ, quá trình đòi hỏi tự tay soạn các ví dụ hiệu quả và đa dạng. Công sức thủ công này có thể dẫn tới lời giải chưa tối ưu. Zhang et al. (2022) đề xuất một cách loại bỏ công sức thủ công bằng cách dùng LLM với prompt "Let's think step by step" để sinh lần lượt từng chuỗi suy luận cho các minh hoạ. Quá trình tự động này vẫn có thể sinh ra chuỗi suy luận có lỗi. Để giảm ảnh hưởng của lỗi, độ đa dạng của các minh hoạ là quan trọng. Công trình này đề xuất Auto-CoT, lấy mẫu các câu hỏi đa dạng và sinh chuỗi suy luận để dựng minh hoạ.

Auto-CoT gồm hai giai đoạn chính:

  • Giai đoạn 1) phân cụm câu hỏi: chia các câu hỏi của một bộ dữ liệu thành vài cụm
  • Giai đoạn 2) lấy mẫu minh hoạ: chọn một câu hỏi đại diện cho mỗi cụm và sinh chuỗi suy luận của nó bằng Zero-Shot-CoT với vài heuristic đơn giản

Các heuristic đơn giản có thể là độ dài câu hỏi (ví dụ 60 token) và số bước trong lập luận (ví dụ 5 bước suy luận). Điều này khuyến khích model dùng các minh hoạ đơn giản và chính xác.

Quá trình được minh hoạ dưới đây:

Minh hoạ Auto-CoT

Nguồn ảnh: Zhang et al. (2022)

Code của Auto-CoT có tại đây.

Nguồn