Phác họa bài post:
Ⓐ. Đề dẫn
Ⓑ. Prompt?
Ⓒ. Kỹ thuật
thiết kế Prompt
Ⓓ. Suy ngẫm chậm
Ⓔ. Phụ lục
-
Để giúp anh/chị
quyết định có đọc tiếp hay không, tôi xin phép cung cấp các thông tin liên quan
đến bài post này như sau:
·
Chủ
đề: Machine Learning.
·
Tính
thời sự: Tháng 5/2023.
·
Thời
gian đọc: 15 phút.
~
Chúng ta chứng
kiến sự bùng nổ của Large Language Models (LLM) trong thời gian gần đây,
kể từ sau khi ChatGPT xuất hiện vào ngày 30/11/2022. Ngày 14/3/2023, OpenAI
công bố phiên bản hạn chế của GPT-4 thông qua ChatGPT Plus. Thế giới cảm nhận
AGI (artificial general intelligence – trí tuệ nhân tạo tổng quát) đang
đến rất gần, nhanh hơn nhiều so với tất cả các dự báo trước đây.
Câu chuyện tôi
muốn nhàn đàm cùng anh/chị hôm nay chỉ xoay quanh một vấn đề nhỏ trong câu chuyện
lớn đó: làm thế nào để khai thác sức mạnh của LLM: Prompt Engineering,
viết tắt là PE. Xin phép anh/chị không dịch cụm từ này. Lý do? Thứ nhất: dịch rất
khó. Thứ hai: đôi lúc chúng ta chấp nhận du nhập từ vựng nếu cụm từ đó được cả
thế giới sử dụng, đặc biệt trong thời kỳ phôi thai khái niệm.
-
Ⓐ. Đề dẫn
Người dùng hoặc
nhà nghiên cứu “nói chuyện” với LLM bằng cách nào? Rất đơn giản: chúng ta đưa đầu
vào Prompt, LLM đọc đầu vào và hồi đáp bằng đầu ra Response như
hình vẽ dưới đây.
Cái gì quyết định chất lượng của hồi đáp Response? Hay nói cách khác, hồi đáp Response có đáp ứng được dụng ý của Prompt hay không? Rõ ràng, yếu tố cơ bản nhất là chất lượng của mô hình LLM. Chẳng hạn nếu LLM là ChatGPT hoặc ChatGPT Plus thì Response thường “rất mỹ mãn”. Ngoài chất lượng của mô hình LLM, còn một yếu tố nữa quyết định đến chất lượng hồi đáp Response – đó là việc chúng ta thiết kế Prompt hay dở thế nào. Cái này rất giống với đời thường thôi. Có nhiều người đặt vấn đề, đặt câu hỏi rất hay – nói đến đâu hiểu đến đó. Trong trường hợp này, hẳn nhiên chúng ta kỳ vọng hồi đáp chất lượng cao nhờ cách đặt vấn đề hay. Nhưng cũng có nhiều người đặt vấn đề rối rắm, thậm chí mâu thuẫn trong câu hỏi. Hệ quả: chúng ta khó mà hy vọng có hồi đáp hay được.
-
Bài này chủ yếu
đề cập đến cách thiết kế, cách đặt vấn đề, cách đặt câu hỏi cho LLM: Prompt
Engineering. Tham chiếu cho bài post này là trang Prompt
Engineering Guide dành
cho độc giả “ngại” lập trình và trang ChatGPT Prompt Engineering for
Developers dành cho
anh/chị thuộc tuýp “tò mò”, biết đôi chút về lập trình.
-
Chọn LLM để
trải nghiệm. Kể từ thời
điểm ra đời của ChatGPT, gần như hàng ngày xuất hiện LLM mới. Trong khuôn khổ
bài post này, tôi chỉ chọn 2 LLM để trải nghiệm, đó là ChatGPT của OpenAI và
Bing CHAT của Microsoft. Lý do của việc lựa chọn này: cả ChatGPT lẫn Bing CHAT
khá ổn định về chất lượng, đa ngữ trong đó có tiếng Việt, nhưng đặc biệt hơn cả
là chúng ta có thể sử dụng chúng một cách miễn phí.
-
Ⓑ. Prompt?
Có thể anh/chị
đặt câu hỏi: Prompt là gì vậy? Ở mức sơ đẳng, Prompt có cấu trúc
rất đơn giản:
<Câu
hỏi>
Hoặc
<Câu
lệnh>
Loại Prompt
tiêu chuẩn (Standard) như trên là loại phổ biến nhất, đặc biệt khi chúng
ta lần đầu tiếp cận với ChatGPT hoặc Bing Chat.
Tổng quát hơn một
chút, người ta thấy Prompt gồm một số thành phần như sau:
·
Role (Định nghĩa vai trò của Chatbot
trong Prompt)
·
Instruction (câu hỏi hoặc câu lệnh)
·
Context (bối cảnh)
·
Input
Data (dữ liệu đầu vào,
thường là dữ liệu demo)
·
Output
Indicator (chỉ định dạng
thức đầu ra: cấu trúc bảng, JSON, HTML, …)
Nghĩa là: Prompt
= [Role] + Instruction + [Context] + [Input Data] +
[Output Indicator]. Chỉ có thành phần Instruction là phải có, còn
lại thì có cũng được, không có cũng được. Các thành phần này cũng không nhất
thiết phải tuân theo một trật tự nào cả.
Người ta liệt
kê ra một số ví dụ về Prompt:
·
Text Summarization (Tóm tắt văn bản)
·
Information Extraction (Trích xuất thông tin)
·
Question Answering (Hỏi đáp)
·
Text Classification (Phân loại văn bản)
·
Conversation (Hội thoại)
·
Code Generation (Tạo mã lập trình)
·
Reasoning (Lý luận)
-
Ⓒ. Kỹ thuật thiết kế Prompt
Lưu ý rằng để
có được một “Prompt hay” là cả một quá trình. Khởi đầu chúng ta viết Prompt
đơn giản. Sau đó chúng ta chi tiết hóa, đưa vào các từ khóa, đưa vào đặc tả,
đưa vào dữ liệu demo cho đến khi nhận được hồi đáp Response như mong đợi.
Nếu anh/chị đã
có trải nghiệm sử dụng các LLM như ChatGPT hay Bing CHAT thì làm thế nào để có
một Prompt hay hóa ra không đơn giản như suy nghĩ ban đầu. Nếu chúng ta
có thời gian lược qua các nghiên cứu liên quan đến LLM trong thời gian kể từ
năm 2020 đổ lại, rất dễ nhận thấy có khá nhiều bài báo khoa học đề xuất cách
thiết kế Prompt. Càng ngày người ta càng nhận ra rằng để người dùng
thông thường khai thác sức mạnh tiềm ẩn của LLM thì cách tốt nhất là thiết kế Prompt
một cách phù hợp với mục tiêu và lĩnh vực của họ.
Liệu cách tiếp
cận này có phức tạp hóa một vấn đề mà thoạt nhìn có vẻ đơn giản hay không? Để
trả lời câu hỏi này, tôi xin phép lấy một ví dụ: môn học Cơ sở dữ liệu quan hệ
(Relational Database - RDBMS). Về bản chất, RDBMS là tập hợp các bảng
có mối quan hệ với nhau. Nhìn qua có vẻ rất đơn giản. Thế mà khởi đầu từ bài
báo của Dr. Edgar F. Codd vào năm 1970 cho đến mãi về sau người ta mới thống nhất
được một ngôn ngữ truy vấn SQL để khai thác RDBMS. Huống hồ đây là LLM – tổng hợp
kiến thức của nhân loại được tích hợp dưới dạng văn bản và có mối quan hệ rất
phức tạp được mã hóa thông qua mô hình Transformer! Vậy nên Prompt Engineering phức
tạp là phải. 😊
-
Dưới góc độ kỹ
thuật, PE không làm thay đổi các trọng số (weights) của mô hình – khác với
Fine-tuning. PE kích hoạt tri thức của LLM ở giai đoạn Pre-training.
Chúng ta hình dung LLM là một kho tri thức khổng lồ bao gồm gần như tất cả các
lĩnh vực được lưu giữ và liên kết với nhau thông qua tập hợp các trọng số của
nó. Thiết kế PE chính là làm sao “khiến” (elicit) LLM tận dụng kho tri
thức khổng lồ đó để xuất ra hồi đáp Response đúng như dụng ý (intention).
Chú ý rằng PE
là một môn khoa học thực nghiệm, đòi hỏi rất nhiều thử nghiệm rồi đối chiếu, so
sánh, thay đổi, tiến hóa. Nếu anh/chị có thời gian tham khảo các PE trên mạng
thì có thể sẽ bị “ngợp” với “vô số” ví dụ trong nhiều lĩnh vực. Cái mà tôi có
thể đàm luận về PE chỉ có thể gói gọn trong một vài nguyên tắc, một số ít các dạng
thức cơ bản mà thôi.
```
Việc
tận dụng các kỹ thuật này như thế nào để cho ra được hồi đáp Response
thuộc một lĩnh vực nào đó lại là một vấn đề khác, rộng hơn, vượt ra ngoài khuôn
khổ bài post này. Ví dụ, người ta có thể lập trình PE thành một trợ giảng cho
sinh viên, học sinh, một cố vấn pháp lý, trợ lý ảo cho chủ doanh nghiệp, các
chatbot bán hàng, …
```
-
ⓐ. Cài đặt tham số cho mô hình (LLM Settings)
Chúng ta chú ý
rằng (nhắc lại) nguyên lý cơ bản của LLM là phát sinh “từ tiếp theo” từ một
“chuỗi từ” trước đó. “Từ tiếp theo” được phát sinh theo xác suất: “từ” có xác
suất cao nhất sẽ được chọn. Trong trường hợp có nhiều “từ” có xác suất gần bằng
nhau thì hệ thống sẽ chọn như thế nào? Người dùng có thể “cài đặt” tham số cho
hệ thống để tăng tính mềm dẻo trong việc lựa chọn “từ tiếp theo” (Next Word).
Có 2 tham số có thể cài đặt, có tên gọi là Temperature và Top_P.
Temperature (nhiệt độ): Nhiệt độ cao nghĩa là LLM
chọn “từ tiếp theo” với xác suất thấp hơn một chút, đồng nghĩa với phần hồi đáp
Response có nhiều biến thể, mang tính ngẫu nhiên nhiều hơn, “sáng tạo”
hơn. Tuy nhiên, nếu đặt nhiệt độ quá cao sẽ tăng nguy cơ “ảo giác” (hallucination),
lúc đó LLM có thể chọn từ vô nghĩa hoặc lạc đề.
·
Lúc
nào thì cần nhiệt độ thấp?
Đó là lúc chúng ta cần dữ liệu càng chính xác càng tốt trong hồi đáp. Ví dụ lúc
chúng ta tạo mã lập trình.
·
Lúc
nào thì cần nhiệt độ cao?
Đó là lúc chúng ta khuyến khích LLM phóng tác. Ví dụ chúng ta nhờ LLM làm thơ,
viết truyện viễn tưởng.
Top_P. Thay vì cài đặt nhiệt độ, chúng ta có
thể cài đặt Top_P. Nguyên tắc cài đặt Top_P tương tự như cài đặt Temperature.
Nghĩa là Top_P thấp đồng nghĩa với Response có dộ chính xác cao; Top_P
cao đồng nghĩa với Response có nhiều biến thể, phóng tác.
-
Chú ý: Chỉ nên điều chỉnh một trong hai tham
số (Temperature, Top_P), không nên điều chỉnh đồng thời cả hai
tham số.
-
▼ Cài đặt các tham số
Temperature và Top_p như thế nào?
[Nếu
anh/chị lập trình OpenAI API thì tham khảo tại đây. Ở đây tôi chỉ nói trường hợp chúng ta
sử dụng Chatbot như ChatGPT hay Bing Chat.]
Sử
dụng câu lệnh /set_options trước khi viết Prompt.
/set_options
temperature=<value1> /top_p=<value2>
‘<value1>’ và ‘<value2>’ có giá trị nằm trong khoảng [0, 1].
Ví
dụ, nếu chúng ta muốn đặt giá trị của Top_P bằng 0.5 và Temperature bằng 0.8
thì chúng ta đặt câu lệnh là “/set_options
top_p=0.5 /temperature=0.8.”
-
Anh/chị
nào tò mò về kỹ thuật xin tham khảo Phụ lục ①.
▲ Cài đặt
-
ⓑ. Đặt câu lệnh/câu hỏi (Instruction Prompting)
“Instruction”
được hiểu là “câu lệnh/câu hỏi”. Có thể nói bài
báo của OpenAI vào
tháng 3/2022 đã đặt nền tảng cho việc “lái” LLM hồi đáp các Prompt dạng
câu lệnh. Trước thời điểm đó, các LLM thường chỉ “viết tiếp” phần còn lại của Prompt.
(Thỉnh thoảng chúng ta vẫn gặp hiện tượng “viết tiếp” Prompt nếu LLM
không “hiểu” dụng ý đứng đằng sau.)
Câu lệnh thường
bắt đầu bằng một động từ như “Mô tả”, “Viết”, “Tóm tắt”, “Phân loại”, “Dịch”, …
Sau động từ, chúng ta có thể ghép thêm “đối tượng” (audience) và yêu cầu
về nội dung.
Prompt:
Mô tả vật lý lượng tử là gì cho một đứa
trẻ 6 tuổi bằng ngôn ngữ tuổi trẻ thơ.
Response:
Vật lý lượng tử là như một trò chơi thú vị
với những hạt nhỏ như hạt cát siêu nhỏ và ánh sáng như những tia nắng sáng. Nó
cho chúng ta biết về cách những hạt này nhảy lên và nhảy xuống như những điệu
nhảy vui nhộn. Trong thế giới này, mọi thứ đều có thể xảy ra một cách kỳ quặc
và đặc biệt. Chúng ta có thể tưởng tượng về việc đi qua các cánh cửa ma thuật,
biến đổi từ hạt thành sóng và trò chuyện với những ngôi sao. Vật lý lượng tử
giúp chúng ta khám phá những bí ẩn của vũ trụ và mang đến những cuộc phiêu lưu
thú vị.
-
ⓒ. Thuyết minh dụng ý bằng làm mẫu (Zero-Shot / Few-Shot Prompting)
Khi tham khảo
các tài liệu trên mạng nói về LLM hẳn anh/chị sẽ gặp cụm từ Zero-Shot, One-Shot,
Few-Shot. Các thuật ngữ này lần đầu xuất hiện trong bài báo giới thiệu GPT-3 khi họ bàn về In-context learning.
In-context
learning là gì? Đối với
con người, chúng ta thu nhận kiến thức gần giống với giai đoạn Pre-training.
Khi suy diễn một vấn đề nào đó (gần giống với mô hình suy diễn), chúng ta trước
hết nhận diện tác vụ. Máy cũng vậy. Nhưng máy chỉ có khả năng nhận diện tác vụ
qua đoạn văn bản đầu vào. Kỹ năng này có tên gọi là pattern recognition
(nhận dạng mẫu): “mẫu” văn bản như vậy tương ứng với “tác vụ” nào. Các tác giả
bài báo gọi là In-context learning. Họ chia thành 4 mẫu ngữ cảnh tiêu biểu
của GPT-3 gồm:
•
Fine-Tuning (FT): Trường hợp này mô hình cần hàng nghìn đến hàng trăm
nghìn mẫu dữ liệu có dán nhãn để điều chỉnh trọng số (weight) trước khi
đi vào thực tế sử dụng.
•
Few-Shot (FS): Trường hợp này mô hình cần K mẫu demo nhưng không được
phép điều chỉnh trọng số. K nằm trong khoảng 10-100. K mẫu này dùng để làm
gì? Chỉ là để cho máy “nhận dạng tác vụ”!
•
One-Shot (1S): Tương tự như Few-Shot nhưng trong trường hợp này, máy chỉ
cần 1 mẫu để “nhận dạng tác vụ”.
•
Zero-Shot (0S): Không cần mẫu demo mà vẫn biết được tác vụ! Trường hợp
này dễ bị hiểu nhầm là “máy tự động hiểu”. Không phải vậy, thưa anh/chị. Thực
chất, mô hình vẫn cần một mẫu nhưng mẫu này được ẩn đi bằng một câu lệnh. Ví dụ
về câu lệnh: “Dịch tiếng Anh ra tiếng Pháp:”
-
Khi thiết kế
PE, người ta cũng tận dụng kỹ thuật này. Một cách nôm na là chúng ta làm mẫu
cho máy hiểu trước khi đặt câu hỏi. Zero-Shot tương ứng với trường hợp
không cần làm mẫu máy vẫn hiểu. Few-Shot tương ứng với trường hợp chúng
ta cấp một số mẫu cho máy hiểu:
Mẫu
1: Input_1 suy ra
output_1
Mẫu
2: input_2 suy ra
output 2
…
Mẫu
k: input_k suy ra
output_k
Câu
hỏi: input x thì output là gì?
Lưu ý: ChatGPT đã được huấn
luyện với rất nhiều mẫu (demo) nên trong phần lớn các trường hợp chúng ta không
cần cấp mẫu (demo) mà máy vẫn hiểu.
Hãy lấy 1 ví dụ:
Prompt:
Trong văn bản dưới đây bạn đọc phần “Văn
bản” và trả lời bằng cảm nhận “Thật thà” hoặc “Chém gió”. Tôi sẽ đưa cho bạn
vài mẫu, sau đó bạn trả lời theo mẫu này.
```
Văn bản: Người làm được nhiều việc nhưng
nói chỉ làm được vài việc.
Cảm nhận: Thật thà.
Văn bản: Người làm được vài việc nhưng
nói làm được rất nhiều việc.
Cảm nhận: Chém gió.
```
Văn bản: Người viết một cuốn sách nhưng
nói viết được rất nhiều sách.
Cảm nhận:
Response:
Cảm nhận: Chém gió.
-
ⓓ. Chuỗi suy luận (Chain-of-Thought Prompting)
Ý tưởng này xuất
phát từ bài báo của nhóm Brain Team của Google vào
tháng 1/2022 (chỉnh sửa vào tháng 1/2023). Đại ý của Chain-of-Thought
(CoT) là người ta tách Prompt dài và phức hợp thành các bước trung gian
(chia nhỏ thành từng bước một). Cách mà người ta thực hiện là làm mẫu một vài
bài toán phức hợp trước khi yêu cầu giải một bài toán nào đó:
Bài
toán 1: Đầu đề bài 1 (dạng
phức hợp)
Cách
giải: Chia thành từng bước nhỏ
Bài
toán 2: Đầu đề bài 2 (dạng
phức hợp)
Cách
giải: Chia thành từng bước nhỏ
…
Bài
toán cần giải: Đầu đề (dạng phức hợp).
Cách
giải:
Tương tự như
trường hợp Few-Shot Prompting, LLM có biệt tài bắt chước mẫu và giải bài
toán theo từng bước như mẫu. Đây là một điểm rất thú vị và có phần bí ẩn của
LLM.
Lưu ý: ChatGPT (kể cả Bing Chat và một số các chatbot khác) đã
tích hợp ý tưởng của bài báo trên vào mô hình. Vì vậy, trong phần lớn các trường
hợp, chúng ta có thể hỏi trực tiếp mà không cần làm mẫu. Trong phần trả lời,
các LLM thường biết tự chia bài toán thành các bước nhỏ và trả lời một cách
logic theo các bước chia đó.
Trước hết, CoT
được áp dụng để giải toán (giải các bài toán chữ). Người ta kỳ vọng, thông qua
CoT, LLM có thể lý luận (reasoning), lý luận thường thức (commonsense
reasoning), suy diễn bằng ký hiệu (symbolic reasoning).
Để hình dung
LLM hồi đáp như thế nào, tôi xin lấy ví dụ một Prompt về toán, mời
anh/chị xem cách giải của ChatGPT và Bing Chat như thế nào:
Prompt:
Câu hỏi: Jack là một cầu thủ bóng đá. Anh
ấy cần mua hai đôi tất và một đôi giày bóng đá. Mỗi đôi tất có giá 9,5 đô la và
đôi giày có giá 92 đô la. Jack có 40 đô la. Jack cần thêm bao nhiêu tiền nữa?
Trả lời:
Response (ChatGPT)
Để xác định Jack cần thêm bao nhiêu tiền,
chúng ta cần tính tổng số tiền của cả đôi tất và đôi giày bóng đá.
Hai đôi tất có giá $9,5 mỗi đôi, vậy tổng
chi phí của đôi tất là 2 * $9,5 = $19.
Đôi giày bóng đá có giá $92.
Do đó, tổng chi phí của đôi tất và đôi
giày bóng đá là $19 + $92 = $111.
Vì Jack đã có $40, chúng ta trừ số tiền
đó từ tổng chi phí để tìm ra Jack cần thêm bao nhiêu tiền:
Số tiền Jack cần = Tổng chi phí - Số tiền
Jack đã có
Số tiền Jack cần = $111 - $40 = $71.
Vậy, Jack cần thêm $71 nữa.
Response (Bing Chat)
Để giải bài toán này, chúng ta có thể làm
theo các bước sau:
·
Đặt ẩn. Gọi số tiền Jack cần thêm là x
(đơn vị đô la).
·
Lập phương trình. Tổng chi phí của hai
đôi tất và một đôi giày là 2×9.5+92. Jack có 40 đô la, nên anh ấy cần thêm x đô
la để mua chúng. Ta có: 2×9.5+92=40+x
·
Giải phương trình. Rút gọn và tách x:
19+92=40+x 111=40+x 111−40=x 71=x
·
Kiểm tra kết quả. Thay x=71 vào phương
trình và xem có hợp lý không: 2×9.5+92=40+71 19+92=111 111=111
Kết quả đúng, vậy Jack cần thêm 71 đô la
để mua hai đôi tất và một đôi giày.
▼ Bàn thêm về CoT
CoT
là một hướng nghiên cứu đặc biệt hấp dẫn vì nó khai thác khả năng suy luận của
LLM. Xin phép lược qua một số bài nghiên cứu theo hướng này.
►
Tự nhất quán bằng đa số phiếu (Self-Consistency): “Self-Consistency” là cách tiếp
cận chỉ cần hỏi LLM cùng một câu hỏi nhiều lần và lấy hồi đáp đa số phiếu làm
đáp án cuối cùng. Ví dụ, chúng ta xét xem một vấn đề nào đó “quan trọng” hay
“không quan trọng”. Giải pháp là chia vấn đề đó thành các vấn đề nhỏ và xem các
vấn đề nhỏ đó “quan trọng” hay “không quan trọng”. Chẳng hạn, vấn đề lớn được
chia thành 3 vấn đề nhỏ. Trong 3 vấn đề nhỏ đó thì có 2 vấn đề “quan trọng” và
một vấn đề “không quan trọng”. Kết luận: vấn đề lớn “quan trọng” vì có số phiếu
“quan trọng” là 2 trong lúc số phiếu “không quan trọng” chỉ 1.
Mời
anh/chị tham khảo ví dụ trong Phụ lục ②.
-
►
Thiết kế PE bằng tạo kiến thức trung gian (Generated
Knowledge Prompting).
Ý tưởng của phương pháp này nhằm giải đáp các câu hỏi liên quan đến hiểu biết
thường thức – vốn vẫn là điểm yếu của LLM. Ví dụ, nếu chúng ta đặt câu hỏi “Ai
sống lâu hơn, Albert Einstein hay Charlie Chaplin?” thì bắt buộc LLM phải tìm
hiểu xem Albert Einstein sinh và mất năm nào, rồi Charlie Chaplin sinh và mất
năm nào, sau đó so sánh tuổi thọ của họ mới biết ai sống lâu hơn. Phần “Albert
Einstein sinh và mất năm nào”, “Charlie Chaplin sinh và mất năm nào” được gọi
là hiểu biết thường thức (commonsense). Giải pháp thiết kế PE cho dạng
này là chúng ta đặt các câu hỏi để LLM tạo kiến thức trung gian, sau đó đặt câu
hỏi tổng hợp dựa trên các kiến thức trung gian vừa tạo ra.
Mời
anh/chị tham khảo ví dụ trong Phụ lục ③.
-
►
Chia vấn đề phức tạp thành vấn đề đơn giản (Least-to-Most
Prompting). Ý tưởng của phương pháp này là
chia vấn đề khó thành 2 giai đoạn. Giai đoạn 1 là chia
vấn đề khó thành một chuỗi các vấn đề dễ. Tiếp đó, giải các vấn đề dễ theo
tuần tự: cái sau dựa vào kết quả của cái trước. Ví dụ, “bé An mất 4 phút để leo
lên đỉnh cầu trượt. Phải mất 1 phút để trượt xuống. Đường trượt nước đóng cửa
sau 15 phút. Hỏi: bé An có thể trượt bao nhiêu lần trước khi cầu trượt đóng cửa?”.
Để
giải vấn đề này chúng ta đầu tiên hỏi “Mỗi một lần trượt mất bao lâu?”. Sau khi
LLM tìm ra thời gian cho mỗi một lần trượt, chúng ta hỏi tiếp “Vậy bé An có thể
trượt bao nhiêu lần trước khi cầu trượt đóng cửa?”. Đến lúc này, LLM vận dụng kết
quả của câu hỏi trước để tìm ra đáp án của bài toán.
Mời
anh/chị tham khảo ví dụ này trong Phụ lục ④.
-
►
Phối hợp tương tác “lý luận” và “hành động” (ReAct). Quay trở lại với ví dụ về câu hỏi “Ai
sống lâu hơn, Albert Einstein hay Charlie Chaplin?”. Logic thông thường khi trả
lời câu hỏi này là trước hết chúng ta đi tìm lý lịch của Albert Einstein, của Charlie
Chaplin, tính tuổi thọ bằng cách lấy ngày mất trừ đi ngày sinh của từng người rồi
so sánh tuổi thọ của họ, từ đó biết đáp án ai sống thọ hơn. Có thể tổng quát
hóa phương thức này là xây dựng một framework đan xen chuỗi “lý luận”
(tính tuổi thọ từng người, so sánh tuổi thọ) với “hành động” (tìm lý lịch).
Trong bài báo, người ta gán “hành động” bằng việc tìm kiếm kết quả trên trang
Wikipedia. Chúng ta có thể hiểu một cách nôm na: ReAct = CoT + tìm kiếm trên
Wikipedia.
Tôi
có cảm giác (không chắc chắn) ChatGPT chưa sử dụng framework này trong lúc Bing
Chat gán “hành động” bằng công cụ Search của họ (Search nói chung, không chỉ
Search trên Wikipedia).
-
►
Gần đây, vào ngày 17/5/2023, có một đề
xuất về cây suy luận (Tree
of Thoughts) để giải các vấn đề đa nghiệm. Đại ý là xuất phát một đề bài (gốc
cây) có thể có nhiều chuỗi suy luận (nhiều lối đi – tương ứng với các cành và
nút của cây) cho kết quả đúng. Ví dụ:
·
24
game: cho 4 con số (ví dụ 4, 9, 10, 13), hãy tạo một biểu thức số học gồm các
phép tính cộng, trừ, nhân, chia sao cho kết quả ra bằng 24.
·
Trò
chơi ô chữ (Crosswords)
-
►
Gần đây nhất, vào ngày 31/5/20123, OpenAI đề
xuất một phương thức huấn
luyện CoT: giám sát quy trình (process supervision) thay cho giám sát kết
quả (outcome supervision). Đại ý là quy trình suy luận quan trọng hơn kết
quả: cùng đạt một kết quả nhưng khi huấn luyện mô hình người ta chọn quy trình
suy luận tối ưu. Rõ ràng đây là một ý tưởng đầy tham vọng: LLM không những có
khả năng suy luận mà còn có khả năng suy luận một cách tối ưu.
-
▲ Bàn thêm
-
Ⓓ. Suy ngẫm chậm
(là ‘System 2’
trong “Thinking, Fast and Slow”).
Tôi có cảm nhận
rằng PE đang ở giai đoạn phôi thai. Nếu chúng ta coi LLM là cơ sở dữ liệu tri
thức của nhân loại đặc tả bởi văn bản viết thì chúng phải cần có một ngôn ngữ
“truy vấn” LLM tương tự như SQL. Truy vấn LLM chia thành 2 phân loại cơ bản:
·
Loại
truy vấn thay đổi tham số (parameters) của mô hình, ví dụ như Fine-tuning.
·
Loại
truy vấn không thay đổi tham số của mô hình, ví dụ như LLM Settings, Zero-Shot
Prompting, Few-Shot Prompting, Chain-of-Thought Prompting.
-
Tôi tưởng tượng
ngôn ngữ truy vấn LLM được chuẩn hóa, các LLM hiện đang tồn tại hoặc sẽ xuất hiện
trong tương lai, bắt buộc phải tuân theo chuẩn truy vấn đó. Việc của các ICT-VNers
lúc đấy là module hóa các LLM thành “trợ giảng mẫu giáo”, “trợ giảng tiểu
học”, “trợ giảng lập trình”, “bác sỹ bên bạn”, “trợ lý kinh doanh”, “trợ lý tiếp
thị”, “Ghostwriter ảo”, …😊
-
Để kết thúc bài
post, tôi có nhờ ChatGPT và Bing Chat viết một truyện viễn tưởng khoảng 200 từ
về một chàng trai có tên là Thạch Sanh có khả năng cung cấp thực phẩm miễn phí
cho toàn bộ người nghèo ở Việt Nam. Mời anh/chị tham khảo Phụ lục ⑤.
Sau đó tôi lại
nhờ phần mềm DALL·E vẽ một bức tranh sơn dầu về Thạch Sanh. Thưa anh/chị, mọi
thứ trong Machine Learning đều là cách tiếp cận gần đúng mà … Chỉ là để
anh/chị nhác mắt thoảng qua lúc nhâm nhi cà phê thôi. 😊
---
Ⓔ. Phụ lục
-
Phụ lục ①
▼ Giải thích khái niệm Temperature, Top_K, Top_P
►
Temperature (T):
Trong
bài toán phân loại, ngay trước lớp đầu ra cuối cùng, mạng nơ-ron (Neural
Network) phát sinh một véc-tơ logit z = (z1, z2,
…, zn). Véc-tơ này được chuẩn hóa (hàm softmax) bằng cách
tạo ra các giá trị xác suất qi tương ứng:
Trong công thức trên, T ký hiệu của Temperature (nhiệt độ), giá trị mặc định là 1.
Nhìn
vào công thức, chú ý rằng giá trị của các qi nằm giữa 0 và 1
và tổng của chúng (∑qi) luôn luôn bằng 1.
Tham
số T có ý nghĩa gì? Nếu T giảm thì biểu thức exp
(zi/T) tăng – các giá trị lớn nhỏ của qi
tách bạch hơn (sharp distribution). Lúc này, các giá trị qi
bé ít có cơ hội được chọn. Nếu T tăng thì biểu thức exp (zi/T)
giảm – các giá trị lớn nhỏ của qi sát nhau hơn (flat
distribution). Lúc này, các giá trị qi bé có nhiều cơ hội
được chọn.
Trường
hợp T = 0. Trường hợp này không áp dụng được công thức trên vì zi/T
= ∞. Lúc này véc-tơ logit z = (z1, z2, …, zn)
trở thành one-hot encoded. Nghĩa là chỉ có một thành phần bằng 1 (tương ứng
với xác suất cao nhất), còn lại đều bị gán bằng 0. Đây là trường hợp đầu ra deterministic
(xác định duy nhất một giá trị), tính ngẫu nhiên (randomness) của nó
không còn.
Tham
khảo thêm ở đây (ý tưởng đầu tiên xem ở đây).
-
►
Top_K:
Năm
2018, bài báo “Hierarchical NeuralStory Generation” đề xuất cách lấy mẫu bằng cách sắp xếp
các giá trị qi từ cao xuống thấp, chọn K giá trị đầu tiên (q1,
… qK) và áp dụng hàm softmax cho K giá trị đã chọn.
Vì
sao họ đề xuất phương pháp này? Chú ý rằng người ta chọn “từ tiếp theo” lấy 1
trong hàng trăm nghìn từ (số lượng từ trong một từ điển). Phần lớn các giá trị qi
vì vậy “nhỏ li ti”, rất khó phân biệt. Bằng cách chỉ chọn K “từ” trong số hàng
trăm nghìn từ rồi tái phân bố theo hàm softmax thì các giá trị qi
được tách bạch một cách rõ ràng hơn.
Nguyên
tắc đặt giá trị K: K nhỏ
tương ứng với độ chính xác cao. K lớn tương ứng với hồi đáp kém chính xác nhưng
có tính phóng tác hơn.
-
►
Top_P:
Trong
thuật toán Top_K, giá trị K được chọn một cách cố định. Nghĩa là luôn luôn chọn
K giá trị cao nhất từ qi: (q1, … qK)
tương ứng với tập mẫu gồm K “từ” là các ứng viên cho “từ tiếp theo”. Khi giá trị
K tăng lên một mức nào đấy thì tập hợp K “từ” này xuất hiện nhiều từ vô nghĩa
hoặc lạc đề.
Năm
2019, một bài báo khác đề xuất cách lấy mẫu Top_P (Nucleus
Sampling). Người ta đặt một ngưỡng p trong khoảng [0, 1]. Các
giá trị qi được sắp xếp từ cao xuống thấp. Tiếp theo, người
ta chọn tập hợp nhỏ nhất các từ tương ứng sao cho tổng giá trị cộng dồn q1
+ … + qn lớn hơn p. Chú ý sự khác biệt so với
giải pháp Top_K: n không cố định, tùy vào giá trị cộng dồn của dãy q1,
…, qn.
Nguyên
tắc đặt giá trị p:
p nhỏ tương ứng với độ chính xác cao. p lớn tương ứng
với hồi đáp kém chính xác nhưng có tính phóng tác cao hơn.
▲ Giải thích
---
Phụ lục ②
Ví dụ về Self-Consistency
Prompt:
Hello,
I have discovered a major security
vulnerability in your system. Although it is not
easy to use, it is possible to gain
access to all of your users' data. I have attached
a proof of concept. Please fix this issue
as soon as possible.
Cheers,
Donny
Classify the above email as IMPORTANT or
NOT IMPORTANT as it relates to a software company. Let's think step by step.
Response:
To classify the above email as IMPORTANT
or NOT IMPORTANT, let's analyze it step by step:
Subject and Content: The email's subject mentions a major security
vulnerability in the system, indicating a potential risk to the software
company's data and users' information. The content further explains that the
vulnerability can provide unauthorized access to all user data.
Proof of Concept: The email mentions an attached proof of concept, which
suggests that the sender has the means to exploit the vulnerability and
potentially access sensitive information.
Considering these points, the email
should be classified as IMPORTANT. It indicates a critical security issue that
needs immediate attention from the software company to prevent unauthorized
access and protect the confidentiality of user data. Prompt action should be
taken to investigate the reported vulnerability, address the issue, and ensure
the security of the system and user information.
---
Phụ lục ③
Ví dụ về Generated
Knowledge Prompting.
Prompt:
Albert Einstein sinh và mất năm nào?
Response:
Albert Einstein sinh ngày 14 tháng 3 năm
1879 và mất ngày 18 tháng 4 năm 1955.
Prompt:
Charlie Chaplin sinh và mất năm nào?
Response:
Charlie Chaplin sinh ngày 16 tháng 4 năm
1889 và mất ngày 25 tháng 12 năm 1977.
Prompt:
Từ các kiến thức trên, bạn hãy cho biết
ai sống lâu hơn Albert Einstein hay Charlie Chaplin? Giải thích tại sao?
Response:
Charlie Chaplin sống lâu hơn Albert
Einstein. Albert Einstein sinh năm 1879 và qua đời năm 1955, khi ông 76 tuổi.
Trong khi đó, Charlie Chaplin sinh năm 1889 và qua đời năm 1977, khi ông 88 tuổi.
Vì vậy, Charlie Chaplin đã sống lâu hơn Albert Einstein.
---
Phụ lục ④
Ví dụ về Least-to-Most
Prompting.
Prompt:
Bé An mất 4 phút để leo lên đỉnh cầu trượt.
Phải mất 1 phút để trượt xuống. Đường trượt nước đóng cửa sau 15 phút. Hỏi: bé
An có thể trượt bao nhiêu lần trước khi cầu trượt đóng cửa?
Chia vấn đề khó
thành một chuỗi các vấn đề dễ:
Prompt:
Bé An mất 4 phút để leo lên đỉnh cầu trượt.
Phải mất 1 phút để trượt xuống. Đường trượt nước đóng cửa sau 15 phút. Mỗi một
lần trượt mất bao lâu?
Response:
Mỗi lần trượt, Bé An mất tổng cộng thời
gian để leo lên và trượt xuống. Theo thông tin cho trước, Bé An mất 4 phút để
leo lên và 1 phút để trượt xuống. Vì vậy, thời gian mỗi lần trượt của Bé An là
tổng của hai thời gian này:
Thời gian mỗi lần trượt = Thời gian leo
lên + Thời gian trượt xuống
= 4 phút + 1 phút
= 5 phút
Vậy, mỗi lần trượt của Bé An mất 5 phút.
Prompt:
Vậy bé An có thể trượt bao nhiêu lần trước
khi cầu trượt đóng cửa?
Response:
Đường trượt nước đóng cửa sau 15 phút và
mỗi lần trượt của Bé An mất 5 phút. Để tìm số lần trượt tối đa, ta chia tổng thời
gian hoạt động của đường trượt cho thời gian mỗi lần trượt:
Số lần trượt tối đa = Thời gian hoạt động
/ Thời gian mỗi lần trượt
= 15 phút / 5 phút
= 3 lần
Vậy, Bé An có thể trượt tối đa 3 lần trước
khi cầu trượt đóng cửa.
Phụ lục ⑤
Prompt:
/set_options top_p=0.8. Hãy viết một truyện
viễn tưởng khoảng 200 từ về một chàng trai có tên là Thạch Sanh có khả năng
cung cấp thực phẩm miễn phí cho toàn bộ người nghèo ở Việt Nam.
Response (ChatGPT):
Từng có một chàng trai tên là Thạch Sanh
sống trong một ngôi làng nhỏ ở Việt Nam. Anh là một người đầy tình yêu thương
và luôn mong muốn giúp đỡ những người nghèo khó xung quanh mình.
Thạch Sanh không hề có tài sản hay quyền
lực, nhưng anh lại có một khả năng đặc biệt. Anh có thể tạo ra thực phẩm từ
không gian hư vô, miễn phí và không hạn chế số lượng. Khi Thạch Sanh đặt tay
lên một miếng đất khô cằn, nó biến thành những trái cây tươi ngon. Khi anh vuốt
nhẹ trên một vịt con đói khát, nó trở thành một con gà nướng hấp dẫn.
Nghe tin về sức mạnh đặc biệt của Thạch
Sanh, người dân trong làng đến từ khắp nơi để được nhận những món quà miễn phí.
Các gia đình nghèo không còn lo lắng về việc tìm kiếm thức ăn hàng ngày. Bữa ăn
no nê và tươi ngon trở thành một phần của cuộc sống hằng ngày của họ.
Tin tức về Thạch Sanh và khả năng của anh
lan rộng khắp Việt Nam. Chính quyền và các tổ chức từ thiện đến tìm Thạch Sanh,
muốn hợp tác để giải quyết vấn đề đói nghèo trong xã hội.
Thạch Sanh từ chối sự đề nghị của họ. Anh
cho rằng thực phẩm không nên là một mặt hàng thương mại, mà nó phải là một quyền
cơ bản của mọi người. Thay vào đó, anh quyết định chia sẻ bí quyết của mình với
mọi người, khuyến khích mọi người tự sản xuất và chia sẻ thực phẩm cho nhau.
Với sự hướng dẫn và truyền cảm hứng từ Thạch
Sanh, cộng đồng nhanh chóng thay đổi. Mọi người trồng cây, nuôi động vật và
chia sẻ sản phẩm của mình với nhau. Ông bà, cha mẹ và con cái cùng nhau làm việc
trong vườn nhà, mang lại một tương lai tươi sáng cho tất cả.
Cuộc sống của mọi người thay đổi hoàn
toàn. Sự đói nghèo và khó khăn dần dần biến mất. Việc cung cấp thực phẩm không
còn phụ thuộc vào một người duy nhất, mà trở thành trách nhiệm chung của cộng đồng.
Thạch Sanh đã mang lại hy vọng và niềm
vui cho hàng triệu người nghèo ở Việt Nam. Sức mạnh đặc biệt của anh không chỉ
làm thay đổi cuộc sống của mọi người, mà còn truyền cảm hứng để cùng nhau xây dựng
một xã hội tốt đẹp hơn, nơi mà tất cả mọi người được sống trong sự công bằng và
hòa bình.
Response (Bing Chat):
Đây là một truyện viễn tưởng mà tôi đã viết
cho bạn. Tôi hy vọng bạn thích nó.😊
Thạch Sanh là một chàng trai nghèo ở miền
Tây sông nước. Anh ta có một khả năng đặc biệt: anh ta có thể biến bất kỳ vật
gì anh ta chạm vào thành thực phẩm ngon miệng. Anh ta không biết nguồn gốc của
khả năng này, nhưng anh ta luôn sử dụng nó để giúp đỡ những người xung quanh.
Một ngày nọ, anh ta được mời tham gia một
chương trình truyền hình thực tế có tên là “Thạch Sanh và những người bạn”.
Chương trình này nhằm mục đích giới thiệu khả năng của anh ta cho cả nước và tạo
ra một cuộc thi để tìm ra những người bạn có thể hợp tác với anh ta để cung cấp
thực phẩm miễn phí cho toàn bộ người nghèo ở Việt Nam.
Thạch Sanh rất hào hứng với cơ hội này.
Anh ta quyết định tham gia chương trình và gặp gỡ những người bạn mới. Trong số
đó, có một cô gái xinh đẹp tên là Lý Tinh, có khả năng biến nước thành rượu. Cô
ấy là một nhà từ thiện nổi tiếng và luôn muốn giúp đỡ người khác.
Hai người họ nhanh chóng trở thành bạn
thân và cùng nhau thực hiện những nhiệm vụ khó khăn nhưng ý nghĩa. Họ cùng nhau
biến những vật liệu rẻ tiền thành những món ăn hấp dẫn và phân phát cho những
người cần thiết. Họ cũng cùng nhau vượt qua những thử thách và khó khăn từ những
kẻ ganh ghét và đố kị.
Cuối cùng, họ giành được chiến thắng
trong chương trình và được công nhận là những người bạn tuyệt vời của Thạch
Sanh. Họ quyết định tiếp tục sứ mệnh của mình và thành lập một tổ chức phi lợi
nhuận có tên là “Thạch Sanh và Lý Tinh”. Tổ chức này nhằm mục đích cung cấp thực
phẩm miễn phí cho toàn bộ người nghèo ở Việt Nam và lan tỏa thông điệp về sự
bao dung và nhân ái.
Thạch Sanh và Lý Tinh không chỉ là những
người bạn, mà còn là những người yêu nhau. Họ sống hạnh phúc bên nhau và luôn
mang lại niềm vui cho người khác.
Kết thúc.
---
Không có nhận xét nào:
Đăng nhận xét