Prompt Engineering จะตีโจทย์ว่าเป็นงานหรือปัญหาบางอย่างที่ต้องการให้โมเดล Machine Learning หรือ LLM มาช่วยหาคำตอบ โจทย์สามารถมีได้หลากหลายตั้งแต่ ตรวจคำผิด คัดแยกอีเมล์สแปม Sentiment Analysis แปลภาษา ไปจนถึงประมวลผลรูปภาพ แยกแยะวัตถุที่อยู่ในภาพ

In-Context Learning example. Credit: https://en.wikipedia.org/wiki/File:B762d388f92f64655cde4915b35c9361.png
In-Context Learning example. Credit: https://en.wikipedia.org/wiki/File:B762d388f92f64655cde4915b35c9361.png

เทคนิค 4 ยกตัวอย่างผลลัพธ์ที่อยากได้

ใน NLP เทคนิค Few-Shot Prompting, Few-Shot Learning หรือ In-Context Learning เป็นเทคนิคที่เราสามารถนำมาใช้เมื่อเราไม่ได้มี ข้อมูล Training Set จำนวนมาก โดยเราจะป้อนข้อมูลตัวอย่างอันน้อยนิดไม่กี่ตัวอย่าง (Shot, Example) เท่าที่เรามี ให้กับโมเดลไปเทรน การใช้เทคนิคนี้มีข้อดี คือ ประหยัด เนื่องจากในการสร้างชุดข้อมูล การ Label ข้อมูลจำนวนมาก ๆ มีต้นทุนค่อนข้างสูง และใช้เวลาค่อนข้างนาน

Example isn’t another way to teach, it is the only way to teach.

Albert Einstein

ด้วยการป้อนตัวอย่างงานที่เสร็จสมบูรณ์ ไปให้ LLM เรียนรู้ เราสามารถเทรนให้มันทำความเข้าใจรูปแบบ Pattern และข้อมูลที่จำเป็นต้องใช้ในการทำงานนั้นให้สำเร็จครบถ้วน

และเมื่อโมเดลได้เห็นตัวอย่างที่หลากหลาย มากขึ้น ๆ มันก็จะเริ่ม Generalize สร้างรูปแบบหลักเกณฑ์ขึ้นมาในใจ เพื่อนำมาประยุกต์กับข้อมูลตัวอย่างใหม่ที่โมเดลไม่เคยเห็นมาก่อน

หมายความว่าถึงแม้เราจะป้อนข้อมูลตัวอย่างให้แค่ ไม่กี่ตัวอย่าง (Few-Shot) เช่น 1-3 ตัวอย่าง โมเดลที่เก่ง ๆ ก็จะสามารถเรียนรู้ และนำ Pattern เหล่านั้นมาสร้างคำตอบที่เหมาะสม ตอบโจทย์ที่แตกต่างกันได้ถูกต้อง

Birthday Cake by Grushetski. Credit: https://commons.wikimedia.org/wiki/File:Birthday_Cake_by_Grushetski.jpg

ยกตัวอย่าง เช่น เวลาจะสั่งเค้กวันเกิด การแต่งหน้าเค้ก เราจะระบุคำสั่ง ขั้นตอนการตกแต่ง โครงสร้าง สีสัน ลวดลาย ส่วนประกอบ วัตถุดิบ ให้ละเอียดแค่ไหนก็ตาม อาจจะไม่เท่าโชว์รูปตัวอย่างของเค้กที่แต่งเสร็จเรียบร้อยแล้ว สัก 2-3 มุม ที่เราหามาจากอินเตอร์เน็ตส่งให้ร้านเค้กดูเป็นตัวอย่าง

The mediocre teacher tells. The good teacher explains. The superior teacher demonstrates. The great teacher inspires.

William Arthur Ward

