σ-GPTs: แนวทางใหม่สำหรับโมเดลอัตถถดถอย
(arxiv.org)- σ-GPT แยกลำดับ การป้อนข้อมูล ออกจากลำดับการสร้างแบบอัตถถดถอย ทำให้ Transformer สามารถเรียนรู้และสร้างซีเควนซ์ได้แม้ในลำดับที่ถูกสลับแบบสุ่ม
- โมเดลอัตถถดถอยแบบเดิมมักทำตามการจัดเรียงตามธรรมชาติ เช่น ลำดับข้อความแบบ ซ้ายไปขวา หรือลำดับ raster scan ของภาพ แต่ทั้งสองลำดับนี้ไม่จำเป็นต้องเหมือนกันเสมอไป
- สำหรับแต่ละตัวอย่าง จะเลือกลำดับสับเปลี่ยนแบบสุ่ม σ ขึ้นมาทันที แล้วเพิ่ม positional encoding สองชุดที่สอดคล้องกับลำดับอินพุตและเอาต์พุตเพื่อให้กระบวนการอัตถถดถอยคงความสอดคล้อง
- ในทุกช่วงของการสร้าง โมเดลสามารถประมาณ conditional distribution ของโทเค็นที่เหลืออยู่ได้ จึงขยายไปสู่การสุ่มตัวอย่างจากตำแหน่งใดก็ได้ การสร้างแบบมีเงื่อนไขตามอำเภอใจ การทำ infilling และ burst sampling
- เมื่อใช้ curriculum learning ร่วมกัน จะสามารถไปถึงประสิทธิภาพใกล้เคียงกับโมเดลอัตถถดถอยแบบซ้ายไปขวา และใช้ rejection sampling ระดับโทเค็นเพื่อสร้างหลายโทเค็นเป็นชุดแบบ burst ได้
การแยกลำดับอินพุตออกจากลำดับการสร้าง
- Transformer แสดงประสิทธิภาพแบบ อัตถถดถอย ที่แข็งแกร่งในหลายโมดาลิตี
- วิธีอัตถถดถอยแบบดั้งเดิมจะอิงตามลำดับตามธรรมชาติของข้อมูล
- ข้อความมักประมวลผลแบบ ซ้ายไปขวา
- ในงานวิชัน จะนำภาพมาคลี่เป็นซีเควนซ์ตามลำดับ raster scan แล้วให้ Transformer ทำการโมเดล
- σ-GPT แยกความต่างระหว่างลำดับการป้อนข้อมูลกับลำดับอัตถถดถอย
- ในการใช้งานส่วนใหญ่ ลำดับทั้งสองมักจะสอดคล้องกัน แต่ไม่จำเป็นต้องเหมือนกันเสมอไป
- งานนี้สำรวจแนวทางการเรียนรู้และการสร้างบนซีเควนซ์ที่ถูกสลับในลำดับแบบสุ่ม
- การเปลี่ยนลำดับของซีเควนซ์ทำให้การเรียนรู้ยากขึ้น แต่แลกกับคุณสมบัติใหม่ เช่น การสร้างแบบมีเงื่อนไขจากตำแหน่งใดก็ได้
สถาปัตยกรรมและการทำงานของ σ-GPT
- σ-GPT สามารถเลือกลำดับสับเปลี่ยนแบบสุ่ม σ สำหรับแต่ละตัวอย่างได้แบบทันที
- σ ที่เลือกจะสร้างลำดับอินพุต
0, σ(1), σ(2), ...และลำดับเอาต์พุตσ(1), σ(2), σ(3), ...- ฝั่งอินพุตจะเติม padding
0ไว้ก่อนเพื่อให้จำนวนโทเค็นคงที่อย่างสอดคล้อง - จากนั้นโทเค็นจะถูกสลับตามลำดับดังกล่าว
- ฝั่งอินพุตจะเติม padding
- อินพุตของโมเดลจะเชื่อมกับ positional encoding สองชุด
- ชุดหนึ่งสอดคล้องกับลำดับอินพุต
- อีกชุดหนึ่งสอดคล้องกับลำดับเอาต์พุต
- เอาต์พุตจะถูกจัดกลับไปเป็นลำดับจริงในตอนท้าย
- เปิดเผยโค้ดแล้ว: https://github.com/idiap/sigma-gpt
การเปรียบเทียบกับ GPT มาตรฐานและ diffusion model
- σ-GPT ถูกนำไปเปรียบเทียบกับ GPT ซึ่งเป็น standard causal transformer encoder และ diffusion model
- ความสามารถที่รองรับมีดังนี้
- การสุ่มตัวอย่างโทเค็น จากตำแหน่งใดก็ได้ในซีเควนซ์
- การทำโมเดลความหนาแน่นของส่วนที่เหลือตามซีเควนซ์ที่ถูกสุ่มตัวอย่างไปบางส่วน
- การสร้างแบบมีเงื่อนไขตามอำเภอใจ
- infilling
- burst sampling ที่สร้างหลายโทเค็นพร้อมกัน
- การฝึก log-likelihood ด้วย cross-entropy
- ในการเปรียบเทียบ GPT มาตรฐานสามารถทำการสร้างแบบมีเงื่อนไขตามอำเภอใจและการฝึก log-likelihood ได้ แต่ไม่รองรับการสุ่มตัวอย่างจากตำแหน่งใดก็ได้ การประมาณ conditional density การทำ infilling และ burst sampling
- diffusion model รองรับ burst sampling แต่ในการเปรียบเทียบถือว่าไม่รองรับการฝึก log-likelihood
conditional distribution ระหว่างการสร้างและ rejection sampling
- เมื่อออกนอกลำดับอัตถถดถอยมาตรฐาน โมเดลจะสามารถทำนายโทเค็นตามลำดับที่กำหนดเฉพาะได้
- ในแนวทางนี้ โมเดลสามารถทำนาย conditional distribution ของโทเค็นที่เหลืออยู่ได้ในทุกช่วงของการสร้าง
- การประมาณ conditional distribution ถูกใช้เพื่อวัดปริมาณผลลัพธ์การสร้างที่เป็นไปได้ในแต่ละช่วง
- เมื่อนำสิ่งนี้ไปใช้กับ rejection sampling จะสามารถสร้างซีเควนซ์เป็นชุดแบบ burst ด้วยจำนวนขั้นตอนที่เปลี่ยนแปลงได้แบบไดนามิก
งานประเมินและผลงานที่มีส่วนร่วม
- σ-GPT นำเสนอ shuffled autoregression และประเมินว่าสามารถยกระดับประสิทธิภาพของโมเดลพื้นฐานได้หรือไม่เมื่อผสานกับแนวทาง curriculum
- งานที่ใช้ประเมินมี 3 งานหลัก
- การสร้างข้อความแบบเปิด
- การแก้ปัญหาเส้นทาง
- การพยากรณ์ความเร็วแนวดิ่งของอากาศยาน
- ผลงานหลักสรุปได้ 4 ข้อ
- นำเสนอสถาปัตยกรรม σ-GPT ที่มี positional encoding สองชุดซึ่งสอดคล้องกับลำดับอินพุตและลำดับเอาต์พุตตามลำดับ
- แสดงให้เห็นว่าเมื่อใช้ curriculum learning จะไปถึงประสิทธิภาพใกล้เคียงกับโมเดลอัตถถดถอยแบบซ้ายไปขวาได้
- แสดงให้เห็นว่าการสร้างตัวอย่างตามลำดับแบบสุ่มทำให้สามารถสร้างแบบมีเงื่อนไขกับส่วนใดก็ได้ของซีเควนซ์
- นำเสนอวิธี rejection sampling ระดับโทเค็นสำหรับการสร้างตัวอย่างเป็นชุดแบบ burst
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดูน่าสนใจมาก ตอนฝึกจะสุ่มสลับโทเค็นขาเข้า แล้วใส่ การเข้ารหัสตำแหน่งสองชนิด ให้แต่ละโทเค็น: อันหนึ่งคือตำแหน่งของโทเค็นนั้น อีกอันคือตำแหน่งของโทเค็นที่จะทำนาย
นอกเหนือจากนั้นก็คือ GPT แบบออโตรีเกรสซีฟมาตรฐาน แต่ผลของการเปลี่ยนแปลงที่ดูเรียบง่ายนี้ใหญ่มาก ถ้าให้บางส่วนของลำดับกับโมเดลที่ฝึกแล้วเป็นพรอมป์ต์ ก็สามารถถอดรหัสโทเค็นที่หายไปทั้งหมดแบบขนานได้โดยไม่ขึ้นกับลำดับ และยังคำนวณความหนาแน่นความน่าจะเป็นแบบมีเงื่อนไขของโทเค็นที่หายไปทั้งหมดแบบขนานได้ด้วย
อีกทั้งผู้เขียนยังเสนอวิธีสร้างแบบเติมช่องว่างขนานที่อิง rejection sampling และดูเหมือนว่าจะใช้งานได้ดีจริง
I . . . . . . . . happily.คำที่สองที่ต้องทำนายน่าจะขึ้นกับคำแรกไม่ใช่หรือของเก่า[1] กลับมาเป็นของใหม่อีกครั้ง แต่ไม่มีการอ้างอิงงานก่อนหน้า ทั้งที่ไม่ใช่งานที่ไม่มีใครรู้จัก ตีพิมพ์ใน ICML และมีการอ้างอิงราว 250 ครั้งแล้ว
[1]: https://arxiv.org/abs/1902.03249
เป็นแนวคิดที่เจ๋งจริง ๆ ชวนสงสัยว่ามันเริ่มมีพลวัตคล้ายกับที่เห็นในโมเดลสร้างภาพหรือไม่ กล่าวคือ โครงสร้างและรายละเอียดค่อย ๆ เกิดขึ้นในบางบริเวณของภาพ แล้วพื้นที่รอบ ๆ ก็ปรับตามและคลี่คลายตามมา
พฤติกรรมแบบนี้ดูจะมีประโยชน์มากกับ การให้เหตุผล/ตรรกะ/การวางแผนระยะยาว เพราะไอเดียใหญ่สามารถโผล่มาก่อน แล้วรายละเอียดและข้อความระหว่างนั้นค่อยถูกเติมอย่างเป็นธรรมชาติ
มีวิดีโอบน Twitter ที่แสดงการสร้างข้อความ ดูคล้ายการแพร่แบบภาพนิดหน่อย
https://x.com/ArnaudPannatier/status/1799055129829839166
วันนี้คิดถึงงานนี้ทั้งวัน และชอบความสามารถของมันมาก สิ่งที่ค่อนข้างยากสำหรับ LLM แบบลำดับ กลับเป็นเรื่องง่ายที่นี่
ถ้าต้องการ JSON ก็แค่ตรึงโทเค็นวงเล็บปีกกาไว้ที่ต้นและท้าย ถ้าต้องการคำอธิบายคำตอบที่มีความยาวโทเค็นกำหนด ก็ใส่คำตอบสั้น ๆ ไว้ข้างท้ายแล้วให้โมเดลเติมตรงกลาง
ถ้าอยากได้คำตอบที่ หนาแน่นด้วยข้อมูลมากขึ้น ก็เพิ่มส่วนประเมินความหนาแน่นลงในข้อความที่สร้าง พร้อมพื้นที่ให้ LLM ให้คะแนนความหนาแน่นข้อมูล จากนั้นก็สร้างโดยค้นหาคะแนนสูง ๆ ดูเหมือนมีอะไรให้น่าลองเยอะมาก แม้ตามกระดาษนี้จะต้องใช้โทเค็นมากขึ้นประมาณ 3 เท่า ซึ่งน่าเสียดาย แต่ก็น่าลองกับ โมเดลพารามิเตอร์ 8B ที่ใช้จำนวนโทเค็นสมเหตุสมผล
แต่ก็มีวิธีที่ดีกว่าอีก ถ้าจำกัดเอาต์พุตของ LLM ให้อยู่ใน ไวยากรณ์ เฉพาะอย่าง JSON ก็สามารถบังคับให้ตอบออกมาเป็น JSON ที่ถูกต้องตามไวยากรณ์เท่านั้นได้
สงสัยว่านี่จะช่วยเรื่องการสร้างโค้ดคอมพิวเตอร์เป็นพิเศษหรือไม่ เพราะสิ่งที่จะพิมพ์ออกมาในบางขั้นตอนอาจขึ้นกับสิ่งที่จะถูกเขียนในขั้นตอนถัดไปอย่างมีนัยสำคัญ
เป็นงานวิจัยที่น่าสนใจ แนวทางแบบ permutation ที่คล้ายกันมีอยู่แล้วในงาน Taylorformer (https://arxiv.org/pdf/2305.19141v1)
ผู้เขียนใช้ Transformer decoder กับกระบวนการต่อเนื่องอย่างข้อมูลอนุกรมเวลา และสุ่มสลับแต่ละลำดับระหว่างการฝึก แต่ละองค์ประกอบของลำดับมีการเข้ารหัสตำแหน่ง และใช้ log-likelihood กับลำดับที่ถูกสลับ
ตรงนั้น permutation ช่วยเรื่องการทำนาย interpolation, extrapolation, ข้อมูลที่สุ่มตัวอย่างไม่สม่ำเสมอ และยังดูเหมือนช่วยเรื่อง “ความสอดคล้อง” ที่ทำให้ค่า mean squared error โดยรวมใกล้เคียงกันไม่ว่าลำดับการสร้างจะเป็นแบบไหน
เลยสงสัยว่างานนี้เพิ่มอะไรให้กับความเข้าใจหรือการประยุกต์ใช้แนวคิดนี้บ้าง ไอเดียเรื่องการสลับลำดับก็มีในงาน Transformer Neural Process เช่นกัน: https://arxiv.org/pdf/2207.04179
นี่เหมือนเป็นการนำสิ่งที่เรียนรู้จาก vision Transformer มาใช้กับ language Transformer หรือเปล่า
เท่าที่ผมเข้าใจ โมเดลภาพจะแบ่งภาพออกเป็นไทล์ แล้วใส่ การเข้ารหัสตำแหน่ง ให้แต่ละไทล์เพื่อให้โมเดลเข้าใจตำแหน่งสัมพัทธ์ของแต่ละส่วน
พูดตามตรงผมอ่านแค่บทคัดย่อและหลายส่วนก็ยากมาก แต่งานนี้ดูเหมือนเสนอแนวคิดคล้ายกันใน 1D แทน 2D
การฝึกจะยากขึ้น แต่ดูเหมือนทำให้สร้างหลายโทเค็นพร้อมกันได้ กล่าวคือ ได้คำตอบยาว N โทเค็นใน N/x ขั้นแทนที่จะเป็น N ขั้น
สงสัยว่ามีโค้ดหรือไม่ ผมยังไม่เข้าใจเรื่อง ตำแหน่งคู่และการสลับ แบบถ่องแท้ และก็สนใจที่เขาเอาค่าตำแหน่งมาต่อกันแทนที่จะบวกเข้าไปด้วย
ถ้าเป็น Yann LeCun เขาคงบอกว่าปัญหาอยู่ที่ความเป็นออโตรีเกรสซีฟเอง และการเรียนรู้ของเครื่องแบบนี้ไม่มีทางเข้าใกล้ AGI ได้เลย[0]
อย่างน้อยตราบใดที่ยังอยู่ใน กระบวนทัศน์ออโตรีเกรสซีฟ ปัญหา hallucination ก็แก้ไม่ได้
[0] https://twitter.com/ylecun/status/1640122342570336267
ผู้เขียนต้นฉบับไม่ได้อ้างว่างานนี้ช่วยให้เข้าใกล้ AGI แต่อย่างใด แค่ทำให้ LLM แบบออโตรีเกรสซีฟทำสิ่งใหม่ที่ก่อนหน้านี้ทำไม่ได้
ผมก็ไม่คิดว่างานส่วนใหญ่จำเป็นต้องใช้ AGI ด้วย โดยเฉพาะถ้าไม่ได้มีเจตนาจะสร้างความทุกข์ให้สิ่งมีชีวิตที่มีสำนึก
ในเชิงสัญชาตญาณ โทเค็นบางตัวก็ยากกว่าตัวอื่น อาจมี โทเค็นสำคัญ ในเอาต์พุต และหลังจากได้มันแล้ว โทเค็นที่เหลืออาจง่ายขึ้นมาก อีกทั้งแม้ในแบบออโตรีเกรสซีฟก็ยังสามารถพิมพ์โทเค็นอย่าง
actually no...เพื่อฟื้นตัวจากโทเค็นที่ผิดได้ขึ้นกับวิธีสุ่มตัวอย่างโทเค็น ดูเหมือนว่าน่าจะมองการสร้างที่เสนอเป็นภาพรวมแล้วแก้ไขได้ ผมไม่แน่ใจว่าวิธีสุ่มตัวอย่างที่เสนอในงานนี้ทำแบบนั้นได้ทันทีหรือไม่ แต่จากข้อมูลที่ได้จากความน่าจะเป็น มันก็ดูเป็นไปได้