ตัวอย่างความน่าจะเป็นของบันทึก Azure OpenAI (LogProbs)
แอปพลิเคชันคอนโซล .NET ที่สาธิตสี่ตัวอย่างว่า Azure OpenAI LogProbs มีประโยชน์สำหรับการดึงข้อมูลที่มีคุณภาพได้อย่างไร:
- ความน่าจะเป็นโทเค็นแรก - คำนวณความน่าจะเป็นจริงหรือเท็จ ส่งคืนความน่าจะเป็นสูงสุดว่าโมเดล (LLM) มีข้อมูลเพียงพอที่จะตอบคำถามในข้อความแจ้งหรือไม่
- ความน่าจะเป็นโทเค็นแรก [ด้วยคะแนน Brier] - ความน่าจะเป็นจริงหรือเท็จ ส่งคืนความน่าจะเป็นสูงสุดว่าโมเดล (LLM) มีข้อมูลเพียงพอที่จะตอบคำถามในพรอมต์หรือไม่ คำนวณคะแนน Brier ทั้งรายบุคคลและค่าเฉลี่ยรวมเพื่อวัดความแม่นยำในการพยากรณ์ความน่าจะเป็นของแบบจำลอง (LLM)
- คะแนนความน่าจะเป็นแบบถ่วงน้ำหนักของความเชื่อมั่น - ส่งกลับคะแนนความมั่นใจในตนเองระหว่าง 1-10 ที่ถ่วงน้ำหนักจากการแจกแจงความน่าจะเป็น (ความน่าจะเป็นของบันทึก 5 อันดับแรก) เพื่อให้ค่าประมาณคะแนนความเชื่อมั่นที่ดีขึ้น (ถ่วงน้ำหนัก) เพื่อตอบคำถาม
- ช่วงความเชื่อมั่น - คำนวณจากการจำลองบูตสแตรปของการเรียกโมเดลหลายครั้ง ซึ่งให้ช่วงความเชื่อมั่น 95% (ช่วง) ของคะแนนความเชื่อมั่นที่เป็นไปได้ วิธีนี้เหมาะอย่างยิ่งเมื่อคุณต้องการเข้าใจช่วงที่เป็นไปได้ที่เป็นไปได้ที่แบบจำลองตีความ แทนที่จะต้องประมาณค่าจุดเดียว
เริ่มต้นใช้งาน
ความต้องการ
- ติดตั้ง .NET 8.x SDK แล้ว
- การเข้าถึง Azure OpenAI API: (การเข้าถึง OpenAI ก็ใช้งานได้เช่นกัน) ใช้งาน GPT3.5, GPT-4T, GPT-4o, GPT-4o-mini และคีย์ API
- Visual Studio 2022(+) หากทำการดีบักโซลูชันด้วย IDE
โคลน repo
git clone https://github.com/bartczernicki/AzureOpenAILogProbs.git
เพิ่มสิ่งนี้ลงใน Secrets.json (คลิกขวาที่ VS Project -> จัดการความลับผู้ใช้) และเรียกใช้แอปพลิเคชันคอนโซล
{
"AzureOpenAI" : {
"ModelDeploymentName" : "gpt-4-2024-04-09" , // Any Azure OpenAI GPT-4o-mini, GPT-4o or GPT3.5 model should perform well
"APIKey" : "YOURAZUREOPENAIKEY" ,
"Endpoint" : "https://YOURAZUREOPENAIENDPOINT.openai.azure.com/"
}
}
สร้างและเรียกใช้คำสั่ง (คุณสามารถสร้างหรือแก้ไขข้อบกพร่องจาก Visual Studio 2022+ ได้)
ข้อมูลสำคัญเกี่ยวกับการตั้งค่าโซลูชัน
ในการตั้งค่านี้ LLM จะได้รับย่อหน้าที่เลือกจากบทความ Wikipedia เกี่ยวกับประวัติของทีมเบสบอล New York Mets บทความเต็มสามารถพบได้ที่นี่: https://en.wikipedia.org/wiki/New_York_Mets นี่คือบริบท (ข้อมูลพื้นฐาน) ที่จะระบุไว้ในแต่ละพร้อมท์เสมอ
นอกจากนี้ยังมีคู่คำถามและคำตอบ 20 คู่ แต่ละรายการในรายการมีคำถามเกี่ยวกับบทความ Wikipedia ของ Mets คู่กับการประเมินโดยมนุษย์ จริง/เท็จ หากมีข้อมูลเพียงพอในบทความ Wikipedia ที่ให้มาเพื่อตอบคำถาม คำถามแต่ละข้อจะถูกส่งไปยัง LLM จากนั้น LLM จะประเมินว่ามีข้อมูลเพียงพอที่จะตอบคำถามหรือไม่ คำตอบนั้นจะถูกนำไปเปรียบเทียบกับการประเมินโดยมนุษย์ (ความจริงเชิงตรรกะ) สองตัวอย่างจากรายการคำถาม 20 ข้อ:
new Question { Number = 1 , EnoughInformationInProvidedContext = true , QuestionText = " When where the Mets founded? " } ,
new Question { Number = 2 , EnoughInformationInProvidedContext = true , QuestionText = " Are the Mets a baseball team or basketball team? " } ,
ความสามารถในการตรวจสอบความน่าจะเป็นของบันทึกโทเค็นจะถูกปิดไว้ตามค่าเริ่มต้น เมื่อต้องการเปิดใช้งานคุณลักษณะนี้ ควรตั้งค่าคุณสมบัติ includeLogProbabilities เป็นจริง การดำเนินการนี้ไม่มีค่าใช้จ่ายโทเค็นเพิ่มเติมใดๆ หรือทำให้การเรียก API มีค่าใช้จ่ายเพิ่มขึ้น อย่างไรก็ตาม สิ่งนี้จะเพิ่มเพย์โหลดของออบเจ็กต์ JSON ที่กลับมาเล็กน้อยมาก ตัวอย่างเช่น การใช้ไลบรารี OpenAI .NET ใหม่จะถูกเปิดเผยเป็นคุณสมบัติในคลาส ChatCompletionOptions
chatCompletionOptions . IncludeLogProbabilities = true ;
สิ่งที่รวมอยู่ในไลบรารี .NET คือความสามารถในการควบคุมจำนวนความน่าจะเป็นของบันทึกที่ส่งคืนพร้อมกับการเรียก API แต่ละครั้ง นี่เป็นอาร์เรย์/รายการโทเค็นที่มีความน่าจะเป็นตามลำดับ ในสถิติ ฟังก์ชันนี้เรียกว่าฟังก์ชันมวลความน่าจะเป็น (PMF) เนื่องจากเป็นการกระจายความน่าจะเป็นแบบแยกส่วน หมายเหตุ: บน Azure OpenAI ค่าปัจจุบันสูงสุดที่ 5 และบน OpenAI 10 (สำหรับ API ส่วนใหญ่) ตัวอย่างเช่น การใช้ไลบรารี OpenAI .NET ใหม่จะถูกเปิดเผยเป็นคุณสมบัติในคลาส ChatCompletionOptions
chatCompletionOptions . TopLogProbabilityCount = 5 ;
โซลูชันนี้ยังรวมถึงความสามารถในการตั้งค่า อุณหภูมิ ของเอาต์พุตที่คาดหวังแต่ละรายการจากแบบจำลอง (LLM) ค่าเริ่มต้นคือ 0.3f (ตัวเลขทศนิยม) แต่สามารถเพิ่มเป็น 2f ได้เพื่อความคิดสร้างสรรค์และความแปรปรวนมากขึ้น
internal static class GenAI
{
// To simulate more variance in selecting lower probability tokens, increase the temperature to between 1.4 - 2.0.
public const float OPENAITEMPATURE = 0.3f ;
.. .
นั่นคือการตั้งค่าหลักของโซลูชันนี้ โค้ดที่เหลือคือโค้ด C# เพื่อเชื่อมต่ออินพุต/เอาท์พุตของบริการ และตรวจสอบให้แน่ใจว่าการคำนวณดำเนินการอย่างเหมาะสมและแสดงภาพในแอปพลิเคชันคอนโซล
ข้อมูลความเป็นมาเกี่ยวกับความน่าจะเป็นของบันทึก
LogProbs (ความน่าจะเป็นของบันทึก) คืออะไร LLM ปัจจุบันส่วนใหญ่ประมวลผลคำแนะนำทันทีโดยการทำนายโทเค็นถัดไป และวนซ้ำแต่ละโทเค็นจนกว่าจะถึงจุดหยุด (เช่น ความยาวโทเค็นสูงสุด ทำตามคำแนะนำของผู้ใช้) สำหรับแต่ละโทเค็นที่ได้รับการพิจารณาสำหรับเอาต์พุตจะได้รับการประมวลผลผ่านไปป์ไลน์ LLM ภายในที่เอาต์พุตการแจกแจงความน่าจะเป็นทางสถิติของโทเค็น "ที่ตรงกันที่สุด" เพื่อเลือก ขึ้นอยู่กับการกำหนดค่า (อุณหภูมิ top_p ฯลฯ) สามารถคำนวณความน่าจะเป็นของโทเค็นเหล่านี้ได้ จากนั้น LLM จะเลือกโทเค็นที่ "ตรงกันที่สุด" ถัดไปตามการกำหนดค่าที่แตกต่างกัน เนื่องจาก LLM เหล่านี้มีความน่าจะเป็นตามธรรมชาติ ด้วยเหตุนี้คุณจึงอาจเห็นเอาต์พุตโทเค็นที่แตกต่างกันสำหรับคำสั่งพร้อมท์เดียวกันกับที่ส่งไปยังโมเดล (LLM)
ด้านล่างนี้คือตัวอย่างของสถานการณ์ถามตอบและความน่าจะเป็นที่เกี่ยวข้องสำหรับโทเค็น (คำ) สองตัวที่ได้รับเลือกให้ตอบคำถาม: "ใครคือประธานาธิบดีคนแรกของสหรัฐอเมริกา" - ในตัวอย่างด้านล่าง โมเดลตอบด้วยโทเค็นสองโทเค็น "จอร์จ" "วอชิงตัน" โดยใช้ความน่าจะเป็นของโทเค็นที่ 99.62% และ 99.99% ตามลำดับ โปรดทราบว่ามีโทเค็นอื่นให้เลือก แต่ความรู้และความสามารถในการให้เหตุผลโดยธรรมชาติของ LLM (จากการได้รับการฝึกอบรมเกี่ยวกับข้อมูลจำนวนมาก) เพิ่มความเป็นไปได้ของโทเค็นทั้งสองนี้อย่างมั่นใจ: "จอร์จ" และ "วอชิงตัน"
มีการตั้งค่าที่สามารถปรับเทียบได้ว่า LLM มีความเข้มงวดหรือสร้างสรรค์เพียงใด ตัวอย่างเช่น คุณอาจเคยได้ยินเกี่ยวกับการตั้งค่าโมเดล (LLM) ที่เรียกว่า อุณหภูมิ ซึ่งเพิ่มโอกาสในการเลือกโทเค็นความน่าจะเป็นที่ลดลงเป็นหลัก
ต้องการข้อมูลเพิ่มเติม? การอ่านที่แนะนำบนพื้นหลังของ Azure OpenAI LogProbs:
- ตำราอาหาร OpenAI - LogProbs: https://cookbook.openai.com/examples/using_logprobs
- LogProbs คืออะไร: https://www.ignorance.ai/p/what-are-logprobs
การใช้ LogProbs เพื่อปรับปรุงคุณภาพ GenAI
มีเทคนิคการปรับปรุงใหม่ๆ ที่ได้รับการพิสูจน์แล้วซึ่งใช้การเรียกแบบจำลองหลายครั้งหรือหลายแบบจำลองเพื่อให้ได้คำตอบ ข้อสรุป หรือการตัดสินใจด้านคุณภาพ ในปัจจุบัน วิธีการใช้ LLM ส่วนใหญ่ในระบบการผลิต GenAI คือการต่อสายดิน (RAG) โดยการให้ข้อมูลบริบทเพิ่มเติม แบบจำลอง (LLM) ได้รับคำสั่งให้ตอบคำถาม เหตุผลเกี่ยวกับข้อมูลนั้น ฯลฯ อย่างไรก็ตาม ด้วยเทคนิคการต่อสายดินที่ไม่ดี อาจส่งผลให้ผลลัพธ์มีคุณภาพต่ำลง
Azure OpenAI LogProbs เป็นเทคนิคขั้นสูงที่สามารถช่วยและสามารถใช้เพื่อวัดความมั่นใจ (ความน่าจะเป็น) ของการตอบสนองของโมเดล ความสามารถอันมหาศาลนี้ช่วยให้ระบบ GenAI สามารถแก้ไขตัวเองหรือแนะนำผู้ใช้/ตัวแทนเพื่อให้ได้การตอบสนองที่มีคุณภาพดีขึ้น
ประสิทธิภาพของ LogProbs แสดงไว้ด้านล่างพร้อมไดอะแกรมของเวิร์กโฟลว์ GenAI โปรดสังเกตว่ามีสองเส้นทาง (ซ้ายและขวา):
- เส้นทางด้านซ้ายเป็นเส้นทางดั้งเดิมที่แอปพลิเคชัน GenAI ส่วนใหญ่เดินตาม คุณถามคำถามและรับคำตอบจาก LLM ขั้นตอนการทำงานทั่วไปทางด้านซ้ายคือสิ่งที่จะพบได้ในแอปพลิเคชัน GenAI Chat ในปัจจุบัน
- เส้นทางที่ถูกต้องคือ "การปรับปรุงคุณภาพ" ให้กับขั้นตอนการทำงาน ในแบบคู่ขนาน เราสามารถถาม LLM ว่า "LLM คุณมีข้อมูลเพียงพอที่จะตอบคำถามนี้หรือไม่ และคุณมีข้อมูลเพียงพอเพียงใด"! ประกาศจากแผนภาพด้านล่างเกี่ยวกับ "การปรับปรุงคุณภาพ" นี้ประกอบด้วย:
- ตอบ คำถาม
- แบบจำลองมีข้อมูลเพียงพอที่จะตอบคำถาม - การประมาณค่าจริงหรือเท็จจากแบบจำลอง (LLM)
- ความน่าจะเป็นที่จะมีข้อมูลเพียงพอที่จะตอบคำถาม - คำนวณจาก LogProbs ซึ่งสามารถนำไปใช้เพื่อการอนุมานทางสถิติเพิ่มเติมหรือเกณฑ์การตัดสินใจได้
ตัวเลือกการประมวลผลคอนโซล
1) First Token Probability - โมเดล AI (LLM) มีความมั่นใจเพียงใดพร้อมข้อมูลเพื่อตอบคำถาม
- โมเดล (LLM) จะตอบสนองด้วย ค่า True หรือ False เท่านั้น โดยพื้นฐานแล้วโมเดลจะจัดประเภท (จริงหรือเท็จ) หากคิดว่ามีข้อมูลเพียงพอ (จริง) หรือมีข้อมูลไม่เพียงพอ (เท็จ) ในพื้นวิกิพีเดียที่ให้มาเพื่อตอบคำถามในข้อความแจ้ง
- ใช้ Azure OpenAI LogProbs เพื่อกำหนดความน่าจะเป็นของโทเค็นแรกเท่านั้นในการตอบกลับ โทเค็นแรกจะเป็น True หรือ False เสมอ
- หากความน่าจะเป็นสูง โมเดล (LLM) จะมั่นใจในคำตอบของตัวเองมาก (จริงหรือเท็จ)
- หากความน่าจะเป็นต่ำ โมเดล (LLM) ไม่ค่อยมั่นใจในคำตอบของตัวเอง (จริงหรือเท็จ)
- ความน่าจะเป็นสามารถใช้เป็นเกณฑ์การตัดสินใจจำแนกประเภทได้ว่าแบบจำลองมีข้อมูลเพียงพอ (บริบท RAG) ที่จะตอบคำถามหรือไม่ ตัวอย่างเช่น เราสามารถมอบประสบการณ์ผู้ใช้ด้วยสัญญาณที่ได้รับการยืนยันแล้วว่าคำตอบได้ผ่านการตรวจสอบครั้งที่สอง เมื่อความน่าจะเป็นที่ปล่อยออกมาจากแบบจำลอง (LLM) มากกว่า 90%
ตัวอย่างผลลัพธ์:
โปรดทราบว่าภาพด้านบนแสดงให้เห็นผลลัพธ์ True และ False จาก LLM และความน่าจะเป็นของผลลัพธ์ True หรือ False นั้น เนื่องจาก "จริง" หรือ "เท็จ" เป็นโทเค็นแรกและโทเค็นเดียวในการตอบกลับ จึงสามารถใช้ความน่าจะเป็นโทเค็นแรก (LogProb) ได้ แนวทางนี้มีปัญหาสองสามข้อ:
- มีการตรวจสอบเฉพาะโทเค็นแรกและความน่าจะเป็นเท่านั้น เมื่อดูตัวอย่าง George Washington ด้านบน โปรดทราบว่ามีโทเค็นต่างๆ ที่สามารถส่งออกได้ ซึ่งสามารถเป็นส่วนประกอบหรือคล้ายกับ "George Washington" เช่นเดียวกับเมื่อดูเฉพาะโทเค็น "จริง" หรือ "เท็จ" อาจมีโทเค็น เช่น "TRU", "true", "tr" และควรรวมโทเค็นทั้งหมดเข้าด้วยกันเพื่อแสดงถึงความน่าจะเป็นโดยรวมของ "True" ตัวอย่างด้านล่างแสดงให้เห็นสิ่งนี้
- การรันตัวอย่างหลายครั้งบางครั้งดูเหมือนจะมีความคลาดเคลื่อนระหว่างโทเค็นแรกกับ LogProb ระดับบนสุด เนื่องจากบริการ OpenAI สามารถเลือกโทเค็นที่มีความน่าจะเป็นต่ำกว่า โดยเฉพาะการตั้งค่าเช่นอุณหภูมิที่สูงขึ้น นี่เป็นการแก้ไขง่ายๆ โดยพื้นฐานแล้ว LogProbs อนุญาตให้นักพัฒนาแทนที่โทเค็นแรกที่เลือก และเลือกโทเค็นที่มีความน่าจะเป็นสูงสุด
2) ความน่าจะเป็นโทเค็นแรก [ด้วยคะแนน Brier] - การคำนวณคะแนน Brier ของความน่าจะเป็นโทเค็นแรก
- ตัวอย่างนี้แสดงวิธีการวัดความแม่นยำในการพยากรณ์และการคาดการณ์ของแบบจำลอง
- เช่นเดียวกับความน่าจะเป็นโทเค็นแรก แต่ยังคำนวณคะแนน Brier สำหรับคำตอบความน่าจะเป็นแต่ละคำตอบด้วย
- คะแนน Brier (และวิธีการที่คล้ายกันในการเรียนรู้ของเครื่องและสถิติ) ใช้เพื่อวัดประสิทธิภาพความแม่นยำของการทำนายความน่าจะเป็น
- ยิ่งคะแนน Brier ต่ำ โมเดลก็ยิ่งทำนายความน่าจะเป็นของการตอบกลับได้ดีขึ้นเท่านั้น ตัวอย่างเช่น หากมีแบบจำลองสองแบบและพวกเขาทั้งสองทำนายเหตุการณ์ที่ถูกต้อง แต่ความน่าจะเป็นของแบบจำลองแรกคือ 65% และความน่าจะเป็นของแบบจำลองที่สองคือ 95% คะแนน Brier สำหรับแบบจำลองที่สองจะต่ำกว่า เพราะหากเหตุการณ์ในอนาคตเกิดขึ้น ความน่าจะเป็นจะเป็น 100% โดยอัตโนมัติ 95% ใกล้ถึง 100% แล้ว ข้อมูลเพิ่มเติมเกี่ยวกับคะแนน Brier: https://en.wikipedia.org/wiki/Brier_score
- คะแนน Brier สามารถรวมการคาดการณ์หลายรายการและรวมเป็นคะแนนเดียว ตัวอย่างนี้จะแสดงตารางคะแนน Brier สำหรับแต่ละคำถาม และคะแนน Brier เฉลี่ยสำหรับคำถามทั้งหมด
- คะแนน Brier โดยเฉลี่ยสามารถบอกเราได้มากมายเกี่ยวกับความแม่นยำในการปฏิบัติงานโดยรวมของระบบความน่าจะเป็นหรือแบบจำลองความน่าจะเป็น คะแนน Brier เฉลี่ย 0.1 หรือต่ำกว่าถือว่าดีเยี่ยม 0.1 - 0.2 คะแนนเหนือกว่า 0.2 - 0.3 เพียงพอ และ 0.3-0.35 ถือว่ายอมรับได้ และสุดท้ายคะแนน Brier เฉลี่ยที่สูงกว่า 0.35 บ่งชี้ประสิทธิภาพการทำนายที่ไม่ดี
คะแนน Brier จะแตกต่างกันไปขึ้นอยู่กับความสามารถของโมเดล ข้อความแจ้ง และบริบทของคำถาม การรักษาพรอมต์และบริบทให้เหมือนกัน ทำให้สามารถเปรียบเทียบประสิทธิภาพความแม่นยำของโมเดลโดยรวมได้ สังเกตคะแนน Brier ด้านล่างเมื่อเปรียบเทียบรุ่น GPT-4o และ GPT-4o-mini โมเดล GPT-4o-mini มีคะแนน Brier ต่ำกว่า ซึ่งหมายความว่าทำนายความน่าจะเป็นของคำตอบที่ถูกต้องได้แม่นยำยิ่งขึ้น ในความเป็นจริง GPT-4o-mini มาถึงคำตอบสุดท้ายอย่างถูกต้อง 18 ข้อจาก 20 คำถาม ในขณะที่โมเดล GPT-4o ตรงกับคำตอบของมนุษย์ที่คาดไว้ (หากมีข้อมูลในบริบทเพียงพอที่จะตอบคำถาม) 17 จาก 20 คำถาม. โปรดทราบว่าคะแนน Brier เฉลี่ยของ GPT-4o-mini อยู่ที่ 0.083 (ต่ำกว่า 0.1) ซึ่งบ่งบอกถึงประสิทธิภาพการคาดการณ์ที่ยอดเยี่ยม ดังนั้นคะแนน Brier ของรุ่น GPT-4o-mini จึงต่ำกว่า (ดีกว่า) สิ่งนี้แสดงให้เห็นว่ามีความแม่นยำมากกว่าในการหาปริมาณความน่าจะเป็นที่จะมีข้อมูลเพียงพอที่จะตอบคำถามที่ให้มา
ตัวอย่างผลลัพธ์:
3) ความน่าจะเป็นแบบถ่วงน้ำหนักของคะแนนความเชื่อมั่น - โมเดลให้คะแนนความมั่นใจในตนเอง จากนั้นประเมินความน่าจะเป็นของคะแนนความเชื่อมั่น
- ในตัวอย่างก่อนหน้านี้ มีการใช้เฉพาะความน่าจะเป็นของโทเค็นแรกเท่านั้น โทเค็นใดก็ตามที่มีความน่าจะเป็นสูงสุดจะถูกใช้เป็นการพิจารณาจริงหรือเท็จ
- Azure OpenAI LogProbs สามารถส่งคืนการกระจายฟังก์ชันมวลความน่าจะเป็น (PMF) ได้สูงสุด 5 โทเค็นถัดไป รวมถึงความน่าจะเป็นด้วย
- การคำนวณนี้ใช้ LogProbs หลายรายการเพื่อกำหนดความน่าจะเป็นแบบ "ถ่วงน้ำหนัก" ของการตอบสนอง
- นอกจากนี้ แทนที่จะขอให้แบบจำลองระบุเพียงการพิจารณาว่าเป็นจริงหรือเท็จ แบบจำลองสามารถให้คะแนนความเชื่อมั่น (1-10) ว่ามีความมั่นใจในการตอบคำถามมากน้อยเพียงใด
- ความน่าจะเป็นแบบถ่วงน้ำหนักคำนวณโดยการคูณ: คะแนนความเชื่อมั่น*ความน่าจะเป็นที่จะให้ค่าประมาณความมั่นใจในการตอบคำถามแบบถ่วงน้ำหนักที่ดีขึ้น
- ความน่าจะเป็นแบบถ่วงน้ำหนักสามารถใช้เป็นคะแนนความเชื่อมั่นที่ปรับเทียบแล้วดีขึ้นสำหรับการตอบสนองของแบบจำลอง
หากต้องการส่งคืนความน่าจะเป็นของบันทึกหลายรายการให้ตั้งค่า LogProbabilitiesPerToken เป็น 5 (สูงสุด Azure OpenAI ปัจจุบันตามที่เขียนนี้):
chatCompletionOptions.Temperature = 0.3f; // Higher Temperature setting will use tokens with much lower probability
chatCompletionOptions.IncludeLogProbabilities = true;
// For the Confidence Score, we want to investigate 5 of the top log probabilities (PMF)
chatCompletionOptions.TopLogProbabilityCount = 5;
ตัวอย่างผลลัพธ์:
ด้านล่างนี้เป็นตัวอย่างของการแจกแจงความน่าจะเป็นของโทเค็นเมื่อมีการส่งคืนโทเค็น LogProbs 5 รายการพร้อมกับความน่าจะเป็นตามลำดับ ในฮิสโตแกรมด้านล่าง "คะแนนความเชื่อมั่น: 1" มีความน่าจะเป็น 42.3% ซึ่งหมายความว่าโมเดลคิดว่ามีคะแนนความเชื่อมั่นต่ำมาก = 1 ในการตอบคำถาม และโอกาสนั้นต่ำคือ 42.3% หากคุณเพียงเลือกคะแนนความเชื่อมั่นสูงสุดที่แบบจำลองส่งคืน คุณอาจพลาดข้อมูลอื่นๆ จำนวนมากพร้อมกับโทเค็นอื่นๆ (โทเค็นหมายเลข 2 - 5) ในสถานการณ์นี้ มีข้อมูลอีกประมาณ 57% ที่ความน่าจะเป็นของโทเค็นอื่นๆ สามารถใช้ในการคำนวณคะแนนความเชื่อมั่นแบบ "ถ่วงน้ำหนัก" ซึ่งจะปรับเทียบคะแนนความเชื่อมั่นจาก 1 -> 2.3
4) ช่วงคะแนนความเชื่อมั่น 95% - ใช้การแจกแจงความน่าจะเป็นเพื่อคำนวณช่วงความเชื่อมั่น 95% (ช่วง) ของคำตอบที่เป็นไปได้
- ตัวอย่างก่อนหน้านี้แสดงการประมาณคะแนนความเชื่อมั่นเพียงจุดเดียว สิ่งนี้อาจทำให้เข้าใจผิดได้เนื่องจากแบบจำลองอาจมีการตีความคำตอบได้หลายอย่าง
- Azure OpenAI LogProbs สามารถส่งคืนการกระจายฟังก์ชันมวลความน่าจะเป็น (PMF) ได้สูงสุด 5 โทเค็นถัดไป รวมถึงความน่าจะเป็นด้วย
- การคำนวณนี้ใช้ LogProbs หลายรายการเพื่อกำหนด "ช่วงความเชื่อมั่น" ของการตอบกลับ
- ช่วงความเชื่อมั่นคำนวณโดยการบูตสแตรปการเรียกหลายครั้ง (10) ไปยังโมเดล (โดยใช้พร้อมต์เดียวกัน) และคำนวณช่วงความเชื่อมั่น 95% ของคะแนนความเชื่อมั่น
- ช่วงความเชื่อมั่นสามารถใช้เพื่อทำความเข้าใจช่วงของความเป็นไปได้ โดยที่ 95% ของผลลัพธ์จะอยู่ในช่วงนี้เมื่อมีคำถามเดิมซ้ำ
- ทำไมคุณถึงเรียกรุ่น 10x นั่นไม่มากเกินไปเหรอ? สำหรับการตัดสินใจและการให้เหตุผลที่มีเดิมพันสูง (การซื้อบ้าน/รถยนต์ การตัดสินใจเรียนปริญญา 4 ปี) การโทรเพิ่มเติมเล็กๆ น้อยๆ เหล่านี้คุ้มค่ากับเงินไม่กี่เซ็นต์และมีเวลาเพิ่มเติมเพื่อให้ได้ช่วงข้อผิดพลาดที่เหมาะสม
ตัวอย่างผลลัพธ์:
ข้อควรพิจารณาขั้นสูงเพิ่มเติม (รันโปรเจ็กต์คอนโซล ExampleConfidenceIntervalSimulation)
การซื้อคืนนี้ไม่ได้เกี่ยวข้องกับการสอบเทียบคะแนนความเชื่อมั่นของแบบจำลองหรือการสอบเทียบ LogProbs ความน่าจะเป็นของแบบจำลอง เนื่องจาก LLM เป็นเครือข่ายประสาทโดยพื้นฐานแล้ว จึงไม่สามารถปรับเทียบได้สำหรับงานหรือโดเมนเฉพาะ โดยพื้นฐานแล้ว เมื่อ LLM บอกว่ามีความมั่นใจ 8/10 หรือกำหนดความน่าจะเป็นที่ 80% แบบจำลองควรจะถูกต้องประมาณ 80% ของเวลา (ภายในอัตราข้อผิดพลาด)
- แบบจำลองที่ตอบคำถาม 100 ข้อด้วยคะแนนความเชื่อมั่น 80% ควรถูกต้องประมาณ 80 ครั้ง นี่จะเป็นการสอบเทียบที่เหมาะสมที่สุด
- หมายเหตุ: มีอัตราข้อผิดพลาดแม้ว่าโมเดลจะได้รับการสอบเทียบอย่างสมบูรณ์แล้วประมาณ 80% ในกรณีที่มีคำถาม 100 ข้อ 95% ของเวลาที่เราคาดว่าช่วงจะอยู่ระหว่าง 72 ถึง 88 คำถามที่ถูกต้อง (+/- 8 คำถามโดยประมาณค่าเฉลี่ยที่คาดหวังคือ 80) เหตุใดจึงรายงานระดับความเชื่อมั่น 95% ไม่ใช่ 100% การรายงานระดับความเชื่อมั่น 100% นั้นไม่สมเหตุสมผล เนื่องจากช่วงความเชื่อมั่น 100% อยู่ระหว่าง 0 - 100 คำตอบที่ถูกต้อง แม้ว่าความน่าจะเป็นทั้งหมดจะเป็นไปไม่ได้ แต่ก็ยังมีโอกาสน้อยมากที่จะตอบคำถาม 0 หรือ 100 ข้อ ระดับความเชื่อมั่น 95% จะให้ผลลัพธ์ที่เป็นไปได้ตามความเป็นจริง และหากคุณเห็นผลลัพธ์ที่อยู่นอกช่วงนี้ แสดงว่าบางสิ่ง "คุ้มค่าที่จะตรวจสอบ" อาจเกิดขึ้นได้
- แบบจำลองที่ตอบคำถาม 100 ข้อด้วยคะแนนความมั่นใจ 80% และถูกต้องเพียง 50 ครั้งจะถือว่ามีความมั่นใจมากเกินไป ซึ่งอยู่นอกช่วงข้อผิดพลาดที่คาดไว้อย่างดี
- หมายเหตุ: สถิติหรือการจำลองสามารถแสดงให้เห็นถึงความน่าจะเป็นที่จะได้รับคำตอบที่ถูกต้องเพียง 50 ข้อเท่านั้น ถ้าแบบจำลองอ้างว่า 80% มั่นใจว่ามีค่าใกล้ 0.00%! เป็นไปไม่ได้ แต่หากสิ่งนี้เกิดขึ้นในสถานการณ์การผลิต โมเดลจะไม่ได้รับการปรับเทียบอย่างชัดเจนและมีความมั่นใจมากเกินไป
- แบบจำลองที่ตอบคำถาม 100 ข้อด้วยคะแนนความมั่นใจ 80% และถูกต้อง 90 ครั้ง ถือว่ามั่นใจน้อยเกินไป นี่อยู่นอกช่วงข้อผิดพลาดที่คาดไว้
- หมายเหตุ: สถิติหรือการจำลองสามารถแสดงให้เห็นว่าแบบจำลองที่มีความมั่นใจ 80% แต่ถูกต้องจริงมากกว่า 90 ครั้งจะเกิดขึ้นเพียง 0.00233 (0.233%) ของเวลาเท่านั้น
การจำลองทางสถิติ แสดงการจำลอง 10,000,000 ครั้งและช่วงที่คาดหวังสำหรับคำถาม 100 ข้อ การสอบเทียบ 80%:
เทคนิคการสอบเทียบเหล่านี้นำไปใช้กับสถานการณ์ในโลกแห่งความเป็นจริง พิจารณาตลาด Mainifold (https://manifold.markets/) ซึ่งนักพยากรณ์ระดับสูงที่เป็นมนุษย์เดิมพันกับความน่าจะเป็นของเหตุการณ์ต่างๆ ภูมิปัญญาโดยรวมของสุดยอดนักพยากรณ์ที่เป็นมนุษย์เหล่านี้ได้รับการปรับเทียบอย่างดีในการทำนายเหตุการณ์ในโลกแห่งความเป็นจริง!
ตัวอย่างการปรับเทียบในสภาพแวดล้อมการคาดการณ์จริงจาก Manifold Markets ที่มีการคาดการณ์หลายพันรายการ:
หัวข้อของการสอบเทียบไม่ใช่เรื่องใหม่และได้รับการศึกษาในทฤษฎีการตัดสินใจและการเรียนรู้ของเครื่อง คุณสามารถใช้ทั้งข้อมูลการตัดสินใจ (วิทยาศาสตร์การรู้คิด) และเทคนิคการเรียนรู้ของเครื่องเพื่อปรับเทียบประสิทธิภาพของโมเดลเพิ่มเติม
- ปรับเทียบ Chat GPT เพื่อความมั่นใจมากเกินไป: https://hubbardresearch.com/chat-gpt-ai-calibration/
- ตัวอย่างการสอบเทียบ Manifold Markets ของนักพยากรณ์: https://manifold.markets/calibration
- การปรับเทียบผู้ประเมินที่ใช้ LLM: https://arxiv.org/pdf/2309.13308.pdf