Prompt engineering

การกระตุ้นเชิงอุปมาและย้อนกลับ: การสำรวจความก้าวหน้าล่าสุดโดย Google DeepMind

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google
Google DeepMind Prompt Engineering new Research

บทนำ

วิศวกรรมพรอมป์ต์คือการออกแบบคำสั่งที่มีประสิทธิภาพเพื่อให้โมเดลภาษาขนาดใหญ่ เช่น GPT-4 สร้างคำตอบตามต้องการ คำสั่งที่ดีอาจเป็นสิ่งที่แยกคำตอบคลุมเครือหรือผิดพลาดออกจากคำตอบที่แม่นยำและให้ข้อมูลเชิงลึก

นี่เป็นหนึ่งในหลายวิธีที่ใช้ดึงข้อมูลที่ถูกต้องและตรงบริบทจากโมเดลภาษา วิธีอื่นมีการเรียนรู้จากตัวอย่างจำนวนน้อย (few-shot learning) เพื่อให้เข้าใจงาน และการปรับจูนโมเดลเพิ่มเติมบนชุดข้อมูลเล็กเพื่อให้ตอบได้เฉพาะทางขึ้น

Google DeepMind (GOOGL ) เผยแพร่งานวิจัยสองฉบับเกี่ยวกับศักยภาพของวิศวกรรมพรอมป์ต์ในการปรับปรุงคำตอบในสถานการณ์ต่าง ๆ

งานเหล่านี้เป็นส่วนหนึ่งของการศึกษาต่อเนื่องในชุมชน AI เพื่อปรับปรุงการสื่อสารกับโมเดลภาษา โดยให้แนวคิดใหม่ในการวางโครงสร้างคำสั่งเพื่อจัดการคำถามและโต้ตอบฐานข้อมูลได้ดีขึ้น บทความนี้อธิบายแนวคิด วิธีการ และผลของเทคนิคดังกล่าวให้ผู้อ่านที่มีพื้นฐาน AI และ NLP จำกัดเข้าใจได้

งานวิจัยที่ 1: Large Language Models as Analogical Reasoners

งานของ Michihiro Yasunaga, Xinyun Chen และคณะเสนอ Analogical Prompting หรือการสั่งงานด้วยการให้เหตุผลเชิงเปรียบเทียบ ได้แรงบันดาลใจจากวิธีที่มนุษย์ใช้ประสบการณ์เดิมแก้ปัญหาใหม่

แนวคิดและวิธีการหลัก

ให้โมเดลสร้างตัวอย่างหรือความรู้ที่เกี่ยวข้องกับบริบทด้วยตนเองก่อนแก้ปัญหา จึงไม่ต้องเตรียมตัวอย่างที่มีคำตอบกำกับไว้ล่วงหน้า ใช้งานสะดวกและปรับตัวอย่างให้ตรงกับแต่ละปัญหาได้

Left: Traditional methods of prompting LLMs rely on generic inputs (0-shot CoT) or necessitate labeled examples (few-shot CoT). Right: The novel approach prompts LLMs to self-create relevant examples prior to problem-solving, removing the need for labeling while customizing examples to each unique problem

ซ้าย: วิธีเดิมใช้คำสั่งทั่วไปแบบ0-shotCoT หรือตัวอย่างที่กำกับคำตอบแบบfew-shotCoT ขวา: วิธีใหม่ให้โมเดลสร้างตัวอย่างที่เกี่ยวข้องเองก่อนแก้โจทย์ ไม่ต้องกำกับคำตอบและปรับตามปัญหาแต่ละข้อ

ตัวอย่างที่โมเดลสร้างเอง

เทคนิคแรกใช้ความรู้จำนวนมากที่โมเดลได้รับระหว่างการฝึกเพื่อแก้ปัญหาใหม่ โดยเพิ่มคำแนะนำให้ระลึกหรือสร้างโจทย์และวิธีแก้ที่เกี่ยวข้องกับโจทย์เป้าหมาย

เช่น ให้โมเดลนึกถึงโจทย์ที่เกี่ยวข้องแต่แตกต่างกันสามข้อ อธิบายโจทย์และวิธีแก้ แล้วแก้โจทย์ตั้งต้นทั้งหมดในรอบเดียว สัญลักษณ์ ‘#’ ในพรอมป์ต์ช่วยจัดโครงสร้างคำตอบให้เป็นระเบียบและทำตามง่าย

ประเด็นทางเทคนิคสำคัญคือควรสร้างตัวอย่างที่เกี่ยวข้องและหลากหลาย ใช้ขั้นตอนรอบเดียวเพื่อความสะดวก และพบว่าการสร้างสามถึงห้าตัวอย่างให้ผลดีที่สุด

ความรู้และตัวอย่างที่โมเดลสร้างเอง

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

ลำดับมีความสำคัญ: การสร้างความรู้ก่อนสร้างตัวอย่างให้ผลดีกว่า เพราะช่วยให้โมเดลสนใจวิธีแก้ปัญหาพื้นฐาน แทนความคล้ายคลึงที่ผิวเผิน

ข้อดีและการประยุกต์ใช้

แนวทางนี้ให้ตัวอย่างการให้เหตุผลอย่างละเอียดโดยไม่ต้องกำกับคำตอบด้วยมือ ลดปัญหาของวิธี chain-of-thought (CoT) แบบไม่มีตัวอย่างและแบบมีตัวอย่างจำนวนน้อย ตัวอย่างที่สร้างยังปรับตามปัญหาเฉพาะ จึงเกี่ยวข้องกว่าวิธี few-shot CoT ที่ใช้ชุดตัวอย่างตายตัว

