สถาปัตยกรรม Transformer คือการออกแบบโครงข่ายประสาทเทียมที่สร้างขึ้นรอบแนวคิด self-attention แทนที่จะพึ่งการประมวลผลแบบทีละขั้นเป็นหลัก มันเปิดโอกาสให้แต่ละโทเค็นดึงข้อมูลจากโทเค็นอื่นที่เกี่ยวข้องในลำดับได้โดยตรง

นี่จึงเป็นเหตุผลที่ Transformer ทำงานได้ดีมากกับภาษาและงานลำดับข้อมูลอื่น ๆ หากคำหนึ่งขึ้นอยู่กับอีกคำที่อยู่ไกลออกไป attention จะสร้างเส้นทางตรงระหว่างคำทั้งสองให้โมเดล

ความหมายของสถาปัตยกรรม Transformer

Transformer block ไม่ได้มีแค่การใช้สูตรเดียว แต่ self-attention คือแนวคิดหลักที่สุด ใน self-attention แต่ละโทเค็นจะสร้างเวกเตอร์ 3 แบบ:

  • query ซึ่งแทนสิ่งที่โทเค็นนี้กำลังมองหา
  • key ซึ่งแทนสิ่งที่โทเค็นนี้เสนอไว้เพื่อใช้จับคู่
  • value ซึ่งเป็นข้อมูลที่สามารถส่งต่อได้

ถ้าจัดตัวแทนของโทเค็นไว้ในเมทริกซ์ XX โดยทั่วไป attention head หนึ่งตัวจะสร้าง

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \qquad K = XW_K, \qquad V = XW_V

โดยที่ WQW_Q, WKW_K และ WVW_V เป็นเมทริกซ์ที่เรียนรู้ได้

สูตรมาตรฐานของ scaled dot-product attention คือ

Attention(Q,K,V)=softmax ⁣(QKTdk)V\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)V

ในที่นี้ dkd_k คือมิติของ key การหารด้วย dk\sqrt{d_k} ช่วยไม่ให้คะแนน dot product ดิบมีค่ามากเกินไปเมื่อมิติเพิ่มขึ้น

softmax จะถูกใช้ทีละแถว แต่ละแถวตอบคำถามของโทเค็นหนึ่งตัวว่า “ฉันควรให้ความสนใจกับโทเค็นอื่นมากแค่ไหน?”

self-attention ทำงานอย่างไรแบบภาษาง่าย ๆ

โดยทั่วไป self-attention ไม่ได้เลือกโทเค็นเดียวแล้วมองข้ามที่เหลือ แต่มันสร้างค่าเฉลี่ยถ่วงน้ำหนักของเวกเตอร์ value

ถ้าโทเค็นหนึ่งจับคู่กับ key ของอีกโทเค็นได้ดี โทเค็นนั้นก็จะได้ค่าน้ำหนักมากขึ้น ถ้าจับคู่ได้ไม่ดี ค่าน้ำหนักก็จะน้อยลง ดังนั้นผลลัพธ์ของโทเค็นหนึ่งตัวจึงเป็นการผสมข้อมูลจากทั้งลำดับที่รับรู้บริบท

สิ่งนี้ช่วยเรื่องความสอดคล้องระหว่างประธานกับกริยา การอ้างอิงสรรพนาม และความสัมพันธ์ระยะไกลแบบอื่น ๆ โมเดลไม่จำเป็นต้องรอให้ข้อมูลเดินทางผ่านขั้นกลางหลายชั้นก่อนจึงจะใช้งานได้

ตัวอย่าง self-attention แบบคำนวณจริง

พิจารณา query หนึ่งตัวและโทเค็นผู้สมัครสองตัวใน attention head เดียว เพื่อให้คำนวณง่าย กำหนดให้ dk=1d_k = 1

สมมติว่าโทเค็นปัจจุบันมี query เป็น

q=[2]q = [2]

และโทเค็นผู้สมัครสองตัวมี

k1=[2],k2=[1]k_1 = [2], \qquad k_2 = [1]

พร้อมค่า value เป็น

v1=[10],v2=[4].v_1 = [10], \qquad v_2 = [4].

คะแนน attention ดิบคือ dot product:

qk1T=4,qk2T=2.qk_1^T = 4, \qquad qk_2^T = 2.

เนื่องจาก dk=1d_k = 1 ตัวคูณสเกลคือ 1=1\sqrt{1} = 1 ดังนั้นคะแนนหลังปรับสเกลยังคงเป็น 44 และ 22

จากนั้นใช้ softmax กับคะแนนทั้งสอง:

α1=e4e4+e20.881,α2=e2e4+e20.119.\alpha_1 = \frac{e^4}{e^4 + e^2} \approx 0.881, \qquad \alpha_2 = \frac{e^2}{e^4 + e^2} \approx 0.119.

ผลลัพธ์ของ attention คือการรวมแบบถ่วงน้ำหนัก

α1v1+α2v2=0.881(10)+0.119(4)9.29.\alpha_1 v_1 + \alpha_2 v_2 = 0.881(10) + 0.119(4) \approx 9.29.

แนวคิดสำคัญนั้นง่ายมาก: ผลลัพธ์จะอยู่ใกล้ v1v_1 มากกว่า เพราะ query จับคู่กับ k1k_1 ได้แรงกว่าที่จับคู่กับ k2k_2

นี่คือรูปแบบพื้นฐานที่เกิดขึ้นภายในโมเดลที่ใหญ่กว่ามาก Transformer จริงทำสิ่งนี้ในมิติที่สูงกว่าและกับหลายโทเค็นพร้อมกัน แต่แนวคิดทางคณิตศาสตร์ยังเหมือนเดิม

มีอะไรอีกบ้างภายใน Transformer block

