บทที่ 3 · ข้างใน Transformer หน้า 4/13 ~3 นาที

ห้ามแอบดูคำถัดไป: causal mask

โมเดลเขียนทีละ token (บทที่ 1) คำถัดไปจึงยังไม่มี แต่ตอนฝึก (บทที่ 4) โมเดลเห็นทั้งประโยค ถ้าไม่ปิด "กิน" จะแอบดู "ปลา" แล้วลอกเฉลย

กฎนี้ชื่อ การบังคำอนาคต (causal mask)กฎใน attention ที่ให้แต่ละ token ฟังได้แค่ตัวเองและคำก่อนหน้า โดยตั้งคะแนนของคำในอนาคตเป็น −∞ ก่อน softmaxดูคำศัพท์ทั้งหมด แต่ละ token ฟังได้แค่ ตัวเองและคำก่อนหน้า คะแนนของคำอนาคตถูกแทนด้วย −∞ ก่อนเข้า ซอฟต์แมกซ์ (softmax)สูตรที่เปลี่ยนคะแนนดิบเป็นความน่าจะเป็นที่รวมกันได้ 100% โดยยก e กำลังคะแนนแล้วหารด้วยผลรวมดูคำศัพท์ทั้งหมด และเพราะ น้ำหนักจึงเป็น 0

ลองคิดตาม แถวของ "กิน" ใน "แมว กิน ปลา" ได้คะแนน (1, 2, 3):

  • ไม่ปิด: แมว 9.0%, กิน 24.5%, ปลา 66.5% ส่วนใหญ่ตกที่ "ปลา" ซึ่ง "กิน" ต้องทายเอง เท่ากับลอกเฉลย
  • ปิด: (1, 2, −∞) ได้ แมว 26.9%, กิน 73.1%, ปลา: ปิด (น้ำหนัก 0)

บอกตามตรง: บทที่ 2 ให้ทุกคำฟังทุกคำ และแอบให้ "มัน" รู้ท้ายประโยคไว้ก่อน ใน LLM จริง เวกเตอร์ของ "มัน" ยังไม่มีข้อมูลจาก หิว/เน่า q ของมันจึงเลือกแมวหรือปลาไม่ได้ แถวของ "มัน" ในสองประโยคเลยเหมือนกัน (แมว 40.0%, ปลา 35.0%)

คำหลังๆ เป็นคนไขปริศนา: "หิว" ฟังแมว 55.0% ส่วน "เน่า" ฟังปลา 55.0% ลองสลับสองประโยค ดูช่องที่ปิดไว้ด้านขวาบน

Attention: คำไหนฟังคำไหน

เลือกประโยค แล้วแตะคำที่อยากรู้ว่ามัน “ฟัง” คำไหนบ้าง (ตัวเลขตั้งขึ้นเพื่อสาธิต)

คำว่า “หิว” ฟัง “แมว” มากที่สุด 55.0%

  • แมว55.0%
  • กิน5.0%
  • ปลา10.0%
  • เพราะ5.0%
  • มัน20.0%
  • หิว5.0%

รวมทั้งแถว = 100.0% (softmax แบ่งความสนใจให้รวมได้ 100% เสมอ)

ตารางทั้งประโยค: แถว = คำที่ถาม (query) · คอลัมน์ = คำที่ถูกฟัง (key) · ยิ่งเข้มยิ่งฟังมาก

ลองกดประโยค “แมวไม่กินปลาเพราะมันเน่า” แล้วดูว่า “เน่า” ฟังใคร

น้ำหนัก attention ของประโยค “แมวกินปลาเพราะมันหิว” (ใส่ causal mask) (แถว = query, คอลัมน์ = key) ตารางตัวเลขสำหรับโปรแกรมอ่านหน้าจอ
query \ keyแมวกินปลาเพราะมันหิว
แมว100.0%ปิดปิดปิดปิดปิด
กิน60.0%40.0%ปิดปิดปิดปิด
ปลา25.0%35.0%40.0%ปิดปิดปิด
เพราะ20.0%25.0%25.0%30.0%ปิดปิด
มัน40.0%10.0%35.0%5.0%10.0%ปิด
หิว55.0%5.0%10.0%5.0%20.0%5.0%

LLM ให้แต่ละ token ฟังได้แค่ตัวเองและคำก่อนหน้า โดยตั้งคะแนนของคำในอนาคตเป็น −∞ ก่อน softmax

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

มังคุด

ถ้า "มัน" มองไม่เห็น "หิว" แล้วโมเดลจะรู้ได้ไงว่ามันคือแมว?