คู่มือแบบเห็นภาพที่เข้าใจง่ายเพื่อทำความเข้าใจ NLP ที่ล้ำสมัย

GPT-3, BERT, XLNet ทั้งหมดนี้เป็นเทคโนโลยีที่ทันสมัยในการประมวลผลภาษาธรรมชาติ (NLP) และทั้งหมดใช้ส่วนประกอบทางสถาปัตยกรรมพิเศษที่เรียกว่า Transformer

ไม่ต้องสงสัยเลยว่า Transformers เป็นหนึ่งในการพัฒนาที่ใหญ่ที่สุดใน AI ในทศวรรษที่ผ่านมา ซึ่งนำพาเราเข้าใกล้อนาคตที่ไม่อาจจินตนาการของมนุษยชาติได้มากขึ้น

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

ทุกคนสามารถคาดหวังที่จะเข้าใจแนวคิดของหม้อแปลงไฟฟ้าโดยไม่เข้าใจความสนใจก่อนและความสนใจมาจากไหน? มันเป็นไปไม่ได้.

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

เราจะครอบคลุมถึง:

Attention
- Attention vs Recurrence
Positional Encoding
Self-Attention
Multi-Head Attention

ความสนใจ

กลไกความสนใจเกิดขึ้นก่อนหม้อแปลง และเดิมใช้เพื่อปรับปรุงความล้ำสมัยก่อนหน้านี้ใน NLP นั่นคือโครงข่ายประสาทที่เกิดซ้ำ (RNN)

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

มีการเพิ่มโครงข่ายประสาทเทียมที่เรียบง่ายและหนาแน่นสองชั้น ชั้นหนึ่งสำหรับตัวเข้ารหัสที่ใช้ค่าอินพุตทั้งหมด และอีกชั้นหนึ่งสำหรับตัวถอดรหัส ซึ่งจะส่งต่อสถานะที่ซ่อนอยู่ของขั้นตอนเวลาปัจจุบันไปยังการดำเนินการให้ความสนใจ [1]

การดำเนินการให้ความสนใจจะสร้างคะแนน 'การจัดตำแหน่ง' ซึ่งต่อเข้ากับสถานะที่ซ่อนอยู่ของตัวถอดรหัส และการดำเนินการ softmax ดำเนินการเพื่อสร้างความน่าจะเป็นเอาต์พุต

ข้อมูลจะถูกส่งผ่านระหว่าง RNN และตัวเข้ารหัส-ตัวถอดรหัสผ่านการสืบค้น คีย์ และเทนเซอร์ค่า การสืบค้นจะถูกส่งจากสถานะที่ซ่อนอยู่ของตัวถอดรหัส ในขณะที่เทนเซอร์ของคีย์-ค่าจะถูกส่งจากสถานะที่ซ่อนของตัวเข้ารหัส

เมื่อพบว่าการแสดงคำมีความคล้ายคลึงกันสูง (การจัดตำแหน่ง) การดำเนินการให้ความสนใจจะให้คะแนนสูง และรายการที่มีความคล้ายคลึงกันต่ำจะได้คะแนนต่ำ

กลไกนี้ก่อให้เกิดพฤติกรรมที่เรียกว่าความสนใจ โดยที่หน่วยในเลเยอร์เอาท์พุตสามารถมุ่งเน้นไปที่หน่วยที่เกี่ยวข้องในเลเยอร์อินพุตโดยเฉพาะ

ความสนใจเทียบกับการเกิดซ้ำ

ก่อนที่จะมีหม้อแปลงไฟฟ้าและความสนใจ เรามี RNN เครือข่ายเหล่านี้เหมาะสมกับงานด้านภาษาเป็นอย่างดีเนื่องจากมีการใช้งานซ้ำ

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

