ห้ามแอบดูคำถัดไป: 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% ลองสลับสองประโยค ดูช่องที่ปิดไว้ด้านขวาบน
LLM ให้แต่ละ token ฟังได้แค่ตัวเองและคำก่อนหน้า โดยตั้งคะแนนของคำในอนาคตเป็น −∞ ก่อน softmax

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