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

ส่งความรับผิดย้อนทุกชั้น

p − y บอกความชันของคะแนน แต่ที่ต้องปรับจริงคือ พารามิเตอร์ (parameter, weight)ตัวเลขในตารางต่างๆ ของโมเดลที่ถูกปรับระหว่างการฝึก ขนาดอย่าง "8B" หมายถึงมีพารามิเตอร์ราว 8 พันล้านตัวดูคำศัพท์ทั้งหมด ทุกตัว ในทุกชั้น รวมถึง เอ็มเบดดิง (embedding)การแปลงคำหรือข้อความเป็นชุดตัวเลข (เวกเตอร์) ข้อความที่ความหมายใกล้กันจะได้ตัวเลขใกล้กันดูคำศัพท์ทั้งหมด ในบทที่ 2

การส่งย้อนกลับ (backpropagation, backprop)วิธีหา gradient ของทุกพารามิเตอร์ในรอบเดียว โดยส่งผลของ loss ย้อนจากชั้นสุดท้ายไปชั้นแรกด้วยกฎลูกโซ่ดูคำศัพท์ทั้งหมด ใช้กฎลูกโซ่ (chain rule): คูณความชันเฉพาะจุดของแต่ละชั้นต่อกัน จากชั้นสุดท้ายย้อนไปชั้นแรก จึงได้ความชันของพารามิเตอร์ทุกตัวในรอบเดียว

ตัวอย่างเวกเตอร์ขาออกจากบทที่ 3: logit ปลา = h · e ปลา โดย h = (2, 1) และ e ปลา = (1, 1) ความชันของ e ปลา คือ (p − y) × h = (−0.6855, −0.3428) ก้าวสวนความชันจึงดึง e ปลา เข้าหา h ส่วนคำผิดถูกผลักออกตาม p ของมัน ความชันที่ส่งให้ h คือ Σ (p − y) × e คำ = (−0.1070, −0.2538) แล้วส่งย้อนต่อเข้าชั้นก่อนหน้าแบบเดียวกัน

แต่คูณกันหลายชั้นมีกับดัก: ถ้าแต่ละชั้นคูณ 0.5 สิบชั้นจะเหลือ ≈ 1/1,024 (สัญญาณแทบหาย) ถ้าคูณ 1.5 จะได้ ≈ 57.7 (ระเบิด)

ทางหลัก residual คือ x + f(x) ความชันที่ย้อนผ่านจึงเป็น 1 + (ความชันของ f) เลข 1 ส่งสัญญาณผ่านตรงๆ ไม่หดหาย ส่วน layer norm คุมตัวเลขให้พอดี โมเดลลึกหลายสิบชั้นจึงฝึกได้

ความชันจากประโยคเดียวแกว่ง จึงเฉลี่ยหลายตัวอย่างต่อก้าว เรียกว่า ชุดย่อย (mini-batch, batch)กลุ่มตัวอย่างที่นำ gradient มาเฉลี่ยกันก่อนปรับพารามิเตอร์หนึ่งก้าว ทำให้ทิศทางนิ่งขึ้นและประมวลผลพร้อมกันได้ดูคำศัพท์ทั้งหมด ถ้าข้อมูล 2 ล้านล้าน token ก้าวละ 4 ล้าน token ต้องเดิน 500,000 ก้าว

backpropagation ส่ง "ความรับผิด" จาก loss ย้อนทุกชั้นด้วยกฎลูกโซ่ พารามิเตอร์ทุกตัวได้ทิศที่ต้องขยับในรอบเดียว

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

มังคุด

พารามิเตอร์เป็นพันล้านตัว ต้องลองขยับทีละตัวแล้วดูผลเหรอ?