โมเดลภาษาขนาดใหญ่ (LLM)
Note
ดูแท็บ ข้อความและรูปภาพ สําหรับรายละเอียดเพิ่มเติม!
หัวใจสําคัญของ Generative AI โมเดลภาษาขนาดใหญ่ (LLM) และความสัมพันธ์ที่กะทัดรัดกว่า โมเดลภาษาขนาดเล็ก (SLM) - ห่อหุ้มความสัมพันธ์ทางภาษาและความหมายระหว่างคําและวลีในคําศัพท์ โมเดลสามารถใช้ความสัมพันธ์เหล่านี้เพื่อให้เหตุผลเกี่ยวกับการป้อนข้อมูลภาษาธรรมชาติและสร้างการตอบสนองที่มีความหมายและเกี่ยวข้อง
โดยพื้นฐานแล้ว LLM ได้รับการฝึกอบรมเพื่อสร้างความสมบูรณ์ตามข้อความแจ้ง คิดว่าพวกเขาเป็นตัวอย่างที่ทรงพลังสุด ๆ ของคุณสมบัติการคาดเดาข้อความบนโทรศัพท์มือถือหลายรุ่น พร้อมท์จะเริ่มลําดับของการคาดคะเนข้อความที่ส่งผลให้เสร็จสมบูรณ์ตามความหมาย เคล็ดลับคือแบบจําลองเข้าใจความสัมพันธ์ระหว่างคําและสามารถระบุได้ว่าคําใดในลําดับจนถึงตอนนี้มีแนวโน้มที่จะมีอิทธิพลต่อคําถัดไปมากที่สุด และใช้สิ่งนั้นเพื่อทํานายความต่อเนื่องที่เป็นไปได้มากที่สุดของลําดับ
ตัวอย่างเช่น พิจารณาประโยคต่อไปนี้:
ฉันได้ยินเสียงสุนัขเห่าเสียงดังใส่แมว
ตอนนี้ สมมติว่าคุณได้ยินเพียงไม่กี่คําแรก: "ฉันได้ยินเสียงสุนัข ... " คุณรู้ว่าคําเหล่านี้บางคําเป็นเบาะแสที่เป็นประโยชน์มากกว่าคําอื่นๆ คุณรู้ว่า "ได้ยิน" และ "สุนัข" เป็นตัวบ่งชี้ที่ชัดเจนของสิ่งที่จะเกิดขึ้นต่อไป และนั่นช่วยให้คุณจํากัดความน่าจะเป็นให้แคบลง คุณรู้ว่ามีโอกาสดีที่ประโยคจะดําเนินต่อไปเป็น "ฉันได้ยินเสียงสุนัขเห่า"
คุณสามารถเดาคําถัดไปได้เพราะ:
- คุณมีคําศัพท์มากมายที่จะดึงออกมา
- คุณได้เรียนรู้โครงสร้างทางภาษาทั่วไป ดังนั้นคุณจึงรู้ว่าคําเกี่ยวข้องกันอย่างไรในประโยคที่มีความหมาย
- คุณมีความเข้าใจในแนวคิดเชิงความหมายที่เกี่ยวข้องกับคํา - คุณรู้ว่าสิ่งที่คุณ ได้ยิน ต้องเป็นเสียงบางประเภท และคุณรู้ว่ามีเสียงเฉพาะที่ สุนัขสร้างขึ้น
แล้วเราจะฝึกโมเดลให้มีความสามารถเดียวกันนี้ได้อย่างไร
โทเค็น
ขั้นตอนแรกคือการจัดหาคําศัพท์และวลีจํานวนมากให้กับโมเดล และเราหมายถึงใหญ่ LLM รุ่นล่าสุดมีคําศัพท์ที่ประกอบด้วยโทเค็นหลายแสนรายการ โดยอิงจากข้อมูลการฝึกอบรมจํานวนมากจากอินเทอร์เน็ตและแหล่งอื่นๆ
รอสักครู่หนึ่ง โทเค็น?
ในขณะที่เรามักจะคิดเกี่ยวกับภาษาในแง่ของคํา LLM จะแบ่งคําศัพท์ออกเป็นโทเค็น โทเค็นประกอบด้วยคํา แต่ยังรวมถึงคํา ย่อย (เช่น "un" ใน "ไม่น่าเชื่อ" และ "ไม่น่าเป็นไปได้") เครื่องหมายวรรคตอน และลําดับอักขระอื่นๆ ที่ใช้กันทั่วไป ขั้นตอนแรกในการฝึกโมเดลภาษาขนาดใหญ่คือการแบ่งข้อความการฝึกอบรมออกเป็นโทเค็นที่แตกต่างกัน และกําหนดตัวระบุจํานวนเต็มที่ไม่ซ้ํากันให้กับแต่ละตัวดังนี้:
- ฉัน (1)
- ได้ยิน (2)
- ก (3)
- สุนัข (4)
- เปลือกไม้ (5)
- เสียงดัง (6)
- ที่ (7)
- ก (3) กําหนดแล้ว
- แมว (8)
และอื่น ๆ
เมื่อคุณเพิ่มข้อมูลการฝึกอบรมมากขึ้น จะมีการเพิ่มโทเค็นเพิ่มเติมลงในคําศัพท์และตัวระบุที่กําหนด ดังนั้นคุณอาจลงเอยด้วยโทเค็นสําหรับคําต่างๆ เช่น ลูกสุนัขสเก็ตบอร์ดรถยนต์ และอื่นๆ
Note
ในตัวอย่างง่ายๆ นี้ เราได้แปลงข้อความตัวอย่างตามคํา ในความเป็นจริงจะมีคําย่อยเครื่องหมายวรรคตอนและโทเค็นอื่น ๆ
การแปลงโทเค็นด้วย หม้อแปลง
ตอนนี้เรามีชุดโทเค็นที่มี ID ที่ไม่ซ้ํากันแล้ว เราจําเป็นต้องหาวิธีเชื่อมโยงกัน ในการทําเช่นนี้ เรากําหนด เวกเตอร์ แต่ละโทเค็น (อาร์เรย์ของค่าตัวเลขหลายค่า เช่น [1, 23, 45]) เวกเตอร์แต่ละตัวมี องค์ประกอบ ตัวเลขหรือ มิติหลายรายการ และเราสามารถใช้สิ่งเหล่านี้เพื่อเข้ารหัสแอตทริบิวต์ทางภาษาและความหมายของโทเค็นเพื่อช่วยให้ข้อมูลจํานวนมากเกี่ยวกับ ความหมาย ของโทเค็นและความสัมพันธ์กับโทเค็นอื่นๆ ในรูปแบบที่มีประสิทธิภาพ
เราจําเป็นต้องแปลงการแสดงเวกเตอร์เริ่มต้นของโทเค็นให้เป็นเวกเตอร์ใหม่ที่มีลักษณะทางภาษาและความหมายฝังอยู่ในนั้น โดยอิงตามบริบทที่ปรากฏในข้อมูลการฝึกอบรม เนื่องจากเวกเตอร์ใหม่มีค่าความหมายฝังอยู่ในนั้น เราจึงเรียกมัน ว่าการฝังตัว
เราใช้โมเดลหม้อแปลง โมเดลประเภทนี้ประกอบด้วย "บล็อก" สองบล็อก:
- บล็อกตัวเข้ารหัสที่สร้างการฝังโดยใช้เทคนิคที่เรียกว่าความสนใจ เลเยอร์ความสนใจจะตรวจสอบโทเค็นแต่ละตัวตามลําดับ และกําหนดว่าโทเค็นนั้นได้รับอิทธิพลจากโทเค็นรอบตัวอย่างไร เพื่อให้กระบวนการเข้ารหัสมีประสิทธิภาพมากขึ้น จะใช้ความสนใจ แบบหลายหัว เพื่อประเมินองค์ประกอบหลายอย่างของโทเค็นแบบขนาน และกําหนดน้ําหนักที่สามารถใช้ในการคํานวณค่าองค์ประกอบเวกเตอร์ใหม่ ผลลัพธ์ของเลเยอร์ความสนใจจะถูกป้อนเข้าสู่โครงข่ายประสาทเทียมที่เชื่อมต่ออย่างสมบูรณ์เพื่อค้นหาการแสดงเวกเตอร์ที่ดีที่สุดของการฝัง
- เลเยอร์ ตัวถอดรหัส ที่ใช้การฝังที่คํานวณโดยตัวเข้ารหัสเพื่อกําหนดโทเค็นที่เป็นไปได้มากที่สุดถัดไปในลําดับที่เริ่มต้นโดยพรอมต์ ตัวถอดรหัสยังใช้ความสนใจและโครงข่ายประสาทเทียมแบบฟีดฟอร์เวิร์ดเพื่อทําการคาดการณ์
Note
เราได้ลดความซับซ้อนของสถาปัตยกรรมและกระบวนการของหม้อแปลงไฟฟ้าอย่างมากในคําอธิบายและไดอะแกรม อย่ากังวลมากเกินไปเกี่ยวกับรายละเอียดเฉพาะของวิธีการทํางานของความสนใจ - ประเด็นสําคัญคือช่วยจับลักษณะทางภาษาและความหมายของแต่ละโทเค็นตามบริบทที่ใช้ หากคุณต้องการเจาะลึกลงไปในสถาปัตยกรรมหม้อแปลงและวิธีใช้ความสนใจคุณสามารถอ่านต้นฉบับ
เวกเตอร์เริ่มต้นและการเข้ารหัสตําแหน่ง
ในขั้นต้น ค่าเวกเตอร์โทเค็นจะถูกกําหนดแบบสุ่ม ก่อนที่จะป้อนผ่านหม้อแปลงเพื่อสร้างเวกเตอร์การฝัง เวกเตอร์โทเค็นจะถูกป้อนเข้าไปในหม้อแปลงพร้อมกับ การเข้ารหัสตําแหน่ง ที่ระบุว่าโทเค็นปรากฏในลําดับของข้อความการฝึกอบรม (เราจําเป็นต้องทําเช่นนี้เนื่องจากลําดับที่โทเค็นปรากฏในลําดับนั้นเกี่ยวข้องกับความสัมพันธ์ระหว่างกัน) ตัวอย่างเช่น โทเค็นของเราอาจเริ่มต้นด้วยลักษณะดังนี้:
| สัญลักษณ์ | รหัสโทเค็น | ตำแหน่ง | เวกเตอร์ |
|---|---|---|---|
| I | 1 | 1 | [3, 7, 10] |
| ได้ ยิน | 2 | 2 | [2, 15, 1] |
| น. | 3 | 3 | [9, 11, 1] |
| หมา | 4 | 4 | [2, 7, 11] |
| เปลือก | 5 | 5 | [9, 12, 0] |
| ลั่น | 6 | 6 | [3, 8, 13] |
| ที่ | 7 | 7 | [5, 7, 10] |
| น. | 3 | 8 | [9, 11, 1] |
| แมว | 8 | 9 | [8, -6, 9 ] |
| ... | ... | ... | ... |
| ลูกหมา | 127 | 45 | [7, 7, -2 ] |
| car | 128 | 56 | [5, -5, 1 ] |
| สเกตบอร์ด | 129 | 67 | [4, 7, 14] |
Note
เราทําให้สิ่งต่าง ๆ เรียบง่ายโดยใช้เวกเตอร์ที่มีเพียงสามองค์ประกอบ (ซึ่งจะช่วยให้เราเห็นภาพในสามมิติในภายหลัง) ในความเป็นจริงเวกเตอร์มีองค์ประกอบหลายพันรายการ
ความสนใจและการฝัง
ในการกําหนดการแสดงเวกเตอร์ของโทเค็นที่มีข้อมูลบริบทที่ฝังตัว หม้อแปลงจะใช้เลเยอร์ความสนใจ เลเยอร์ความสนใจจะพิจารณาโทเค็นแต่ละตัวตามลําดับภายในบริบทของลําดับของโทเค็นที่ปรากฏ โทเค็นรอบ ๆ โทเค็นปัจจุบันจะถูกถ่วงน้ําหนักเพื่อสะท้อนถึงอิทธิพลของโทเค็น และน้ําหนักจะใช้ในการคํานวณค่าองค์ประกอบสําหรับเวกเตอร์การฝังของโทเค็นปัจจุบัน ตัวอย่างเช่น เมื่อพิจารณาโทเค็น "เห่า" ในบริบทของ "ฉันได้ยินเสียงสุนัขเห่า" โทเค็นสําหรับ "ได้ยิน" และ "สุนัข" จะถูกกําหนดน้ําหนักมากกว่า "ฉัน" หรือ "a" เนื่องจากเป็นตัวบ่งชี้ที่แข็งแกร่งกว่าสําหรับ "เห่า"
ในขั้นต้นโมเดลไม่ "รู้" ว่าโทเค็นใดมีอิทธิพลต่อผู้อื่น แต่เมื่อสัมผัสกับข้อความจํานวนมาก จึงสามารถเรียนรู้ซ้ําๆ ได้ว่าโทเค็นใดที่มักปรากฏพร้อมกัน และเริ่มค้นหารูปแบบที่ช่วยกําหนดค่าให้กับองค์ประกอบเวกเตอร์ที่สะท้อนถึงลักษณะทางภาษาและความหมายของโทเค็น โดยพิจารณาจากความใกล้ชิดและความถี่ในการใช้งานร่วมกัน กระบวนการนี้มีประสิทธิภาพมากขึ้นโดยใช้ความสนใจแบบ หลายหัว เพื่อพิจารณาองค์ประกอบต่างๆ ของเวกเตอร์แบบขนาน
ผลลัพธ์ของกระบวนการเข้ารหัสคือชุดของการฝัง เวกเตอร์ที่มีข้อมูลตามบริบทเกี่ยวกับความสัมพันธ์ของโทเค็นในคําศัพท์ หม้อแปลงจริงสร้างการฝังที่มีองค์ประกอบหลายพันรายการ แต่เพื่อให้สิ่งต่าง ๆ ง่ายขึ้นเรามายึดติดกับเวกเตอร์ที่มีเวกเตอร์เพียงสามตัวในตัวอย่างของเรา ผลลัพธ์ของกระบวนการเข้ารหัสคําศัพท์ของเราอาจมีลักษณะดังนี้:
| สัญลักษณ์ | รหัสโทเค็น | ฝัง |
|---|---|---|
| I | 1 | [2, 0, -1 ] |
| ได้ ยิน | 2 | [-2, 2, 4 ] |
| น. | 3 | [-3, 5, 5 ] |
| หมา | 4 | [10, 3, 2 ] |
| เปลือก | 5 | [9, 2, 10 ] |
| ลั่น | 6 | [-3, 8, 3 ] |
| ที่ | 7 | [-5, -1, 1] |
| แมว | 8 | [10, 3, 1] |
| ลูกหมา | 127 | [5, 3, 2 ] |
| car | 128 | [-2, -2, 1 ] |
| สเกตบอร์ด | 129 | [-3, -2, 2 ] |
| เปลือก | 203 | [2, -2, 3 ] |
หากคุณเป็นคนช่างสังเกต คุณอาจสังเกตเห็นว่าผลลัพธ์ของเรามีการฝังสองส่วนสําหรับโทเค็น "เปลือกไม้" สิ่งสําคัญคือต้องเข้าใจว่าการฝังเป็นตัวแทนของโทเค็นภายใน บริบทเฉพาะ และโทเค็นบางตัวอาจใช้เพื่อหมายถึงหลายสิ่งหลายอย่าง ตัวอย่างเช่น เสียงเห่าของสุนัขแตกต่างจากเปลือกของต้นไม้! โทเค็นที่ใช้กันทั่วไปในหลายบริบทสามารถสร้างการฝังได้หลายรายการ
เราสามารถคิดว่าองค์ประกอบของการฝังเป็นมิติในพื้นที่เวกเตอร์หลายมิติ ในตัวอย่างง่ายๆ การฝังของเรามีเพียงสามองค์ประกอบ ดังนั้นเราจึงสามารถเห็นภาพเป็นเวกเตอร์ในพื้นที่สามมิติได้ดังนี้:
เนื่องจากมิติข้อมูลถูกคํานวณโดยพิจารณาจากความสัมพันธ์ทางภาษาของโทเค็นที่ใช้ในบริบทที่คล้ายคลึงกัน (ดังนั้นจึงมีความหมายคล้ายกัน) จึงส่งผลให้เวกเตอร์มีทิศทางที่คล้ายคลึงกัน ตัวอย่างเช่น การฝังสําหรับ "สุนัข" และ "ลูกสุนัข" ชี้ไปในทิศทางเดียวกันไม่มากก็น้อย ซึ่งไม่แตกต่างจากการฝังสําหรับ "แมว" มากนัก แต่แตกต่างจากการฝัง "สเก็ตบอร์ด" หรือ "รถยนต์" มาก เราสามารถวัดความใกล้ชิดของโทเค็นในเชิงความหมายได้โดยการคํานวณ ความคล้ายคลึงกันของโคไซน์ ของเวกเตอร์
การคาดการณ์ความสําเร็จจากข้อความแจ้ง
ตอนนี้เรามีชุดของการฝังที่ห่อหุ้มความสัมพันธ์ตามบริบทระหว่างโทเค็นแล้ว เราจึงสามารถใช้บล็อก ตัวถอดรหัส ของหม้อแปลงเพื่อทํานายคําถัดไปซ้ําๆ ตามลําดับตาม ข้อความแจ้งเริ่มต้น
อีกครั้งที่ความสนใจถูกใช้เพื่อพิจารณาแต่ละโทเค็นในบริบท แต่คราวนี้บริบทที่จะพิจารณาสามารถรวมได้เฉพาะโทเค็นที่นําหน้าโทเค็นที่เราพยายามคาดการณ์เท่านั้น โมเดลตัวถอดรหัสได้รับการฝึกอบรมโดยใช้ข้อมูลที่เรามีลําดับทั้งหมดอยู่แล้วโดยใช้เทคนิคที่เรียกว่า ความสนใจที่ปิดบัง ซึ่งโทเค็นหลังโทเค็นปัจจุบันจะถูกละเว้น เนื่องจากเราทราบโทเค็นถัดไปอยู่แล้วในระหว่างการฝึกอบรม หม้อแปลงจึงสามารถเปรียบเทียบกับโทเค็นที่คาดการณ์ไว้ และปรับน้ําหนักที่เรียนรู้ในการทําซ้ําการฝึกอบรมในภายหลังเพื่อลดข้อผิดพลาดในแบบจําลอง
เมื่อคาดการณ์ความสําเร็จใหม่ซึ่งไม่ทราบโทเค็นถัดไปเลเยอร์ความสนใจจะคํานวณเวกเตอร์ที่เป็นไปได้สําหรับโทเค็นถัดไปและเครือข่ายฟีดฟอร์เวิร์ดจะใช้เพื่อช่วยกําหนดผู้สมัครที่เป็นไปได้มากที่สุด จากนั้นค่าที่คาดการณ์จะถูกเพิ่มลงในลําดับ และกระบวนการทั้งหมดจะทําซ้ําเพื่อทํานายโทเค็น ถัดไป และอื่น ๆ จนกว่าตัวถอดรหัสจะคาดการณ์ว่าลําดับสิ้นสุดลง
ตัวอย่างเช่น ตามลําดับ "เมื่อสุนัขของฉันเป็น ..." โมเดลจะประเมินโทเค็นในลําดับจนถึงตอนนี้ ใช้ ความสนใจ ในการกําหนดน้ําหนัก และคาดการณ์ว่าโทเค็นที่เป็นไปได้มากที่สุดถัดไปคือ "ลูกสุนัข" แทนที่จะเป็น "แมว" หรือ "สเก็ตบอร์ด"