อย่างไรก็ตาม กลไกความสนใจใหม่นี้พิสูจน์แล้วว่าทรงพลังมาก มีประสิทธิภาพเพียงพอสำหรับรายงานปี 2017 ชื่อ Attention Is All You Need เพื่อแนะนำโมเดลที่ไม่มีการเกิดซ้ำ โดยแทนที่ทั้งหมดด้วยความสนใจ [2] ซึ่งเป็นหม้อแปลงไฟฟ้ารุ่นแรก

กลไกสามประการที่ทำให้ความสนใจทำงานโดยไม่จำเป็นต้องเกิดซ้ำ — (1) การเข้ารหัสตำแหน่ง (2) ความสนใจหลายหัว และ (3) การเอาใจใส่ตนเอง

การเข้ารหัสตำแหน่ง

ดังที่เราได้กล่าวไปแล้ว ก่อนหม้อแปลง ความล้ำหน้าใน NLP คือ RNN โดยเฉพาะอย่างยิ่ง RNN ที่ใช้หน่วยหน่วยความจำระยะสั้นระยะยาว (LSTM)

โดยธรรมชาติแล้ว เครือข่ายเหล่านี้สามารถพิจารณาลำดับของคำโดยการส่งสถานะเอาต์พุตของหนึ่งหน่วย (ที่ t-1) ไปยังสถานะอินพุตของหน่วยต่อไปนี้ (ที่ t อีเอ็ม>)

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

เพื่อเก็บข้อมูลตำแหน่งของคำ การเข้ารหัสตำแหน่งจะถูกเพิ่มให้กับคำที่ฝังก่อนที่จะเข้าสู่กลไกความสนใจ

แนวทางที่ใช้ในกระดาษ Attention Is All You Need คือการสร้างฟังก์ชันไซน์ซอยด์ที่แตกต่างกันสำหรับทุกมิติในมิติที่ฝัง

จำได้ไหมก่อนที่เราจะพูดว่า word2vec ได้แนะนำแนวคิดในการแสดงคำเป็นตัวเลขจำนวนมากในเวกเตอร์ขนาด 50 ถึง 100 มิติ ที่นี่ ในวาสวานี และคณะ กระดาษ พวกเขาใช้แนวคิดเดียวกัน แต่เพื่อแสดงตำแหน่งของคำ

อย่างไรก็ตาม ในครั้งนี้ แทนที่จะคำนวณค่าเวกเตอร์โดยใช้แบบจำลอง ML ค่าจะถูกคำนวณโดยใช้ฟังก์ชันไซน์ซอยด์ที่แก้ไข

ดัชนีเวกเตอร์แต่ละตัวถูกกำหนดฟังก์ชันไซน์-โคไซน์-ไซน์แบบสลับกัน (ดัชนี 0 คือไซน์ ดัชนี 1 คือโคไซน์) ถัดไป เมื่อค่าดัชนีเพิ่มขึ้นจากศูนย์ไปทาง d (มิติการฝัง) ความถี่ของฟังก์ชันไซน์ซอยด์จะลดลง

ผลลัพธ์สุดท้ายก็เหมือนกับนาฬิกาที่มีเข็มหลายเข็ม แต่ละโทเค็นที่เราป้อนจะก้าวไปข้างหน้าหนึ่งก้าว เข็มแรก (ดัชนี 0, ไซน์) เริ่มชี้ไปที่ 12 และหมุนรอบนาฬิกาแปดครั้งใน 100 ก้าวเพื่อไปถึงจุดสิ้นสุดของลำดับของเรา

เข็มถัดไป (ดัชนี 1 โคไซน์) เริ่มชี้ไปที่ 6 และหมุนรอบนาฬิกาน้อยกว่าแปดครั้งเล็กน้อย (เช่น 7.98 เท่า) ในระหว่าง 100 ขั้นเวลา

การหมุน (ความถี่) นี้จะลดลงเมื่อเราเพิ่มหมายเลขดัชนีของมิติการฝังของเรา เมื่อไปถึงดัชนีสุดท้าย (512ในกระดาษของ A. Vaswani et al.) เข็มจะเคลื่อนจาก 12 นาฬิกาเป็น 0.001 วินาทีผ่าน 12 วินาทีในระหว่าง 100 สเต็ปเวลา