เทคนิค Few-Shot Prompting นี้ มีประโยชน์ 2 ประการ คือ 1. ประหยัดเวลา และทรัพยากรในการรวบรวมข้อมูล Data Collection และ Labeling ติดฉลากข้อมูล เพราะเราไม่ได้จำเป็นต้องมีข้อมูลตัวอย่างจำนวนมากขนาดนั้น ในการเทรนโมเดล 2. เปิดโอกาสให้โมเดลเรียนรู้งานใหม่อย่างรวดเร็ว ด้วยการใช้ประโยชน์จากความรู้ที่มีอยู่แล้ว และความสามารถในการ Generalize ทำให้โมเดลมีความยืดหยุ่น ปรับตัวได้ง่าย ตอบโจทย์ได้หลากหลาย สามารถนำไปประยุกต์ใช้งานได้ในทุกภาคส่วน

ตัวอย่าง การถามแบบไม่ยกตัวอย่างผลลัพธ์ที่อยากได้ Zero-Shot Prompting

ตัวอย่าง การถามแบบไม่ยกตัวอย่างผลลัพธ์ที่อยากได้ Zero-Shot Prompting
ตัวอย่าง การถามแบบไม่ยกตัวอย่างผลลัพธ์ที่อยากได้ Zero-Shot Prompting
Find max number:
34, 24, 13, 2, 7, 16 

ระบบก็สามารถให้คำตอบที่ถูกต้อง แต่มีคำบรรยายยืดยาว ผลลัพธ์อาจจะไม่ได้อยู่ในรูปแบบที่เราต้องการ

To find the maximum number among the given set of numbers, you simply need to compare them and identify the largest value. In this case, the maximum number among 34, 24, 13, 2, 7, and 16 is 34. Therefore, 34 is the maximum number in the given set.

ตัวอย่าง การถามแบบยกตัวอย่างผลลัพธ์ที่อยากได้ Few-Shot Prompting

ในเคสนี้ สมมติว่าเราอย่างได้ Output เป็น The max is XXX.

ตัวอย่าง การถามแบบยกตัวอย่างผลลัพธ์ที่อยากได้ Few-Shot Prompting
ตัวอย่าง การถามแบบยกตัวอย่างผลลัพธ์ที่อยากได้ Few-Shot Prompting

เราจะลองใส่ใน Prompt ว่าอยากได้ผลลัพธ์เป็น ประโยคเดียวแบบนี้นะ เป็นตัวอย่าง 3 ครั้ง (Few-Shot Prompting) แล้วเว้นอันสุดท้ายไว้ให้โมเดลตอบต่อจากนั้น

Find the max number:

2, 4, 24, 1, 45, 8 
The max is 45.

39, 44, 23, 19, 28 , 8 
The max is 44.

4, 35, 82, 21, 16, 6  
The max is 82.

34, 24, 13, 2, 7, 16 

โมเดลจะตอบออกมา ในรูปแบบตามตัวอย่างที่ให้ไป 3 ตัวอย่างก่อนหน้า

The max is 34.

สรุป Few-Shot Prompting เป็นเทคนิคที่ให้โมเดลสามารถเรียนรู้จากข้อมูลตัวอย่างจำนวนไม่กี่ตัวอย่าง ด้วยการป้อนตัวอย่างงานที่ทำสำเร็จเรียบร้อยแล้ว แม้จะเพียงแค่ตัวอย่างเดียว ให้กับโมเดล เราสามารถประหยัดเวลา เพิ่มประสิทธิภาพในการ Generalize ความรู้ สามารถตอบโจทย์ได้หลากหลายและยืดหยุ่นเกินกว่าที่เราจินตนาการ

หมายเหตุ เราสามารถใช้เครื่องหมาย Colon “:” ช่วยในการแบ่ง คั่น ระหว่าง ลิสต์รายการตัวอย่าง และ คำอธิบาย เช่น name: John หรือ foods: pizza, sandwich, soup, padthai

เรามาเริ่มกันเลยดีกว่า

Open In Colab

Credit

แชร์ให้เพื่อน:

Surapong Kanoktipsatharporn on Linkedin
Surapong Kanoktipsatharporn
CTO at Bua Labs
The ultimate test of your knowledge is your capacity to convey it to another.

Published by Surapong Kanoktipsatharporn

The ultimate test of your knowledge is your capacity to convey it to another.