← คู่มือ Transformer — ลบทุกอย่าง เหลือแค่กราฟ
LEVEL 2 · ระดับกลาง
ตัดทุกอย่างออก เหลือแค่การมองหากัน
ปี 2017 มีงานวิจัยชื่อ Attention Is All You Need ออกมา และชื่อของมันคือใจความทั้งหมด — ไม่ใช่การถ่อมตัว ไม่ใช่การเล่นคำ มันเป็นคำประกาศถึงสิ่งที่ทีมนั้นทำจริง ๆ
คำถามที่พวกเขาถามคือคำถามที่ฟังดูบ้าในตอนนั้น: ถ้ากลไกการมองหากันที่แปะเสริมไว้มันดีนัก จะเกิดอะไรขึ้นถ้าเราเอาส่วนที่เป็นแกนหลักออกให้หมด แล้วเหลือแต่ของเสริม
ผลคือได้สถาปัตยกรรมที่ไม่มีหน่วยความจำแบบไล่ลำดับเลยแม้แต่ชิ้นเดียว มีแต่การมองหากันเป็นชั้น ๆ ซ้อนกัน และมันชนะทุกอย่างในยุคนั้น
ของเสริมกลายเป็นทั้งหมด และแกนเดิมถูกลบทิ้ง — นี่คือแถวที่สามในตารางบทที่ 1
8.1 ราคาที่ต้องจ่ายทันทีเมื่อลบลำดับออก
การลบการไล่ลำดับทิ้งไม่ได้มาฟรี และตรงนี้คือจุดที่คนอ่านผ่านกันเยอะที่สุด
LSTM รู้ลำดับของคำ โดยอัตโนมัติ เพราะมันอ่านทีละคำตามเวลาจริง คำที่มาก่อนก็ถูกประมวลผลก่อนโดยธรรมชาติของกลไก แต่เมื่อทุกตำแหน่งถูกมองพร้อมกันหมด ข้อมูลเรื่องลำดับหายไปทั้งก้อน โมเดลจะแยกไม่ออกเลยว่า "กรกินหมา" กับ "หมากินกร" ต่างกัน เพราะมันเห็นแค่กองคำที่ไม่มีลำดับ
ทางแก้คือใส่ข้อมูลตำแหน่งกลับเข้าไปเองในรูปตัวเลขที่ผสมเข้ากับข้อมูลของแต่ละโทเค็น เรียกว่า positional encoding สังเกตให้ดีว่านี่คือแบบแผนที่จะเจอซ้ำ: ลบสิ่งที่มนุษย์ใส่ไว้ออก แล้วถ้าจำเป็นก็เอากลับเข้ามาในรูปที่โมเดลเรียนรู้ต่อได้เอง ไม่ใช่ในรูปกฎที่ตายตัว
8.2 ชิ้นส่วนที่ต้องมาเป็นชุด ไม่ใช่แค่ attention
ความเข้าใจผิดที่พบบ่อยคือคิดว่างานปี 2017 มีแค่ attention ความจริงคือมันเป็นการประกอบเทคนิคที่พิสูจน์ตัวเองมาแล้วเข้าด้วยกันอย่างพอดี และถ้าขาดชิ้นใดชิ้นหนึ่งไป มันเทรนไม่ขึ้น
| ชิ้นส่วน | มีไว้ทำอะไร | ถ้าไม่มีจะเป็นยังไง |
|---|---|---|
| Residual connection | ให้สัญญาณวิ่งผ่านชั้นลึก ๆ ได้ | เทรนโมเดลลึกไม่ขึ้น |
| Layer normalization | คุมสเกลของตัวเลขในแต่ละชั้น | ค่าระเบิดหรือดับกลางทาง |
| Multi-head attention | มองหากันหลายแบบพร้อมกันในชั้นเดียว | จับความสัมพันธ์ได้แบบเดียวต่อชั้น |
| Positional encoding | บอกว่าโทเค็นไหนอยู่ตำแหน่งไหน | แยกลำดับคำไม่ออก |
| MLP ขยาย 4 เท่า | ที่ให้แต่ละโทเค็นคิดของตัวเอง | มีแต่การรับส่ง ไม่มีการคิด |
สองชิ้นแรกคือคำตอบข้อที่สองของปริศนาในบทที่ 1 (เรื่องความง่ายในการเทรน) และบทที่ 11 จะให้คุณพิสูจน์มันด้วยการรันโค้ดเอง ไม่ใช่เชื่อตามตาราง
💡 Multi-head แปลว่าอะไรจริง ๆ — แทนที่จะให้แต่ละชั้นมองหากันได้แบบเดียว เราแบ่งช่องข้อมูลออกเป็นหลายกลุ่ม แต่ละกลุ่มมองหากันเป็นเอกเทศ แล้วเอาผลมารวมกัน เหมือนอ่านเอกสารเดียวกันด้วยคนหลายคนที่ได้รับคำสั่งให้จับใจความคนละแบบ แล้วเอาบันทึกของทุกคนมารวม — คนหนึ่งดูว่าประธานอยู่ไหน อีกคนดูว่าคำไหนขยายคำไหน