การพล็อตเข็มนาฬิกาทั้ง 512 เข็มในรูปแบบไซน์ซอยด์มีลักษณะดังนี้:

ถ้าเราหยุดนาฬิกาที่ขั้นเวลาใดขั้นหนึ่ง ตำแหน่ง 20 การเข้ารหัสตำแหน่งของเราสำหรับขั้นเวลานั้นจะเป็นเวกเตอร์ของค่าทั้งหมดที่เข็มนาฬิกาชี้ไป

เราสามารถนำพล็อตไซน์ซอยด์ที่ไม่เกะกะแบบเดียวกันจากด้านบนมาสู่แผนที่ความร้อนที่เข้าใจง่ายกว่า:

เราจะเห็นความถี่ที่สูงขึ้นในมิติการฝังด้านล่าง (ซ้าย) ซึ่งลดลงเมื่อมิติการฝังเพิ่มขึ้น ประมาณมิติที่ 24 ความถี่ลดลงมากจนเราไม่เห็นการเปลี่ยนแปลงใดๆ ในคลื่นไซน์-โคไซน์ที่เหลือ (สลับกัน) อีกต่อไป

สุดท้ายนี้ การเข้ารหัสตำแหน่งเหล่านี้จะถูกเพิ่มเข้าไปในคำว่า embeddings

ในการบวกเวกเตอร์ทั้งสองนี้เข้าด้วยกัน เวกเตอร์จะต้องมีจำนวนมิติเท่ากัน วาสวานี และคณะ ใช้เวกเตอร์การฝัง 512 สำหรับทั้งคำและการฝังตำแหน่ง [2]

การเอาใจใส่ตนเอง

ก่อนหน้านี้ เรากำลังคำนวณความสนใจโดยใช้ทั้งเลเยอร์อินพุตและเอาท์พุตของโมเดล การเอาใจใส่ตนเองทำให้เราสามารถใช้เพียงหนึ่งในเลเยอร์เหล่านี้

ดังนั้น ก่อนที่ Key และ Value จะถูกแยกออกจากตัวเข้ารหัสอินพุตและ Query จากสถานะที่ซ่อนอยู่ของเอาต์พุต ตอนนี้เราได้รับ ทั้งสามจากอาร์เรย์ฝังอินพุตเดียว

การใส่ใจในตนเองทำให้อินพุตโต้ตอบกันได้ ซึ่งหมายความว่าเราสามารถเข้ารหัส "การจัดตำแหน่ง" ระหว่างคำต่างๆ ในอินพุตเดียวกันได้ ตัวอย่างเช่น:

ภาพแรก (ซ้าย) แสดงถึงความสนใจของคำว่า 'มัน' เน้นไปที่ 'สัตว์' เมื่อคำสุดท้ายคือ 'เหนื่อย' เมื่อคำสุดท้ายเปลี่ยนเป็น 'กว้าง' ความใส่ใจของ 'มัน' จะเปลี่ยนโฟกัสไปที่ 'ถนน'

ความสัมพันธ์ระหว่างคำนี้กำลังเข้ารหัสลงในเทนเซอร์เมื่อส่งผ่านหน่วยการเอาใจใส่ตนเอง

ความสนใจปกติจะดำเนินการระหว่างลำดับอินพุตและเอาต์พุตเท่านั้น ดังที่แสดงในแผนที่ความร้อนด้านบน

ความสนใจหลายหัว

ความสนใจแบบหลายหัวเป็นปัจจัยสำคัญต่อความสำเร็จของหม้อแปลงตัวแรก หากไม่มีสิ่งนี้ ผลลัพธ์ก็แสดงให้เห็นว่ามันทำงานได้แย่กว่ารุ่นก่อน ๆ [2]

