Zero-shot และ Few-shot Prompting ต่างกันอย่างไร?

Zero-shot และ Few-shot Prompting ต่างกันอย่างไร?
Photo by Buro Millennial: https://www.pexels.com/photo/selective-focus-photo-of-man-using-laptop-1438081/

ในบทความเกี่ยวกับ Large Langauge Model (LLM) มักพบคำว่า Zero-shot และ Few-shot Prompting ซึ่งเป็นสิ่งสำคัญที่ทำให้เข้าใจว่า LLM สร้าง Output อย่างไร? ใน Blog นี้จะพูดถึง

  • LLM สร้าง Output ได้อย่างไร?
  • Zero-shot Prompting
  • Few-shot Prompting
Photo by Matheus Bertelli: https://www.pexels.com/photo/man-people-woman-hand-16094060/
LLM สร้าง Output ได้อย่างไร?

LLM ถูก Train ด้วยข้อมูลข้อความจำนวนมาก โดยได้รับการ Train ให้คาดเดาคำถัดไปจาก Input หาก Model มีขนาดใหญ่พอ ไม่เพียงแต่สามารถเรียนรู้ไวยากรณ์ของภาษามนุษย์เท่านั้น แต่ยังรวมถึงความหมายของคำ ความรู้ทั่วไป และตรรกะดั้งเดิมด้วย

ดังนั้น หากเราให้ประโยคที่ว่า "My neighbor's dog is" กับ Model (เป็น Input หรือที่เรียกว่า "Prompt") มันอาจทำนายว่า "Smart" หรือ "Small" แต่จะไม่ใช่คำว่า "Sequential" แน่นอน แม้ว่าคำทั้งหมดนี้จะเป็น Adjective ในทำนองเดียวกัน หากเราระบุประโยคที่สมบูรณ์ให้กับ Model เราสามารถคาดหวังที่จะได้ Output อย่างเป็นธรรมชาติ หากมีการใส่ Prompts ซึ่งเชื่อมโยงกับ Input ดั้งเดิมซ้ำๆ กรณีแบบนี้ Model อาจให้ Response ที่ยาวขึ้นได้ (มีประสิทธิภาพ และประโยชน์มากขึ้น)

Zero-shot Prompting

Zero-shot หมายถึง การใส่ Prompt ที่ไม่ได้เป็นส่วนหนึ่งของข้อมูล Train แต่ Model สามารถสร้างผลลัพธ์ที่เราต้องการได้ เทคนิคนี้ทำให้ LLM มีประโยชน์สำหรับงานหลายอย่าง

เช่น กรณีของ Sentiment Analysis  เราสามารถใช้หลายๆ ย่อหน้า (Paragraphs) ที่มีความคิดเห็นต่างกัน และ Label ด้วย Classes ต่างๆ เช่น Positive, Neutral, Negative จากนั้น เรา Train Machine Learning Model (เช่น RNN "Recurrent Neural Network" กับข้อมูลข้อความเหล่านี้) เพื่อรับข้อความ Input และให้ผลลัพธ์การ Classify เป็น Output ซึ่งเราจะพบว่า Model ดังกล่าวไม่สามารถปรับเปลี่ยนได้ หากเราเพิ่ม Class ใหม่ หรืออยากปรับเปลี่ยนจากการ Classify เป็น การสรุปแทน กรณีนี้ Model จะต้องถูก Train ใหม่

ตัวอย่าง Prompt

Classify the text into positive, neutral or negative:
Text: That shot selection was awesome.
Classification:

ผลลัพธ์ (ใช้ ChatGPT)

คำตอบเป็นคำตอบเดียว คือ "Positive" ซึ่งถูกต้องและกระชับ จะเห็นว่า Model สามารถเข้าใจได้ว่า "awesome" เป็นความรู้สึกเชิงบวก แต่การรู้ที่จะระบุความรู้สึกนั้นเป็นเพราะคำแนะนำในตอนต้น "Classify the text into positive, neutral or negative."

จะเห็นได้ว่า Model สามารถ Response ได้ เพราะเข้าใจคำสั่งจากเรา

Few-shot Prompting

หากเราไม่สามารถอธิบายสิ่งที่ต้องการได้ แต่ยังต้องการ LLM หาคำตอบให้ สามารถให้ตัวอย่างบางส่วนได้ ดังนี้

ตัวอย่าง Prompt

Text: Today the weather is fantastic
Classification: Pos
Text: The furniture is small.
Classification: Neu
Text: I don't like your attitude
Classification: Neg
Text: That shot selection was awful
Classification:

ผลลัพธ์ (ใช้ ChatGPT)

เห็นว่าไม่มีคำแนะนำเกี่ยวกับสิ่งที่ต้องทำ แต่ด้วยการให้ตัวอย่างบางส่วน Model สามารถหาคำตอบได้ สังเกตเพิ่มเติมว่า Model ให้คำตอบ คือ  "Neg" แทนที่จะเป็น "Negative" เนื่องจากเป็นตัวอย่างที่เราให้ไว้

หมายเหตุ: เนื่องจาก Model ทำงานแบบ Random ผลลัพธ์ในแต่ละครั้งอาจไม่เหมือนกัน 100% เสมอไป อาจพบ Output ที่แตกต่างกันในแต่ละครั้งที่ Run Model

การให้ Guideline กับ Model ในการหาคำตอบ โดยแสดงตัวอย่างบางส่วน เรียกว่า "Few-shot Prompting"

******

ข้อมูลอ้างอิง - https://machinelearningmastery.com/what-are-zero-shot-prompting-and-few-shot-prompting/