แก้ ARC-AGI โดยไม่ต้องพรีเทรน
(iliao2345.github.io)- ในปัญหาแบบ ARC-AGI ที่ต้องหารูปแบบจากตัวอย่างเพียงไม่กี่ชุด CompressARC สามารถหาคำตอบได้ด้วยการเรียนรู้เฉพาะช่วงอนุมานสำหรับแต่ละพัซเซิล โดยไม่ต้องพรีเทรน ไม่ใช้ชุดข้อมูลภายนอก และไม่ต้องค้นหาขนาดใหญ่
- แนวคิดหลักคือการทดลองว่าพฤติกรรมอันชาญฉลาดอาจเกิดขึ้นได้ หากปรับเหมาะวัตถุประสงค์ของ การบีบอัดข้อมูลแบบไม่สูญเสีย ให้ทำให้การแทนพัซเซิลซึ่งรวมคำตอบด้วยนั้นสั้นลง
- ใช้เวลาประมาณ 20 นาทีต่อพัซเซิลบน RTX 4070 และทำได้ 34.75% บน ชุดฝึก, 20% บน ชุดประเมิน โดยมีจุดเด่นว่าเป็นแนวทางแบบโครงข่ายประสาทที่ใช้เฉพาะพัซเซิลเป้าหมายเพียงข้อเดียวเป็นข้อมูลฝึก
- สถาปัตยกรรมถูกออกแบบโดยเน้น สมมูลเชิงแปรผัน ต่อการสลับลำดับตัวอย่าง การเรียงสับเปลี่ยนสี และการหมุน·สะท้อน พร้อมใช้การแทนแบบ multitensor ที่รวมเทนเซอร์หลายอันดับเข้าด้วยกัน
- มันทำได้ดีในงานอย่างการจับคู่สี-ขั้นตอน การเติม การครอป การเชื่อมจุด และการย้ายระยะสั้น แต่ยังมีคอขวดในงานอย่างการนับตัวเลข การขยายแพตเทิร์นระยะไกล การหมุน·คัดลอก·ปรับขนาด และการวางแผนแบบเอเจนต์
ทดลองว่าแค่การบีบอัดอย่างเดียวจะแก้ ARC-AGI ได้ไหม
- คำถามหลักคือ การบีบอัดข้อมูลแบบไม่สูญเสีย เพียงอย่างเดียวจะสร้างพฤติกรรมอันชาญฉลาดได้หรือไม่
- CompressARC เป็นวิธีที่ทำงานกับพัซเซิล ARC-AGI โดยอาศัยเพียงฟังก์ชันวัตถุประสงค์ที่อิงการบีบอัด
- มีข้อจำกัด 3 ข้อ
- ไม่พรีเทรน: โมเดลเริ่มจากการสุ่มค่าเริ่มต้นและเรียนรู้ในช่วงอนุมาน
- ไม่มีชุดข้อมูล: โมเดลหนึ่งตัวเรียนรู้จากพัซเซิล ARC-AGI เป้าหมายเพียงข้อเดียวและให้คำตอบออกมาเพียงหนึ่งข้อ
- ไม่มีการค้นหา: ใช้เพียง gradient descent เป็นหลัก โดยแทบไม่มีการค้นหาในความหมายทั่วไป
- ผลลัพธ์คือ 34.75% บนชุดฝึก และ 20% บนชุดประเมิน โดยแต่ละพัซเซิลใช้เวลาราว 20 นาที บน RTX 4070
- มีการอธิบายว่านี่เป็นวิธีแบบโครงข่ายประสาทสำหรับ ARC-AGI ที่ใช้เฉพาะพัซเซิลเป้าหมายเป็นข้อมูลฝึกเป็นครั้งแรก
การตั้งโจทย์ของ ARC-AGI
- ARC-AGI เป็นเบนช์มาร์ก AI ที่เปิดตัวในปี 2019 เพื่อทดสอบความสามารถในการอนุมาน กฎเชิงนามธรรม จากตัวอย่างจำนวนน้อยและทำให้ทั่วไปได้
- แต่ละพัซเซิลให้ตัวอย่างอินพุต-เอาต์พุตหลายชุดและอินพุตทดสอบหนึ่งชุด โดยระบบต้องทายกริดเอาต์พุตสำหรับการทดสอบให้ถูกต้อง
- ต่อหนึ่งพัซเซิลสามารถ ลองได้สองครั้ง และหากถูกอย่างน้อยหนึ่งครั้งจะได้ 1 คะแนน
- สามารถเปลี่ยนขนาดของกริดเอาต์พุตและเลือกสีของทุกพิกเซลได้
- พัซเซิลถูกออกแบบให้มนุษย์แก้ได้อย่างสมเหตุสมผล แต่ยากกว่าสำหรับเครื่อง
- มนุษย์ทั่วไปแก้ชุดฝึกได้เฉลี่ย 76.2%
- ผู้เชี่ยวชาญมนุษย์แก้ได้ 98.5%
- พัซเซิลฝึก 400 ข้อจะง่ายกว่าที่เหลือ และมีไว้เพื่อให้เรียนรู้รูปแบบต่อไปนี้
- ความเป็นวัตถุ: วัตถุจะไม่ปรากฏหรือหายไปโดยไม่มีเหตุผล
- การมุ่งสู่เป้าหมาย: วัตถุบางอย่างทำงานเหมือนเอเจนต์ที่มีเจตนา
- ตัวเลขและการนับ: ใช้คณิตศาสตร์พื้นฐาน เช่น จำนวนวัตถุ การจัดเรียง การเปรียบเทียบ การบวก·ลบ
- เรขาคณิตและโทโพโลยี: รวมถึงการสะท้อน การหมุน การย้าย การแปลงรูป การรวม การทำซ้ำ และความต่างของระยะทาง
- การแข่งขัน Kaggle ล่าสุดของ ARC Prize มีเงินรางวัลรวมสูงสุด มากกว่า 1 ล้านดอลลาร์ และรางวัลหลักมอบให้กับวิธีที่ทำได้ 85% บนโจทย์ลับ 100 ข้อ ภายใต้ข้อจำกัดการคำนวณ 12 ชั่วโมง
วิธีทำงานของ CompressARC
- ใน CompressARC การแทนที่ถูกบีบอัดได้ด้วยจำนวนบิตที่ต่ำกว่าจะเชื่อมโยงกับคำตอบพัซเซิลที่แม่นยำกว่า
- ระบบค้นหา การแทนแบบบีบอัด ที่เปลี่ยนพัซเซิลที่ยังไม่สมบูรณ์ให้เป็นพัซเซิลที่สมบูรณ์ และเมื่อคลายการบีบอัดการแทนนี้ก็จะสร้างทั้งพัซเซิลและคำตอบกลับมาได้
- โครงข่ายประสาททำหน้าที่เป็น decoder
- ไม่มีโครงข่าย encoder แยกต่างหาก
- การเข้ารหัสถูกทำให้เกิดขึ้นผ่านการเรียนรู้ decoder ด้วย gradient descent ในช่วงอนุมาน
- ค่าน้ำหนักที่เหมาะที่สุดและการตั้งค่าการกระจายของอินพุตจะทำหน้าที่เป็นการแทนแบบบิตที่บีบอัดซึ่งเก็บทั้งพัซเซิลและคำตอบ
- หากอธิบายในภาษามาตรฐานของแมชชีนเลิร์นนิง จะมีขั้นตอนดังนี้
- รับพัซเซิล ARC-AGI
- สร้างโครงข่ายประสาท
fให้สอดคล้องกับจำนวนตัวอย่างและจำนวนสีที่สังเกตได้ของพัซเซิล - รับอินพุตสุ่มแบบปกติ
z ~ N(μ, Σ)แล้วส่งออก logits สีของพิกเซลสำหรับทุกกริด - ทำให้ผลรวม cross-entropy ของกริดที่รู้ค่าแล้วต่ำที่สุด และละเลยกริดคำตอบ
- ใส่ KL divergence penalty เพื่อให้
N(μ, Σ)ใกล้กับN(0,1) - เก็บกริดคำตอบที่ถูกสร้างระหว่างการฝึกไว้ และเลือกคำตอบที่ปรากฏบ่อยที่สุดเป็นคำทำนายสุดท้าย
fθถูกออกแบบให้มี สมมูลเชิงแปรผัน ต่อการเพิ่มข้อมูลทั่วไป เช่น การสลับลำดับคู่ข้อมูลอินพุต-เอาต์พุต การเรียงสับเปลี่ยนสี และการหมุน·สะท้อนเชิงพื้นที่
การอธิบายในมุมมองของการบีบอัด
- การบีบอัดแบบไม่สูญเสียคือการแทนข้อมูลด้วยจำนวนบิตให้น้อยที่สุดเท่าที่จะทำได้ โดยยังต้องกู้คืนต้นฉบับได้อย่างถูกต้องจากการแทนแบบบิตนั้น
- ใน ARC-AGI ตามหลักแล้วเราควรบีบอัดทั้งคู่พัซเซิลและคำตอบในฐานะสัญลักษณ์เดียวกัน แต่ในทางปฏิบัติเราไม่มีคำตอบเป็นอินพุตของ encoder และก็ไม่รู้การกระจายการสร้างพัซเซิลด้วย
- มีการสมมุติว่ามีระบบบีบอัดที่ใช้งานได้จริงและมีประสิทธิภาพด้านบิตสำหรับชุดข้อมูล ARC-AGI
- แม้จะไม่รู้การกระจาย
pก็ยังสามารถนึกถึงตัวบีบอัดแบบสากลที่ทำให้ความยาวlen(f)+len(s)ของโปรแกรมfและอินพุตsต่ำที่สุดได้- decoder จะรัน
f(s)เพื่อกู้คืนต้นฉบับ - ตามทฤษฎีสารสนเทศเชิงอัลกอริทึม มันอาจด้อยประสิทธิภาพกว่าตัวบีบอัดเดิมเพียงเท่ากับความยาวของ
f - แต่ในทางปฏิบัติ encoder ที่ต้องค้นหาในปริภูมิโปรแกรมนั้นไม่สามารถใช้งานได้จริง
- decoder จะรัน
- CompressARC เลือกใช้ forward pass ของโครงข่ายประสาท เป็นโปรแกรมคงที่แทนการค้นหาในปริภูมิโปรแกรม
sประกอบด้วยค่าน้ำหนักθ, อินพุตz, และค่าปรับแก้เอาต์พุตεθและzคำนวณความยาวรหัสในมุมมองของ Relative Entropy Coding (REC) ส่วนεคำนวณในมุมมองของ arithmetic coding- ความยาวรหัสของค่าปรับแก้เอาต์พุตจะเท่ากับ cross-entropy รวมของกริดที่รู้ค่าแล้ว
- ความยาวรหัสของ
zจะกลายเป็นKL(pz || qz)โดยกำหนดqz = N(0,I)
- ความยาวรหัสรวมมีรูปแบบเดียวกับ loss ของ VAE
- ความคลาดเคลื่อนในการสร้างคืน
- KL สำหรับ
z - การทำให้ decoder เป็นระเบียบ
- การติดตั้งใช้งาน CompressARC มีการปรับจากการอธิบายนี้ โดยรวมการตัดบางส่วนของการทำให้เป็นระเบียบ สมมูลเชิงแปรผัน และการแยกอิสระระหว่างพัซเซิล
สถาปัตยกรรม: multitensor และสมมูลเชิงแปรผัน
- คุณสมบัติที่สำคัญที่สุดของสถาปัตยกรรมคือ สมมูลเชิงแปรผัน
- หากอินพุต
zถูกแปลง เอาต์พุตพัซเซิล ARC-AGI ก็ควรถูกแปลงในแบบเดียวกัน - ตัวอย่างของการแปลงได้แก่ การจัดเรียงคู่ข้อมูลอินพุต-เอาต์พุตใหม่ การสับสี และการกลับ·หมุน·สะท้อนกริด
- หากอินพุต
- การออกแบบเริ่มจากสถาปัตยกรรมพื้นฐานที่สมมาตรอย่างสมบูรณ์ แล้วค่อยเพิ่ม เลเยอร์ไม่สมมาตร เพื่อให้ได้ความสามารถที่ไม่สมมูลเชิงแปรผันตามต้องการ โดยค่อย ๆ ทำลายสมมาตรที่ไม่จำเป็นทีละอย่าง
- ข้อมูลภายในไหลผ่านในรูปแบบที่เรียกว่า multitensor
- เป็นชุดของเทนเซอร์หลายตัวที่มีอันดับและ shape ต่างกัน
- มิติจะเป็นส่วนย่อยของ
[n_examples, n_colors, n_directions, height, width, n_channels]ได้สูงสุด - จะคงมิติ
channelไว้เสมอ - ใช้กฎเพื่อลดจำนวนเทนเซอร์ที่ถูกต้องตามรูปแบบภายใน multitensor เหลือ 18 ตัว
- พัซเซิลสามารถแทนด้วยเทนเซอร์
[examples, colors, height, width, channel]channelใช้เลือกกริดอินพุตหรือเอาต์พุตwidthและheightแทนตำแหน่งพิกเซล- มิติ
colorเก็บการแทนแบบ one-hot ของสีพิกเซล
- สถาปัตยกรรมทั้งหมดมีลำดับการไหลดังนี้
- เริ่มจากพารามิเตอร์การกระจายของ
z - Decoding Layer
- ทำซ้ำ 4 รอบของ Multitensor Communication, Softmax, Directional Cummax, Directional Shift, Directional Communication, Nonlinear, Normalization
- ส่งออกการกระจายของพัซเซิล ARC-AGI ผ่าน Linear Heads
- เริ่มจากพารามิเตอร์การกระจายของ
ผลลัพธ์ด้านประสิทธิภาพ
- การฝึกใช้ Adam เป็นเวลา 2000 iterations
- อัตราการเรียนรู้
0.01 β1 = 0.5,β2 = 0.9
- อัตราการเรียนรู้
- ผลลัพธ์บนชุดฝึก
- 100 iteration: Pass@2 2.25%
- 500 iteration: Pass@2 27.5%
- 1000 iteration: Pass@2 31.75%
- 2000 iteration: Pass@2 34.75%
- Pass@1000 ที่ 2000 iteration คือ 52.75%
- ผลลัพธ์บนชุดประเมิน
- 100 iteration: Pass@2 1.25%
- 500 iteration: Pass@2 15%
- 1000 iteration: Pass@2 19.25%
- 2000 iteration: Pass@2 20%
- Pass@1000 ที่ 2000 iteration คือ 33.75%
- เนื่องจากการให้คะแนนของ ARC-AGI อนุญาตให้ลองได้สองครั้ง ผลลัพธ์หลักในบทความจึงอ้างอิงตาม Pass@2
พัซเซิลที่แก้ได้และพัซเซิลที่ยาก
- CompressARC จะจับกฎได้มากที่สุดเท่าที่ความสามารถของมันเอื้อ แต่จะติดคอขวดเมื่อเจองานที่สถาปัตยกรรมยังไม่มีความสามารถรองรับ
- ตัวอย่างงานที่ทำได้มีดังนี้
- กำหนดขั้นตอนเฉพาะให้กับสีแต่ละสี
- การเติม
- การครอป
- การเชื่อมจุด รวมถึงเส้นทแยง 45 องศา
- การตรวจจับสีเดียวกัน
- การระบุการอยู่ติดกันของพิกเซล
- การกำหนดสีแยกตามตัวอย่าง
- การระบุส่วนย่อยของรูปทรง
- การย้ายระยะสั้น
- ตัวอย่างงานที่ยังยากก็ชัดเจนเช่นกัน
- จับคู่สีสองสีให้สอดคล้องกัน
- ทำซ้ำการกระทำเดียวกันหลายครั้งต่อเนื่อง
- การย้าย การหมุน การสะท้อน การปรับขนาด การคัดลอกภาพ
- การตรวจจับคุณสมบัติเชิงโทโพโลยีอย่างการเชื่อมต่อกัน
- การวางแผนและจำลองพฤติกรรมของเอเจนต์
- การขยายแพตเทิร์นระยะไกล
- ในพัซเซิลฝึก 28e73c20 จำเป็นต้องขยายแพตเทิร์นจากขอบเข้าสู่ศูนย์กลาง แต่ CompressARC ทำได้เพียงการขยายระยะสั้น และเมื่อเข้าใกล้ศูนย์กลางจะอาศัยการเดา
กรณีศึกษา: Color the Boxes
- ในวิธีแก้แบบมนุษย์ จะสังเกตได้ว่าอินพุตถูกแบ่งออกเป็นกล่อง และในเอาต์พุตกล่องเหล่านั้นถูกระบายสี
- มุมจะเป็นสีดำเสมอ
- ตรงกลางจะเป็นสี magenta เสมอ
- กล่องด้านข้างจะถูกกำหนดสีตามทิศทางคือ ด้านบนสีแดง ด้านล่างสีน้ำเงิน ด้านขวาสีเขียว ด้านซ้ายสีเหลือง
- ความคืบหน้าของการเรียนรู้ของ CompressARC เปลี่ยนไปเป็นช่วง ๆ
- 50 step: สะท้อนว่ามีแถว·คอลัมน์สีฟ้าอ่อนของอินพุตที่สอดคล้องกับเอาต์พุตด้วย
- 150 step: แสดงรูปแบบเอาต์พุตที่พิกเซลใกล้กันมีสีคล้ายกัน
- 200 step: เลียนแบบก้อนสีที่ใหญ่ขึ้นซึ่งถูกแบ่งด้วยขอบสีฟ้าอ่อน และก้อนมุมสีดำ
- 350 step: ทายสีของกล่องตามทิศทางอิงศูนย์กลางได้โดยรวมค่อนข้างถูก
- 1500 step: เอาต์พุตเกือบถูกเกลาเรียบร้อย แต่ในตัวอย่างยังมีข้อผิดพลาดเล็กน้อยที่พบไม่บ่อย
- เมื่อวิเคราะห์การกระจาย
zที่เรียนรู้แล้ว พบว่ามันเข้ารหัส ตารางจับคู่สี-ทิศทาง และตำแหน่งของเส้นแบ่งแถว·คอลัมน์ - มีเพียงสี่เทนเซอร์ที่ยังคงเก็บปริมาณข้อมูลไว้
(examples, height, channel): เก็บตำแหน่งแถวสีฟ้าอ่อนของแต่ละตัวอย่าง(examples, width, channel): เก็บตำแหน่งคอลัมน์สีฟ้าอ่อนของแต่ละตัวอย่าง(direction, color, channel): เก็บความสอดคล้องระหว่างทิศทางกับสี(color, channel): แยกบทบาทพิเศษของ magenta และสีฟ้าอ่อน
กรณีศึกษาเพิ่มเติมและการวิเคราะห์การแทน
-
พัซเซิล Bounding Box 6d75e8bb
- วิธีแก้แบบมนุษย์คือวาดกล่องสีฟ้าอ่อนที่เล็กที่สุดซึ่งครอบรูปทรงสีแดง
- CompressARC ที่ 100 step แสดงร่องรอยว่าจับ common bounding box ได้ และที่ 150 step ก็หาคำตอบเจอแล้ว จากนั้นการเรียนรู้ต่อก็ช่วยเกลาคำตอบ
- เทนเซอร์หลักที่ยังอยู่คือ
(examples, height, channel),(examples, width, channel),(color, channel) - เทนเซอร์แถว·คอลัมน์บ่งบอกแถวและคอลัมน์ที่มีพิกเซลสีฟ้าอ่อนมาก แต่ยังไม่ชัดเจนว่าระบบรู้ตำแหน่งขอบเขตได้อย่างไร
-
พัซเซิล Center Cross 41e4d17e
- จากศูนย์กลางของฟองสีน้ำเงินในอินพุต ให้ลากลำแสงสี magenta ขึ้น ลง ซ้าย ขวา และสีของฟองต้องทับอยู่เหนือเส้นลำแสง
- CompressARC จะคัดลอกอินพุตก่อน จากนั้นแถว·คอลัมน์สี magenta จะปรากฏขึ้นและค่อย ๆ คงตัวในตำแหน่งที่ถูกต้อง
- ไม่พบข้อผิดพลาดแบบที่มนุษย์อาจทำ คือวาดลำแสงทับบนฟองผิดตำแหน่ง
- เทนเซอร์ที่ยังอยู่คือ
(examples, height, width, channel)และ(color, channel) (examples, height, width, channel)เข้ารหัสศูนย์กลางของฟอง
แนวคิดเพื่อการปรับปรุง
- แทนที่จะบีบอัดแยกทีละพัซเซิล อาจบีบอัดทั้งชุดข้อมูล ARC-AGI พร้อมกันเพื่อแชร์การคำนวณระหว่างพัซเซิลและได้อคติแบบอุปนัยที่ดีกว่า
- มีการพิจารณาแนวทางใช้ค่าน้ำหนักโครงข่ายชุดเดียวกับทุกพัซเซิล แล้วให้ perturbation แบบจำกัดเฉพาะพัซเซิล
- ยังเสนอแนวทาง hypernetwork ที่เรียนรู้ embedding มิติสูงของแต่ละพัซเซิล แล้วเรียนรู้การแมปเชิงเส้นจาก embedding นี้ไปเป็นค่าน้ำหนักของโครงข่าย
- แต่แนวทางนี้อาจทำให้รอบการวิจัยช้าลง จึงยังไม่ได้ลอง
- สำหรับงานคัดลอกรูปทรง เลเยอร์สาย convolution อาจมีประโยชน์
- กริดหนึ่งอาจเก็บรูปทรง ส่วนอีกกริดหนึ่งระบุตำแหน่งที่จะคัดลอก แล้ว convolution สามารถสร้างผลการคัดลอกได้
- ปัญหาคือ convolution ปกติมักขยาย noise มากกว่าสัญญาณ
- tropical convolution ทำงานได้ดีในพัซเซิลของเล่น แต่ยังไม่เพียงพอสำหรับพัซเซิลฝึกของ ARC-AGI
- ยังมีการพิจารณาใช้ KL floor เพื่อบรรเทา posterior collapse
- มีการสังเกตว่าเมื่อ KL ของเทนเซอร์สำคัญตกลงเป็น 0 แล้ว มักไม่สามารถฟื้นกลับมาได้อีก
- หากคงค่า KL ให้อยู่สูงกว่า 0 ชั่วระยะหนึ่ง ก็อาจทำให้โครงข่ายเรียนรู้ที่จะใช้ข้อมูลนั้น
- มีการทำไว้แล้ว แต่ยังไม่เห็นกรณีที่เทนเซอร์ฟื้นกลับมา จึงอาจต้องออกแบบตาราง KL floor ใหม่
- ในการติดตั้งใช้งานจริงไม่ได้ใช้การทำให้เป็นระเบียบ
- ในการตั้งโจทย์อย่างเป็นทางการ มันเป็นองค์ประกอบที่ใช้วัดความซับซ้อนของ
fและถูกรวมอยู่ในการอธิบาย CompressARC - ผู้เขียนประเมินว่าการตัดมันออกจากการติดตั้งใช้งานนั้นค่อนข้างห้าวหาญ
- ในการตั้งโจทย์อย่างเป็นทางการ มันเป็นองค์ประกอบที่ใช้วัดความซับซ้อนของ
งานที่เกี่ยวข้องและตำแหน่งเชิงวิจัย
- แนวคิดเรื่องความสมมูลกันระหว่างการบีบอัดกับความฉลาดได้แรงบันดาลใจจาก Hutter Prize
- Hutter Prize มอบรางวัลให้ระบบที่บีบอัดไฟล์ข้อความ Wikipedia ได้ดีที่สุด และเชื่อมโยงความสามารถในการบีบอัดข้อมูลเข้ากับความฉลาด
- พื้นฐานเชิงทฤษฎีรวมถึง Solomonoff Induction, Kolmogorov Complexity และ Minimum Description Length
- ในมุมมองทฤษฎีสารสนเทศ Relative Entropy Coding คือแกนสำคัญ
- แนวคิดคือหากสามารถจำกัด KL divergence ได้ ก็ย่อมสร้างอัลกอริทึมการบีบอัดได้ และเป็นการทำให้นามธรรมของปัญหาการสร้างรหัสไบนารีจริง
- ในมุมมองของ VAE, decoder ทำหน้าที่เป็นอัลกอริทึมคลายการบีบอัด
- แม้จะพิจารณา neural Turing machine ที่มีความสามารถทั่วไปมากกว่าได้ แต่เพราะมันไม่เหมาะกับการหาค่าเหมาะที่สุดด้วย gradient descent จึงเลือกแนวทาง VAE
- การถ่วงน้ำหนัก reconstruction loss แบบ beta-VAE ใช้ได้ผลดีในกรณีนี้
- วิธีแก้ ARC-AGI ที่มีอยู่เดิมมักใช้ LLM, การเพิ่มข้อมูล, ชุดข้อมูลทดแทน, การเรียนรู้ช่วงทดสอบ, และการค้นหาโปรแกรมด้วยภาษาที่ออกแบบเฉพาะโดเมน
- CompressARC เน้นว่าเป็นวิธีที่ใช้ deep learning โดยไม่ต้องพรีเทรนภายนอกและไม่ต้องค้นหาขนาดใหญ่
- โค้ดของโปรเจกต์เปิดเผยไว้บน GitHub
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การฝึกล่วงหน้าขนาดใหญ่ให้ความรู้สึกขัดกับเจตนาของความเป็นทั่วไป
ถ้าสร้างเครื่องจักรทั่วไปที่สามารถสังเคราะห์โปรแกรมเพื่อดูตัวอย่างแค่ 3 ตัวแล้วทำนายตัวที่ 4 ได้ นั่นก็เท่ากับแก้ปัญหาการสังเคราะห์ออราเคิลได้แล้ว
ในทางกลับกัน ถ้าฝึกเครือข่ายด้วยความรู้ทั้งหมดของมนุษยชาติ รวมถึงการสร้างปริศนา แล้วปรับละเอียดด้วย 99% ของชุดข้อมูล จากนั้นให้ลองหลายครั้งกับ 1% สุดท้าย นั่นก็ใกล้เคียงกับการสร้างเครื่องบีบอัดราคาแพงที่บีบอัดจิตวิทยาของผู้ออกข้อสอบมากกว่า
มันตั้งสมมติฐานว่ามีขอบเขตแบบเพลโตของตรรกะและเหตุผลที่ AGI เพียงแค่ต้องเชื่อมต่อเข้าไปก็พอ แต่หากไม่มีบริบท ก็ไม่มีทั้งความหมาย การอนุมาน หรือแม้แต่ตรรกะ
การจับคู่รูปแบบของรูปทรงต้องมีแนวคิดเรื่องรูปทรง และสิ่งนี้ตั้งอยู่บนแนวคิดเรื่องความสัมพันธ์เชิงพื้นที่ ซึ่งก็ยังตั้งอยู่บนแนวคิดเรื่องพื้นที่ 2 มิติหรือ 3 มิติอีกที
เหตุผลที่สิ่งเหล่านี้ดูเป็นเรื่องธรรมดาและแฝงอยู่โดยปริยาย ก็เพราะมันฝังลึกอยู่ในสภาพแวดล้อมที่จิตมนุษย์วิวัฒนาการมาเพื่อแปลความหมายตลอดหลายร้อยล้านปี และสภาพแวดล้อมที่เราเสพและประมวลผลมาตลอดหลายสิบปี
บททดสอบที่แท้จริงของ AGI คือความสามารถในการหลอมรวมข้อมูลที่แตกต่างกันให้เป็นโลกทัศน์ที่สอดคล้องกัน และการฝึกล่วงหน้าก็กำลังทำงานนั้นอยู่โดยพฤตินัย
แม้แต่สติปัญญาที่มีความสามารถเช่นนั้น ก็มีความเป็นไปได้สูงว่าจำเป็นต้องมีสมมติฐานเชิงโครงสร้างเกี่ยวกับโลกที่มันจะถูกวางลงไป “โหลดไว้ล่วงหน้า” คล้ายกับบริเวณสมองที่ถนัดด้านความสัมพันธ์เชิงพื้นที่ ภาษา และการตีความประสาทสัมผัส
มนุษย์เองเมื่ออยากทำอะไรให้เก่งขึ้น ก็หาวิธีฝึกงานนั้น แล้วเรียนรู้ในแบบที่ทำให้ดีขึ้นจริง
เพราะฉะนั้นจึงมีบางคนที่มองว่า AGI จะยังไม่เกิดขึ้นในระยะอันใกล้: https://www.lycee.ai/blog/why-no-agi-openai
ก็เลยสงสัยว่ามีเหตุผลอะไรที่เราควรคาดหวังให้เครื่องจักรทำการทั่วไปได้ดีโดยไม่มีความรู้พื้นหลัง
นึกถึงพอดแคสต์ Lex Fridman ที่มี Marcus Hutter
Joshua Bach ก็เคยนิยามสติปัญญาว่าเป็นความสามารถในการจำลองความเป็นจริงได้อย่างแม่นยำ ผมเลยสงสัยว่า การบีบอัดแบบไม่สูญเสียข้อมูล เองคือสติปัญญาหรือไม่ หรือเป็นโมเดลที่เหมาะสมที่สุดกันแน่ ระหว่างสองอย่างนี้มีความแตกต่างไหม?
https://www.youtube.com/watch?v=E1AxVXt2Gv4
ดังนั้นจึงต้องดู 4 แกน ได้แก่ ความเรียบง่าย ความแม่นยำ ความหน่วง และความซับซ้อนของความเป็นจริง และปัญญาประดิษฐ์จะเป็นพื้นที่บางส่วนภายในสเปซนี้
ที่จริงมีการทดสอบง่าย ๆ เพื่อแบ่งแยกสติปัญญาอยู่ นั่นคืออ่านโค้ดฟังก์ชัน C แล้วบอกได้หรือไม่ว่าการเปลี่ยนอินพุตจะส่งผลต่อเอาต์พุตอย่างไร
สำหรับอัลกอริทึมที่ซับซ้อน จำเป็นต้องสร้างโมเดลภายใน ไม่อย่างนั้นจะจำลองในหัวได้อย่างไรว่า qsort ทำงานกับรายการหนึ่งล้านรายการอย่างไร
วิธีเดียวกันนี้ยังใช้แยกได้ว่านักเรียนแกล้งทำเป็นเข้าใจหรือเข้าใจจริง
บททดสอบที่ยากกว่านั้นคือในทางกลับกัน การสร้างอัลกอริทึมขึ้นมาจากตัวอย่างอินพุต/เอาต์พุตเพียงไม่กี่ชุด
[1] http://prize.hutter1.net/
ผมพยายามสกัดแก่นของแนวทางนี้ออกมา แต่ดูเหมือนมันถูกบดบังด้วยรายละเอียดที่ไม่ใช่สาระสำคัญ เช่น การเลือกวิธีบีบอัดเฉพาะแบบหรือ prior distribution
นวัตกรรมหลักดูจะอยู่ที่การสร้าง “โมเดล” ที่สามารถทำ optimization ด้วย gradient descent ได้ และทำให้จุดเหมาะที่สุดของมันกลายเป็นโมเดลที่ “เรียบง่าย” ที่สุดซึ่งจดจำความสัมพันธ์อินพุต-เอาต์พุตได้
ในที่นี้ “ความเรียบง่าย” หมายถึงอย่างเป็นรูปธรรมว่า “สามารถบีบอัดได้อย่างมีประสิทธิภาพ” แต่โดยทั่วไปน่าจะใกล้เคียงกับการที่ model complexity ต่ำที่สุดเท่าที่เป็นไปได้
สิ่งนี้แตกต่างอย่างชัดเจนจาก machine learning มาตรฐาน ปกติเราจะเลือกโครงสร้างโมเดลและพารามิเตอร์ความซับซ้อนต่าง ๆ ก่อนเพื่อกำหนดงบประมาณความซับซ้อน จากนั้นจึงฝึกด้วยข้อมูลเพื่อหาคำตอบที่จดจำความสัมพันธ์อินพุต-เอาต์พุตได้ดี
วิธีใหม่นี้กลับด้าน machine learning คือยังคงจดจำคู่อินพุต-เอาต์พุตไว้ แต่ optimize เพื่อลดความซับซ้อนของโมเดลให้มากที่สุด
การที่สามารถ generalize ได้จากตัวอย่างฝึกเพียง 2 ตัวอย่างนั้นน่าทึ่งจริง ๆ และผมคิดว่ามันชี้อย่างหนักแน่นไปยังทิศทางที่ถูกต้องในการจัดการกับ generalization
เส้นทางที่ผู้เขียนมาถึงโครงสร้างนี้คือ information theory แต่ผมไม่แน่ใจว่านั่นคือสาระสำคัญหรือไม่
แก่นดูจะใกล้เคียงกับการตระหนักว่า แทนที่จะหาโมเดลที่ดีที่สุดภายใต้งบประมาณความซับซ้อนคงที่ เราสามารถหา โมเดลที่มีความซับซ้อนต่ำที่สุดเท่าที่เป็นไปได้ ได้
ใน loss objective function ของ optimization มักมีการเพิ่ม regularization term และ regularization แบบนี้ก็มักตีความได้ว่าเป็นการลงโทษความซับซ้อน
ด้วย duality เราสามารถมอง objective function เดียวกันได้หลายแบบ: ลด weighted sum ของ data error กับ complexity, หรือลด complexity โดยคุม data error ให้อยู่ต่ำกว่าขีดจำกัด, หรือลด data error โดยคุม complexity ให้อยู่ต่ำกว่าขีดจำกัด เป็นต้น
regularization แบบคลาสสิกเช่นนี้ดูเหมือนช่วงหลังจะไม่ค่อยเป็นกระแสแล้ว
ผมไม่คิดว่ามันมีบทบาทใหญ่ในโครงสร้าง Transformer ส่วนใหญ่ แต่ถ้ามันกลับมาในรูปแบบใดรูปแบบหนึ่งก็น่าสนใจ
นอกจากนั้น แนวทางนี้มีองค์ประกอบใหม่มากเกินไปจนแยกได้ยากว่าอะไรคือสิ่งที่ทำให้ประสิทธิภาพดีจริง ๆ
ตัวอย่างเช่น โครงสร้าง neural network เองก็ดูเหมือนถูกปรับแต่งอย่างพิถีพิถันเพื่อเพิ่มประสิทธิภาพกับโจทย์ประเภท ARC-AGI และยังไม่เห็นชัดว่าจะ generalize ไปไกลกว่านั้นอย่างไร
แต่ละ puzzle มีรูปแบบคล้ายกัน และข้อมูลที่เปลี่ยนไปภายใน puzzle ก็แทบจะตรงกับข้อมูลที่จำเป็นสำหรับอนุมานกฎพอดี
เมื่อลดปริมาณข้อมูลที่ต้องใช้ในการอธิบายกฎ codec ก็แทบไม่มีทางเลือกนอกจากย่อให้เหลือสิ่งที่ตัวกฎเองทำอยู่ เพื่อให้การสูญเสียข้อมูลน้อยที่สุด
ถ้าแต่ละ puzzle มี noise หรือข้อมูลแบบสุ่มมากกว่านี้ เทคนิคนี้น่าจะใช้ไม่ได้
แน่นอนว่าถึงจุดหนึ่ง puzzle ก็ไม่ควรกลายเป็น “การค้นหาว่า puzzle อยู่ตรงไหน” แต่ในที่นี้มันใช้ได้เพราะแต่ละตัวอย่างเป็นข้อมูลบริสุทธิ์เกี่ยวกับตัว puzzle เอง
น่าสนใจ ผมเริ่มคิดมากขึ้นเรื่อย ๆ ว่าอนาคตของ machine learning อาจเป็นทิศทางที่มี “machine learning” ในความหมายที่เราคุ้นเคยน้อยลงเสียอีก
คือ pretraining, data, search น้อยลง และมี direct representation, symbolic processing, constraint satisfaction, meta-learning มากขึ้น
สิ่งที่จะจำเป็นน้อยลง เช่น pretraining และ data นั้นสกปรก เหวี่ยงกว้าง และเกิดขึ้นโดยบังเอิญ
ถ้าพึ่งพาสิ่งเหล่านั้น ก็จะขึ้นกับคุณภาพข้อมูลเสมอ ซึ่งก็ไม่เป็นไรหากเป้าหมายคือ data mining แต่ไม่เหมาะกับเป้าหมายในการ model สาเหตุพื้นฐานของข้อมูล
ตามที่ผมเข้าใจ พวกเขาคล้ายกับพยายามเผย minimum representation ของพื้นที่คำตอบ/ปัญหา
ด้วย equivariance พวกเขากำลังติดตามโครงสร้างจริงของปัญหา และแทนที่จะหวังว่าจะจับมันได้โดยบังเอิญจากตัวอย่างการแก้จำนวนมาก ก็สกัดสิ่งที่ใกล้กับ representation พื้นฐานจริงของ puzzle และวิธีแก้ออกมา
เป็นเอกสารและคำอธิบายที่ยอดเยี่ยม สอดคล้องกับการใคร่ครวญของผมเองด้วย เลยดีใจ
ผมมองว่า “สติปัญญาคือการบีบอัดข้อมูลให้เป็น representation ที่ลดทอนไม่ได้”
https://en.wikipedia.org/wiki/Kolmogorov_complexity
https://en.wikipedia.org/wiki/Solomonoff%27s_theory_of_induc...
https://en.wikipedia.org/wiki/Minimum_description_length
ดูเหมือนเกี่ยวข้องกับแนวคิดเหล่านี้ ผมเลยคิดว่าจะขุดต่อ
https://en.wikipedia.org/wiki/Wigner%27s_classification
ถ้า ARC-AGI เป็น benchmark ที่ทดสอบความสามารถในการอนุมานกฎนามธรรมจากตัวอย่างจำนวนน้อยที่สุดและ generalize ได้ สุดท้ายก็เท่ากับนิยามสติปัญญาว่าเป็นความสามารถในการบีบอัดข้อมูลให้เป็นชุดกฎ
ถ้าอย่างนั้นการบอกว่า compression ทำงานนั้นก็ถูกแล้ว
ผมสงสัยว่าคุณเคยลองแก้โจทย์ ARC-AGI เองหรือไม่
โจทย์เหล่านี้ค่อนข้างละเอียดอ่อน และทดสอบ แนวคิดนามธรรม หลากหลายมาก
อ้างอิงว่า o1-preview ได้ 21% ในการประเมินสาธารณะ ส่วนแนวทางในบทความต้นฉบับได้ 34%
เปเปอร์ของ Schmidhuber ที่เกี่ยวข้องอยู่บ้าง: https://arxiv.org/abs/0812.4360
ถ้าพูดว่า “ประมวลผลแต่ละ puzzle บน RTX 4070 ประมาณ 20 นาที” ก็หมายความว่า challenge 100 ข้อจะใช้เวลา 33.3 ชั่วโมง
ซึ่งเกินเป้าหมายของ challenge ที่ 12 ชั่วโมง แต่ตัวแนวทางเองก็ค่อนข้างเจ๋ง
ถ้าไม่นับการออกแบบโครงสร้างอย่างพิถีพิถันมาก ๆ แล้ว นี่ดูแทบจะเป็นแนวทาง Bayesian deep learning มาตรฐาน