โมเดลภาษาขนาดใหญ่ (LLM)

เสร็จสมบูรณ์เมื่อ

Note

ดูแท็บ ข้อความและรูปภาพ สําหรับรายละเอียดเพิ่มเติม!

หัวใจสําคัญของ Generative AI โมเดลภาษาขนาดใหญ่ (LLM) และความสัมพันธ์ที่กะทัดรัดกว่า โมเดลภาษาขนาดเล็ก (SLM) - ห่อหุ้มความสัมพันธ์ทางภาษาและความหมายระหว่างคําและวลีในคําศัพท์ โมเดลสามารถใช้ความสัมพันธ์เหล่านี้เพื่อให้เหตุผลเกี่ยวกับการป้อนข้อมูลภาษาธรรมชาติและสร้างการตอบสนองที่มีความหมายและเกี่ยวข้อง

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

ตัวอย่างเช่น พิจารณาประโยคต่อไปนี้:

ฉันได้ยินเสียงสุนัขเห่าเสียงดังใส่แมว

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

คุณสามารถเดาคําถัดไปได้เพราะ:

  • คุณมีคําศัพท์มากมายที่จะดึงออกมา
  • คุณได้เรียนรู้โครงสร้างทางภาษาทั่วไป ดังนั้นคุณจึงรู้ว่าคําเกี่ยวข้องกันอย่างไรในประโยคที่มีความหมาย
  • คุณมีความเข้าใจในแนวคิดเชิงความหมายที่เกี่ยวข้องกับคํา - คุณรู้ว่าสิ่งที่คุณ ได้ยิน ต้องเป็นเสียงบางประเภท และคุณรู้ว่ามีเสียงเฉพาะที่ สุนัขสร้างขึ้น

แล้วเราจะฝึกโมเดลให้มีความสามารถเดียวกันนี้ได้อย่างไร

โทเค็น

ขั้นตอนแรกคือการจัดหาคําศัพท์และวลีจํานวนมากให้กับโมเดล และเราหมายถึงใหญ่ LLM รุ่นล่าสุดมีคําศัพท์ที่ประกอบด้วยโทเค็นหลายแสนรายการ โดยอิงจากข้อมูลการฝึกอบรมจํานวนมากจากอินเทอร์เน็ตและแหล่งอื่นๆ

รอสักครู่หนึ่ง โทเค็น?

ในขณะที่เรามักจะคิดเกี่ยวกับภาษาในแง่ของคํา LLM จะแบ่งคําศัพท์ออกเป็นโทเค็น โทเค็นประกอบด้วยคํา แต่ยังรวมถึงคํา ย่อย (เช่น "un" ใน "ไม่น่าเชื่อ" และ "ไม่น่าเป็นไปได้") เครื่องหมายวรรคตอน และลําดับอักขระอื่นๆ ที่ใช้กันทั่วไป ขั้นตอนแรกในการฝึกโมเดลภาษาขนาดใหญ่คือการแบ่งข้อความการฝึกอบรมออกเป็นโทเค็นที่แตกต่างกัน และกําหนดตัวระบุจํานวนเต็มที่ไม่ซ้ํากันให้กับแต่ละตัวดังนี้:

  • ฉัน (1)
  • ได้ยิน (2)
  • ก (3)
  • สุนัข (4)
  • เปลือกไม้ (5)
  • เสียงดัง (6)
  • ที่ (7)
  • ก (3) กําหนดแล้ว
  • แมว (8)

และอื่น ๆ

เมื่อคุณเพิ่มข้อมูลการฝึกอบรมมากขึ้น จะมีการเพิ่มโทเค็นเพิ่มเติมลงในคําศัพท์และตัวระบุที่กําหนด ดังนั้นคุณอาจลงเอยด้วยโทเค็นสําหรับคําต่างๆ เช่น ลูกสุนัขสเก็ตบอร์ดรถยนต์ และอื่นๆ

Note

ในตัวอย่างง่ายๆ นี้ เราได้แปลงข้อความตัวอย่างตามคํา ในความเป็นจริงจะมีคําย่อยเครื่องหมายวรรคตอนและโทเค็นอื่น ๆ

การแปลงโทเค็นด้วย หม้อแปลง

ตอนนี้เรามีชุดโทเค็นที่มี ID ที่ไม่ซ้ํากันแล้ว เราจําเป็นต้องหาวิธีเชื่อมโยงกัน ในการทําเช่นนี้ เรากําหนด เวกเตอร์ แต่ละโทเค็น (อาร์เรย์ของค่าตัวเลขหลายค่า เช่น [1, 23, 45]) เวกเตอร์แต่ละตัวมี องค์ประกอบ ตัวเลขหรือ มิติหลายรายการ และเราสามารถใช้สิ่งเหล่านี้เพื่อเข้ารหัสแอตทริบิวต์ทางภาษาและความหมายของโทเค็นเพื่อช่วยให้ข้อมูลจํานวนมากเกี่ยวกับ ความหมาย ของโทเค็นและความสัมพันธ์กับโทเค็นอื่นๆ ในรูปแบบที่มีประสิทธิภาพ

เราจําเป็นต้องแปลงการแสดงเวกเตอร์เริ่มต้นของโทเค็นให้เป็นเวกเตอร์ใหม่ที่มีลักษณะทางภาษาและความหมายฝังอยู่ในนั้น โดยอิงตามบริบทที่ปรากฏในข้อมูลการฝึกอบรม เนื่องจากเวกเตอร์ใหม่มีค่าความหมายฝังอยู่ในนั้น เราจึงเรียกมัน ว่าการฝังตัว

เราใช้โมเดลหม้อแปลง โมเดลประเภทนี้ประกอบด้วย "บล็อก" สองบล็อก:

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

ไดอะแกรมของสถาปัตยกรรม Transformer พร้อมเลเยอร์การเข้ารหัสและถอดรหัส

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 ]

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

เราสามารถคิดว่าองค์ประกอบของการฝังเป็นมิติในพื้นที่เวกเตอร์หลายมิติ ในตัวอย่างง่ายๆ การฝังของเรามีเพียงสามองค์ประกอบ ดังนั้นเราจึงสามารถเห็นภาพเป็นเวกเตอร์ในพื้นที่สามมิติได้ดังนี้:

ไดอะแกรมของการฝังเวกเตอร์สําหรับโทเค็นในสามมิติ

เนื่องจากมิติข้อมูลถูกคํานวณโดยพิจารณาจากความสัมพันธ์ทางภาษาของโทเค็นที่ใช้ในบริบทที่คล้ายคลึงกัน (ดังนั้นจึงมีความหมายคล้ายกัน) จึงส่งผลให้เวกเตอร์มีทิศทางที่คล้ายคลึงกัน ตัวอย่างเช่น การฝังสําหรับ "สุนัข" และ "ลูกสุนัข" ชี้ไปในทิศทางเดียวกันไม่มากก็น้อย ซึ่งไม่แตกต่างจากการฝังสําหรับ "แมว" มากนัก แต่แตกต่างจากการฝัง "สเก็ตบอร์ด" หรือ "รถยนต์" มาก เราสามารถวัดความใกล้ชิดของโทเค็นในเชิงความหมายได้โดยการคํานวณ ความคล้ายคลึงกันของโคไซน์ ของเวกเตอร์

การคาดการณ์ความสําเร็จจากข้อความแจ้ง

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

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

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

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