บทที่ 4 · AI เรียนรู้ยังไง หน้า 3/13 ~3 นาที

Loss: วัดว่าเดาผิดแค่ไหน

จำ "แมวชอบกิน ___" จากบทที่ 1 ได้มั้ย? หลัง ซอฟต์แมกซ์ (softmax)สูตรที่เปลี่ยนคะแนนดิบเป็นความน่าจะเป็นที่รวมกันได้ 100% โดยยก e กำลังคะแนนแล้วหารด้วยผลรวมดูคำศัพท์ทั้งหมด โมเดลให้ ปลา 65.7%, ข้าว 24.2%, หนู 8.9%, รถ 1.2%

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

ตัววัดคือ ค่าความผิดพลาด (loss, cross-entropy loss)ตัวเลขที่บอกว่าโมเดลเดาผิดมากแค่ไหน ยิ่งต่ำยิ่งดี การเดาคำถัดไปใช้แบบ cross-entropy คือ −ln ของโอกาสที่โมเดลให้คำเฉลย จึงสูงมากเมื่อโมเดลมั่นใจแต่ผิดดูคำศัพท์ทั้งหมด แบบที่ใช้กับการเดาคำถัดไปคือ cross-entropy:

ทำไมต้องมีลบและ ln (ลอการิทึมฐาน e)?

  • ln ของโอกาสที่มากกว่า 0 แต่น้อยกว่า 1 ติดลบเสมอ เครื่องหมายลบจึงพลิกให้เป็นบวก
  • ln เปลี่ยน "คูณโอกาสทั้งประโยค" ให้เป็น "บวก loss ทีละคำ" ดังนั้น log P ของทั้งประโยคในบทที่ 1 (ถ้าใช้ ln) ก็คือ −(loss รวม)

ทางลัด: 3.4197 = ln(e³ + e² + e¹ + e⁻¹) ซึ่งเท่ากันทุกคำ loss จึงเป็นแค่ 3.4197 ลบ คะแนนดิบ (logit)คะแนนที่โมเดลให้กับทุก token ว่าเข้ากับบริบทแค่ไหน ติดลบได้ และยังไม่ใช่ความน่าจะเป็นดูคำศัพท์ทั้งหมด ของคำเฉลย:

เฉลยคะแนน (logit) zploss = 3.4197 − z
ปลา365.7%0.4197
ข้าว224.2%1.4197
หนู18.9%2.4197
รถ−11.2%4.4197
  • p = 1 → loss = 0 เดาถูกเต็มร้อย
  • p = 0.01 → loss = 4.6052
  • p เข้าใกล้ 0 → loss พุ่งไม่จำกัด มั่นใจผิดจึงโดนหนัก

การฝึกคือการทำให้ loss เฉลี่ย ของแบบฝึกหัดนับล้านล้านข้อต่ำที่สุด

ลองกดเปลี่ยนเฉลยทีละคำแล้วดู loss:

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

เลือกว่าคำเฉลยจริงคือคำไหน แล้วดูว่า loss เปลี่ยนแค่ไหน

คะแนน z และโอกาส p ของแต่ละคำ
คำคะแนน zp
ปลา (เฉลย)365.7%
ข้าว224.2%
หนู18.9%
รถ−11.2%

เฉลย ปลา: โอกาส 65.7%, loss 0.4197

ลองเลือกเฉลยให้ครบทุกคำ (1/4)

ตาราง loss ถ้าแต่ละคำเป็นเฉลย (สำหรับโปรแกรมอ่านหน้าจอ)
คำคะแนนโอกาสloss ถ้าเป็นเฉลย
ปลา365.7%0.4197
ข้าว224.2%1.4197
หนู18.9%2.4197
รถ−11.2%4.4197

loss = −ln p(คำเฉลย): มั่นใจและถูก loss ใกล้ 0 แต่มั่นใจผิดทาง loss พุ่งสูงมาก

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

มังคุด

ใช้ 1 − p ไม่ได้เหรอ ง่ายกว่าตั้งเยอะ?