หลังจากที่เราสร้างเทนเซอร์ที่เข้ารหัสตำแหน่งแล้ว เราก็ส่งพวกมันไปยังหน่วยความสนใจแบบหลายหัว ส่วน 'หลายหัว' หมายความว่าเรากำลังใช้งานหน่วยการดูแลตนเองหลายชุดขนานกัน

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

ตอนนี้ พลังในการใช้ความสนใจแบบหลายหัวมาจากการรวม สเปซย่อยตัวแทน หลายรายการพร้อมกัน ซึ่งจะทำให้ช่องย่อยหนึ่งสามารถระบุความสัมพันธ์ระหว่าง มัน และ เหนื่อย และอีกช่องหนึ่งเกี่ยวกับความสัมพันธ์ระหว่าง มัน และ สุนัข .

ไม่จำเป็นต้องให้ความสนใจแบบหลายหัวในรุ่นหม้อแปลงไฟฟ้า BERT — หนึ่งในโมเดล NLP ที่ทรงพลังที่สุดในโลก โดยจะเรียงหน่วยความสนใจแบบหัวเดียวและหน่วยฟีดไปข้างหน้าเป็นอนุกรม — แต่ไม่ได้ใช้ความสนใจแบบหลายหัว [4]

นั่นคือทั้งหมดสำหรับการแนะนำหม้อแปลงนี้ เราได้กล่าวถึง:

  • RNN และกลไกตัวเข้ารหัสและตัวถอดรหัส
  • ความสนใจในตัวเข้ารหัส-ตัวถอดรหัส
  • ความสนใจและหม้อแปลงไฟฟ้า
  • การเข้ารหัสตำแหน่ง
  • ความสนใจหลายหัว
  • การเอาใจใส่ตนเอง

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

ฉันหวังว่าบทความนี้จะช่วยให้คุณเข้าใจแนวคิดเหล่านี้ได้ดีขึ้นและวิธีที่แนวคิดเหล่านี้เข้ากันได้ใน Transformer หากคุณต้องการมากกว่านี้ ฉันจะโพสต์บทช่วยสอนการเขียนโปรแกรม/ML บน YouTube ที่นี่!

หากคุณมีคำถาม แนวคิด หรือข้อเสนอแนะ โปรดติดต่อผ่านทาง Twitter หรือในความคิดเห็นด้านล่าง

ขอบคุณที่อ่าน!

อ้างอิง

[1] D. Bahdanau และคณะ การแปลด้วยเครื่องประสาทโดยการเรียนรู้ร่วมกันเพื่อจัดแนวและแปล (2015), ICLR

[2] A. Vaswani และคณะ ความสนใจคือสิ่งที่คุณต้องการ (2017), NeurIPS

(3) J. Uszkoreit, "หม้อแปลงไฟฟ้า: สถาปัตยกรรมโครงข่ายประสาทเทียมแบบใหม่เพื่อการทำความเข้าใจภาษา" (2017), บล็อก Google AI

[4] J. Devlin และคณะ BERT: การฝึกอบรมล่วงหน้าของหม้อแปลงสองทิศทางเชิงลึกเพื่อการทำความเข้าใจภาษา (2019), ACL

(5) J. Alammar, The Illustrated Transformer (2018), GitHub

[6] I. Sutskever และคณะ ลำดับการเรียนรู้ตามลำดับด้วยโครงข่ายประสาทเทียม (2014), NeurIPS

[7] K. Cho et al., การเรียนรู้การแทนวลีโดยใช้ RNN Encoder-Decoder สำหรับการแปลด้วยเครื่องทางสถิติ (2014), EMNLP

🤖 ส่วนลด 70% สำหรับหลักสูตร NLP พร้อม Transformers

หากคุณต้องการเข้าใจต้นกำเนิดของ Transformers ตลอดทศวรรษที่ผ่านมาของ NLP มากขึ้น ฉันจะกล่าวถึงสิ่งนั้นในบทความนี้:



*ภาพทั้งหมดโดยผู้เขียน ยกเว้นในกรณีที่ระบุไว้เป็นอย่างอื่น