Transformer ไม่ได้มีแค่สูตร attention สูตรเดียว โดยทั่วไปบล็อกมาตรฐานจะประกอบด้วย:

  • multi-head attention เพื่อให้โมเดลเรียนรู้ความสัมพันธ์หลายรูปแบบได้พร้อมกัน
  • position-wise feedforward network ซึ่งแปลงตัวแทนของแต่ละโทเค็นหลังจาก attention
  • residual connections ซึ่งช่วยรักษาและปรับแต่งข้อมูลข้ามหลายชั้น
  • layer normalization ซึ่งช่วยให้การฝึกเสถียรมากขึ้น

ในสถาปัตยกรรม Transformer ดั้งเดิมสำหรับงาน sequence-to-sequence โมเดลจะมีทั้ง encoder stack และ decoder stack

  • encoder ใช้ self-attention กับลำดับข้อมูลขาเข้า
  • decoder ใช้ masked self-attention เพื่อไม่ให้ตำแหน่งหนึ่งมองไปยังโทเค็นผลลัพธ์ในอนาคต
  • decoder ยังสามารถใช้ cross-attention ได้ โดย query มาจาก decoder ส่วน key และ value มาจากผลลัพธ์ของ encoder

language model สมัยใหม่จำนวนมากใช้เฉพาะฝั่ง decoder เท่านั้น แนวคิด attention หลักยังคงอยู่ แต่สถาปัตยกรรมโดยรวมถูกปรับให้เหมาะกับการทำนายโทเค็นถัดไป

ทำไม Transformer ต้องมีข้อมูลตำแหน่ง

attention เพียงอย่างเดียวมีสมบัติ permutation-equivariant เมื่อเทียบกับโทเค็นขาเข้า พูดง่าย ๆ คือ ถ้าคุณใช้ attention กับชุดเวกเตอร์โทเค็นเดิมโดยไม่เพิ่มข้อมูลตำแหน่ง โมเดลจะไม่รู้โดยธรรมชาติว่าโทเค็นใดมาก่อน

นั่นจึงเป็นเหตุผลที่ Transformer ต้องเพิ่มข้อมูลตำแหน่ง เช่น learned position embeddings หรือ positional encodings หากไม่มีสัญญาณเพิ่มเติมนี้ งานที่ไวต่อลำดับอย่างภาษา จะยากต่อการสร้างแบบจำลองให้ถูกต้องมาก

ความเข้าใจผิดที่พบบ่อยเกี่ยวกับสถาปัตยกรรม Transformer

คิดว่า attention คือทั้งหมดของ Transformer

มันคือแนวคิดหลัก แต่สถาปัตยกรรมยังต้องอาศัย feedforward layers, residual paths, normalization และข้อมูลตำแหน่งด้วย

สับสนระหว่าง self-attention กับ cross-attention

ใน self-attention นั้น QQ, KK และ VV มาจากลำดับเดียวกัน ใน cross-attention ทั้งสามตัวไม่ได้มาจากแหล่งเดียวกันทั้งหมด

ลืมบทบาทของ masking

decoder-only language model ต้องใช้ causal masking ระหว่างการฝึกและการอนุมาน เพื่อไม่ให้โทเค็นหนึ่งสนใจโทเค็นในอนาคต

มองว่าน้ำหนัก attention คือคำอธิบายที่สมบูรณ์

ค่าน้ำหนัก attention อาจให้ข้อมูลที่มีประโยชน์ แต่ไม่ใช่หลักฐานสมบูรณ์ของเหตุผลในการตัดสินใจของโมเดล พฤติกรรมสุดท้ายยังขึ้นอยู่กับเวกเตอร์ value, ชั้นถัด ๆ ไป และการแปลงแบบไม่เชิงเส้น

โมเดล Transformer ถูกใช้เมื่อใด

Transformer ถูกใช้อย่างแพร่หลายใน language modeling, การแปลภาษา, การสรุปความ, การสร้างโค้ด, งานเสียงพูด และงานด้านภาพจำนวนมาก มันทำงานได้ดีเป็นพิเศษเมื่อความสัมพันธ์ภายในลำดับหรือชุดข้อมูลสำคัญกว่ารูปแบบเฉพาะที่อยู่ใกล้กัน

แต่มันไม่ใช่เวทมนตร์สำหรับทุกสถานการณ์ สำหรับชุดข้อมูลที่เล็กมาก ข้อจำกัดด้านเวลาจริงที่เข้มงวด หรือปัญหาที่โครงสร้างเชิงเฉพาะที่สำคัญที่สุด สถาปัตยกรรมแบบอื่นก็อาจเหมาะกว่าได้

ลองทำโจทย์ที่คล้ายกัน

ลองเลือกวลีสั้น ๆ ที่มีสามคำ แล้วโฟกัสที่คำหนึ่ง ตัดสินใจว่าคำอื่นคำใดควรได้ค่าน้ำหนัก attention สูง และเพราะอะไร จากนั้นร่างตัวอย่าง query-key-value เล็ก ๆ ให้สอดคล้องกับสัญชาตญาณนั้น

ถ้าต้องการไปอีกขั้น ลองคำนวณผลลัพธ์ attention ขนาดเล็กด้วยมือหนึ่งครั้ง นั่นมักเป็นเส้นทางที่เร็วที่สุดจาก “ฉันรู้สูตร” ไปสู่ “ฉันเข้าใจว่าสถาปัตยกรรมนี้กำลังทำอะไร”

ต้องการความช่วยเหลือในการแก้โจทย์?

อัปโหลดคำถามของคุณแล้วรับคำตอบแบบทีละขั้นตอนที่ผ่านการตรวจสอบในไม่กี่วินาที

เปิด GPAI Solver →