บทที่ 1 · AI เดาคำถัดไปยังไง หน้า 4/11 ~3 นาที

Softmax: เปลี่ยนคะแนนเป็นความน่าจะเป็น

หน้าก่อนเราได้ คะแนนดิบ (logit)คะแนนที่โมเดลให้กับทุก token ว่าเข้ากับบริบทแค่ไหน ติดลบได้ และยังไม่ใช่ความน่าจะเป็นดูคำศัพท์ทั้งหมด ของ 4 คำสำหรับประโยค "แมวชอบกิน ___" มาแล้ว: ปลา 3, ข้าว 2, หนู 1, รถ −1

แต่คะแนนดิบยังเอาไปสุ่มไม่ได้ เราต้องเปลี่ยนมันเป็น การแจกแจงความน่าจะเป็น (probability distribution)ชุดของโอกาสที่แต่ละตัวเลือกจะเกิด โดยทุกตัวรวมกันได้ 100%ดูคำศัพท์ทั้งหมด ก่อน เครื่องมือนั้นชื่อ ซอฟต์แมกซ์ (softmax)สูตรที่เปลี่ยนคะแนนดิบเป็นความน่าจะเป็นที่รวมกันได้ 100% โดยยก e กำลังคะแนนแล้วหารด้วยผลรวมดูคำศัพท์ทั้งหมด ทำงาน 2 ขั้น:

  1. ยก e กำลังคะแนน — ทำให้ทุกค่าเป็นบวก และขยายช่องว่างระหว่างคำ
  2. หารด้วยผลรวม — ทำให้ทุกคำรวมกันได้ 100%

ลองคิดตาม: , , , รวมกันได้

ดังนั้น ปลา หรือ 65.7% ส่วนข้าว 24.2%, หนู 8.9% และรถ 1.2%

ลองแก้คะแนนในตารางดู ผลรวมจะเป็น 100% เสมอ:

Softmax: "แมวชอบกิน ___"

แก้คะแนน (logit) ได้ตั้งแต่ −5.0 ถึง 5.0 แล้วดูว่า % เปลี่ยนยังไง ผลรวมยังเป็น 100% เสมอ

ตาราง softmax: คะแนน z, e ยกกำลัง และโอกาส p
คำคะแนน zezp
ปลา
20.085565.7%
ข้าว
7.389124.2%
หนู
2.71838.9%
รถ
0.36791.2%
รวม30.5608100.0%
  • ปลา65.7%
  • ข้าว24.2%
  • หนู8.9%
  • รถ1.2%
ลองบวก 1 ให้ทุกคำ — % ไม่เปลี่ยนเลย

softmax เปลี่ยนคะแนนดิบเป็นเปอร์เซ็นต์ที่รวมกันได้ 100% คำคะแนนสูงได้ส่วนแบ่งมากแบบทวีคูณ

มังคุด มาสคอตมังคุด

มังคุด

ทำไมต้องใช้ e ด้วย ใช้คะแนนหารผลรวมตรงๆ ไม่ได้เหรอ?