Encoder
- อธิบายกระบวนการแปลงข้อความเป็นเวกเตอร์ และกระบวนการเพิ่มข้อมูลตำแหน่งลงใน embedding ที่ได้จากกระบวนการนั้น
- เป้าหมายคือการสร้าง embedding ที่จับข้อมูลเชิงความหมายของข้อความอินพุต
1. Text Embedding
- แปลง "Hello World" เป็นเวกเตอร์เพื่อสร้าง embedding
- กำหนดค่าตามใจให้แต่ละโทเคนเพื่อสร้างเวกเตอร์
2. Positional Encoding
- เพิ่ม positional encoding ลงใน embedding เพื่อใส่ข้อมูลตำแหน่งของคำ
- ใช้เวกเตอร์แบบคงที่เพื่อกำหนดชุดตัวเลขที่มีรูปแบบเฉพาะและสม่ำเสมอให้แต่ละตำแหน่ง
3. การรวม Positional Encoding กับ Embedding
- นำ positional encoding มาบวกกับ embedding เพื่อสร้างเมทริกซ์ใหม่สำหรับใช้เป็นอินพุตของ encoder
Self-attention
- อธิบาย attention ซึ่งเป็นกลไกที่ทำให้โมเดลสามารถโฟกัสกับบางส่วนของอินพุตได้
- ใช้ multi-head attention เพื่อให้สามารถโฟกัสข้อมูลพร้อมกันในพื้นที่การแทนความหมายที่หลากหลาย
4.1 การกำหนดเมทริกซ์
- กำหนดเมทริกซ์ K, V, Q สำหรับแต่ละ attention head
4.2 การคำนวณคีย์ คิวรี และค่า
- คำนวณเมทริกซ์ key, query และ value โดยนำ embedding อินพุตคูณกับเมทริกซ์น้ำหนัก
4.3 การคำนวณ Attention
- คำนวณ inner product ของ query กับแต่ละ key vector แล้วหารผลลัพธ์ด้วยรากที่สองของมิติของ key vector
- ใช้ฟังก์ชัน softmax เพื่อให้ได้น้ำหนัก attention
- คูณน้ำหนัก attention กับแต่ละ value vector
Feed-forward layer
- ใน encoder จะมีโครงข่ายประสาทแบบ feed-forward ตามหลัง self-attention layer
- โครงข่ายนี้ใช้การแปลงเชิงเส้นสองครั้งและฟังก์ชันกระตุ้น ReLU
5.1 Feed-forward Layer พื้นฐาน
- linear layer แรกจะขยายมิติของอินพุต จากนั้นใช้ฟังก์ชันกระตุ้น ReLU แล้ว linear layer ที่สองจะลดมิติกลับสู่เดิม
5.2 การรวมทุกขั้นตอนของ Encoder
- เขียนโค้ด encoder block ที่รวมทั้ง multi-head attention และ feed-forward layer
5.3 Residual Connection และ Layer Normalization
- residual connection คือการนำอินพุตของเลเยอร์มาบวกกับเอาต์พุต และ layer normalization คือเทคนิคการทำ normalization กับอินพุตของเลเยอร์
ความเห็นของ GN⁺
- บทความนี้อธิบายคณิตศาสตร์ที่ซับซ้อนให้เรียบง่ายลง เพื่อช่วยให้เข้าใจโมเดล Transformer ในเชิงคณิตศาสตร์
- โดยเฉพาะอย่างยิ่ง ช่วยให้เข้าใจหลักการทำงานของ self-attention mechanism และโครงข่ายประสาทแบบ feed-forward
- แสดงให้เห็นว่าเทคนิคอย่าง residual connection และ layer normalization มีส่วนช่วยต่อเสถียรภาพและประสิทธิภาพของโครงข่ายประสาทอย่างไร พร้อมมอบมุมมองต่อวิธีแก้ปัญหาการฝึกของโครงข่ายประสาทเชิงลึก
1 ความคิดเห็น
ความเห็นจาก Hacker News
"ความลึกลับ" ของทรานส์ฟอร์เมอร์คือ แทนที่จะใช้ลำดับเชิงเส้นของน้ำหนักคงที่และค่าในแต่ละเลเยอร์ มันใช้เมทริกซ์ 3 ชุดที่ได้จากการคูณน้ำหนักที่เรียนรู้มาจากอินพุตเดียวกัน แล้วนำเมทริกซ์เหล่านี้มาคูณกันเอง วิธีนี้ทำให้ประมวลผลแบบขนานได้มากขึ้น แต่ก็มีข้อจำกัดมาก เพราะสูตร attention นั้นเป็นแบบคงที่
ถ้าต้องการแนวทางที่แห้งกว่า เป็นทางการกว่า และกระชับกว่า ให้ดู "The Transformer Model in Equations" ของ John Thickstun เนื้อหาทั้งหมดอยู่ในหน้าเดียวโดยใช้สัญลักษณ์ทางคณิตศาสตร์มาตรฐาน
พออ่านบทความแล้วก็เกิดคำถามขึ้นมา
อยากหางานวิจัยหรือบทความที่อธิบายว่าทำไมทรานส์ฟอร์เมอร์ซึ่งทำงานเป็นเพียง "ตัวทำนายโทเค็นถัดไป" ถึงยังจัดการกับคำหรือ subword/token ที่ไม่อยู่ในชุดข้อมูลฝึกได้
บทช่วยสอนทรานส์ฟอร์เมอร์อาจเป็นบทช่วยสอน monad แบบใหม่ก็ได้ เป็นแนวคิดที่เข้าใจยาก แต่ก็เหมือนหลายอย่างในวิทยาการคอมพิวเตอร์ ที่ต้องพยายามทำความเข้าใจและฝึกกับตัวอย่างถึงจะเข้าใจ
ฉันรู้จักคำศัพท์บางคำ
ในฐานะคนที่เคยเขียน ANN ตั้งแต่ต้นโดยไม่ใช้ TensorFlow คำอธิบายนี้ก็ยังทำให้งงอยู่ดี
ชอบเว็บไซต์ Quarto มาก เห็นผู้ใช้ Python ใช้ Quarto เพื่อการเผยแพร่มากขึ้น
สงสัยว่าในขั้นตอนที่ 7 ของดีโคเดอร์ ควรเป็น
Z_encoder_decoder = layer_norm(Z_encoder_decoder + Z_self_attention)แทนZ_encoder_decoder = layer_norm(Z_encoder_decoder + Z)หรือไม่ และในขั้นตอนที่ 8 ของดีโคเดอร์มีlayer_normหลุดหายไปหรือเปล่าสงสัยว่า LLM ใช้โครงข่ายประสาทเทียมหรือไม่ และอะไรคือสิ่งที่ประกอบกันเป็น "นิวรอน" กล่าวคือมีโครงสร้างโค้ดที่รองรับนิวรอนอยู่หรือไม่ หรือมันเป็น "แค่" คณิตศาสตร์ที่ซับซ้อนเท่านั้น