งานวิจัยแสดงผลในโจทย์คณิตศาสตร์ การสร้างโค้ด และงานให้เหตุผลใน BIG-Bench ตารางต่อไปเปรียบเทียบวิธีสั่งงานในโมเดลต่าง ๆ วิธี “Self-generated Exemplars” ทำคะแนนความแม่นยำสูง โดย GSM8K ได้ 81.7% บน PaLM2 และ MATH ได้ 37.3% บน GPT3.5-turbo

Performance on mathematical tasks, GSM8K and MATH

ผลการทำงานในโจทย์คณิตศาสตร์ GSM8K และ MATH

ตารางที่สองแสดงว่า “Self-generated Knowledge + Exemplars” ให้ผลดีที่สุดบน GPT3.5-turbo-16k และ GPT4

Performance on Codeforces code generation task

ผลการสร้างโค้ดใน Codeforces

งานวิจัยที่ 2: Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models

ภาพรวม

งาน Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models ของ Huaixiu Steven Zheng, Swaroop Mishra และคณะ เสนอ Step-Back Prompting ซึ่งให้โมเดลถอยกลับมาสกัดแนวคิดระดับสูงและหลักการพื้นฐานจากรายละเอียด ก่อนใช้หลักการนั้นนำทางการให้เหตุผลไปสู่คำตอบ

 Depicting STEP-BACK PROMPTING through two phases of Abstraction and Reasoning, steered by key concepts and principles.

Step-Back Prompting มีสองระยะ: สกัดแนวคิดนามธรรมและให้เหตุผล โดยใช้แนวคิดและหลักการสำคัญ

ตัวอย่างคณิตศาสตร์ง่าย ๆ ต่อไปนี้สาธิตคำถามแบบถอยกลับหนึ่งขั้น:

คำถามเดิม: รถไฟวิ่งด้วยความเร็ว 60 กิโลเมตรต่อชั่วโมง และเดินทาง 120 กิโลเมตร จะใช้เวลาเท่าใด?

  1. 3 ชั่วโมง
  2. 2 ชั่วโมง
  3. 1 ชั่วโมง
  4. 4 ชั่วโมง

คำตอบตั้งต้นที่ผิด: คำตอบที่ถูกคือข้อ 1

คำถามถอยกลับ: สูตรพื้นฐานในการหาเวลาเมื่อทราบความเร็วและระยะทางคืออะไร?

หลักการ: เวลา = ระยะทาง ÷ ความเร็ว

คำตอบสุดท้าย: เวลา = 120 กิโลเมตร ÷ 60 กิโลเมตรต่อชั่วโมง = 2 ชั่วโมง ดังนั้นคำตอบคือข้อ 2

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

STEP-BACK PROMPTING on MMLU-Chemistry dataset

Step-Back Prompting บนชุดข้อมูล MMLU-Chemistry

แนวคิดและวิธีการหลัก

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

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

ผู้วิจัยทดลองกับ PaLM-2L ในงานให้เหตุผลที่ท้าทาย ได้แก่ โจทย์ STEM การตอบคำถามความรู้ และการให้เหตุผลหลายทอด เพื่อประเมินเทคนิคอย่างครอบคลุม

การปรับปรุงที่สำคัญในหลายงาน

Step-Back Prompting ทำให้ผลการทำงานดีขึ้นอย่างมาก โดย PaLM-2L ทำคะแนนใน MMLU ฟิสิกส์และเคมีดีขึ้น 7% และ 11% ตามลำดับ ใน TimeQA ดีขึ้น 27% และ MuSiQue ดีขึ้น 7%

Performance of STEP-BACK PROMPTING

ผลของ Step-Back Prompting เทียบกับ CoT

ผลเหล่านี้แสดงศักยภาพของเทคนิคในการเพิ่มความสามารถให้เหตุผลของโมเดลภาษาขนาดใหญ่

สรุป

งานทั้งสองของ Google DeepMind เสนอแนวทางวิศวกรรมพรอมป์ต์เพื่อเพิ่มความสามารถให้เหตุผล Analogical Prompting ให้โมเดลสร้างตัวอย่างและความรู้เองเพื่อแก้ปัญหาอย่างยืดหยุ่นและมีประสิทธิภาพ ส่วน Step-Back Prompting เน้นการสกัดแนวคิดนามธรรมและหลักการระดับสูงเพื่อนำทางการให้เหตุผล

วิธีการและข้อมูลเชิงลึกเหล่านี้นำไปใช้ได้หลายสาขา ช่วยพัฒนาโมเดลภาษาให้ฉลาดและมีความสามารถขึ้น และเป็นก้าวสำคัญของการศึกษาวิศวกรรมพรอมป์ต์เพื่อสร้างระบบ AI ที่ก้าวหน้าและซับซ้อนยิ่งขึ้น

ฉันใช้เวลาที่ผ่านมา 5 ปีในการศึกษาสิ่งที่น่าสนใจเกี่ยวกับ Machine Learning และ Deep Learning ความเชี่ยวชาญและความหลงใหลของฉันทำให้ฉันเข้าร่วมในโครงการพัฒนาซอฟต์แวร์มากกว่า 50 โครงการที่มีความหลากหลาย โดยมุ่งเน้นไปที่ AI/ML ความอยากรู้อยากเห็นของฉันยังทำให้ฉันสนใจในด้าน Natural Language Processing ซึ่งเป็นสาขาที่ฉันต้องการสำรวจต่อไป