เริ่มอธิบายความผิดปกติของ LLM ในการเล่นหมากรุกได้บางส่วน
(dynomight.net)- ในบรรดา LLM ที่ส่วนใหญ่เล่นหมากรุกไม่เก่ง ปรากฏการณ์ที่มีเพียง
gpt-3.5-turbo-instructที่แข็งแกร่งเป็นพิเศษนั้น อธิบายได้บางส่วนจากการทดลองที่พบว่าเมื่อเปลี่ยน พรอมป์ตอินเทอร์เฟซ แล้วgpt-4oและgpt-4o-miniก็เล่นดีขึ้นอย่างมากเช่นกัน - สมมติฐานที่ว่า OpenAI แอบเรียกใช้เอนจินหมากรุกมีน้ำหนักน้อย: แม้กระดานจะเหมือนกันก็ยังเดินต่างกันตาม ลำดับการมาถึงของตำแหน่ง ไวต่อการเปลี่ยนพรอมป์ต และระดับความสามารถก็อยู่เพียงราว 1750 Elo ไม่ใช่ระดับเอนจิน
- เพียงมี ตัวอย่างในบริบท สั้น ๆ แค่สามชุด ประสิทธิภาพก็เพิ่มขึ้นมาก และเมื่อ ไฟน์จูน ด้วยตัวอย่างที่คัดจากการเล่นกันเองของ Stockfish 100 เกม ก็ยังยืนยันได้ว่าดีขึ้น
- ในทางกลับกัน เมื่อบอกชุด ตาเดินที่ถูกกติกา ทั้งหมดที่เป็นไปได้ในปัจจุบัน ประสิทธิภาพกลับแย่ลงอย่างมาก และวิธี ทวนบันทึกเกม (regurgitation) ที่ให้ทวนสกอร์ทั้งเกมก่อนแล้วค่อยต่อด้วยตาเดินถัดไป ทำให้โมเดลแชตทำงานคล้าย completion model และดันประสิทธิภาพขึ้น
- ชุดค่าผสมสุดท้าย
gpt-4o + regurgitation + examplesทำสถิติ 10 ชนะ 5 เสมอ 35 แพ้ จาก 50 เกมกับgpt-3.5-turbo-instructและเมื่อคิดข้อได้เปรียบของฝ่ายขาวแล้ว คาดว่าอยู่ที่ราว 1540 Elo ซึ่งยังต่ำกว่าgpt-3.5-turbo-instructที่ราว 1750 Elo
การตั้งโจทย์: ทำไมมีแค่ gpt-3.5-turbo-instruct ที่เล่นหมากรุกเก่ง
- จุดตั้งต้นของข้อสังเกตก่อนหน้าคือ LLM ส่วนใหญ่เล่นหมากรุกได้แย่มาก แต่
gpt-3.5-turbo-instructกลับเล่นได้ในระดับ สมัครเล่นขั้นสูง - แม้โมเดลนี้จะค่อนข้างเล็กและมีอายุมากกว่าหนึ่งปีแล้ว แต่กลับพบว่าเล่นหมากรุกได้ดีกว่าโมเดลรุ่นใหม่
- คำอธิบายที่เป็นไปได้หลัก ๆ มีสี่ข้อ
- base model ขนาดใหญ่อาจเล่นหมากรุกได้ดี แต่ความสามารถนี้ไม่ถูกคงไว้ใน chat model ที่ผ่าน instruction tuning
gpt-3.5-turbo-instructอาจถูกฝึกด้วยข้อมูลหมากรุกมากกว่า- มีองค์ประกอบพิเศษบางอย่างในสถาปัตยกรรม LLM บางแบบ
- ข้อมูลหมากรุกอาจต้องมีสัดส่วนมากพอในชุดข้อมูลฝึกทั้งหมด
- หลังจากนั้น การอภิปรายก็แคบลงมาเหลือเรื่องความเป็นไปได้ที่ OpenAI จะเรียกใช้เอนจินหมากรุก ความจริงที่ว่า LLM เล่นหมากรุกเองหรือไม่ และความต่างระหว่าง base model กับ chat model
สมมติฐานว่าแอบใช้เอนจินหมากรุกไม่น่าเชื่อถือมาก
- ความสงสัยว่า
gpt-3.5-turbo-instructรู้จำสัญกรณ์หมากรุกและเรียกใช้เอนจินหมากรุกภายนอกนั้น ดูมีโอกาสเป็นไปได้น้อยมาก - เหตุผลมีหลายทาง
- ผู้เกี่ยวข้องกับ OpenAI ระบุว่าไม่มีการทำเช่นนั้น
- เอนจินหมากรุกจะประเมินกระดานเดียวกันเหมือนกันไม่ว่ามาถึงตำแหน่งนั้นด้วยลำดับไหน แต่
gpt-3.5-turbo-instructกลับเดินต่างกันเมื่อ ลำดับการมาถึงของตำแหน่ง ต่างกัน แม้กระดานจะเหมือนเดิม - ถ้าวัดตามมาตรฐานสมัครเล่นหมากรุกก็ถือว่าดี แต่ถ้าวัดตามมาตรฐานผู้เชี่ยวชาญยังอ่อน และเมื่อเทียบกับเอนจินหมากรุกแล้วประสิทธิภาพต่ำมาก
- เมื่อเปลี่ยนพรอมป์ต รูปแบบการเล่นก็เปลี่ยนเล็กน้อย
- โมเดล OpenAI รุ่นหลัง ๆ เล่นได้แย่กว่ามากในสภาพตั้งต้น แต่หากใช้พรอมป์ตที่เหมาะสมก็เล่นได้ดีขึ้น
- หากมีการโกงจริง ก็เท่ากับต้องใช้วิธีที่ซับซ้อนมากเพื่อให้ดูไม่เหมือนการเรียกเอนจินภายนอก และทำให้เหมือนว่า LLM เป็นฝ่ายเลือกตาเดินเองโดยตรง
LLM ไม่ได้เล่นด้วยการท่องจำอย่างเดียว
gpt-3.5-turbo-instructยังเสนอ ตาเดินผิดกติกา ได้เป็นครั้งคราว แม้ในช่วงกลางถึงท้ายเกม- สำหรับสตริงอย่าง
1. e4 d5 2. exd5 Qxd5 3. Nc3การตัดสินว่าตาเดินสุดท้ายถูกกติกาหรือไม่นั้น ต้องเข้าใจกติกาหมากรุกและติดตามสถานะกระดาน - ในเกมจริง
gpt-3.5-turbo-instructก็ยังเล่นได้ค่อนข้างดีในสถานะกระดานใหม่ที่ไม่เคยเกิดขึ้นในประวัติศาสตร์ - ดังนั้นคำอธิบายที่ว่าโมเดลแค่จำช่วงเปิดเกม แล้วหลังจากนั้นเดินแบบสุ่มจึงไม่ถูกต้อง
การทดลองพื้นฐาน: ความต่างระหว่าง completion model กับ chat model
gpt-3.5-turbo-instructเป็น completion model จึงดึงตาเดินถัดไปด้วยวิธีให้ต่อข้อความในรูปแบบ PGN- ตัวอย่างคือให้
[Event "Shamkir Chess"], ชื่อผู้เล่น, Elo, ผลการแข่งขัน, และสกอร์อย่าง1. e4 e5 2. Nf3 Nc6 3.
- ตัวอย่างคือให้
gpt-4o-miniและgpt-4oเป็น chat model จึงใช้ system prompt และ user prompt เพื่อให้ตอบเฉพาะตาเดินถัดไปในรูปแบบมาตรฐานพีชคณิต- ทดสอบกับ Stockfish level 1 โดยให้เวลาไม่เกิน 0.01 วินาทีต่อตาเดิน แล้วหาค่าเฉลี่ยจาก 50 เกม พร้อมคำนวณคะแนนแต่ละตาหลังจบเกมเป็นหน่วย centipawn
- pawn คิดเป็น 100 คะแนน
- ±1500 หมายถึงผลแพ้ชนะ
- ในพรอมป์ตพื้นฐาน
gpt-3.5-turbo-instructแข็งแกร่ง ขณะที่ chat model อย่างgpt-4oและgpt-4o-miniออกมาอ่อนกว่า
การทดลองโครงสร้างพรอมป์ต
- มีการทดลองสลับองค์ประกอบ เช่น จะทวน system prompt ซ้ำไว้ต้น user prompt หรือไม่ และจะใส่ เมทาดาทา เช่นชื่อผู้เล่นและ Elo หรือไม่
- สำหรับ
gpt-4o-miniดูเหมือนแทบไม่มีความต่างมากนัก - สำหรับ
gpt-4oการทวน system prompt ดูช่วยเล็กน้อย ส่วนเมทาดาทาดูเหมือนจะเป็นผลเสียเล็กน้อย แต่ก็อาจเป็นแค่สัญญาณรบกวน - ในการทดลองถัดไปจึงปิดทั้งการทวน system prompt และเมทาดาทาเพื่อให้เรียบง่าย
เพียงสามตัวอย่างก็ช่วยเพิ่มประสิทธิภาพอย่างมาก
- ใช้วิธีที่นิยมสำหรับให้ LLM ทำงาน โดยส่ง ตัวอย่างอินพุต/เอาต์พุต สั้น ๆ สามชุดผ่าน API
- อินพุต
1.→ เอาต์พุตe4 - อินพุต
1. e4→ เอาต์พุตd5 - อินพุต
1. e4 e5 2. Nf3 Nc6 3.→ เอาต์พุตBb5
- อินพุต
- เพียงสามตัวอย่างนี้ ผลลัพธ์ก็ดีขึ้นมาก
- อาจมีตัวอย่างที่มากกว่าหรือแบบอื่นที่ดีกว่า แต่การสร้างกราฟแต่ละภาพต้องใช้คำขอจำนวนมาก จึงไม่ได้ตรวจเพิ่ม
ไฟน์จูนช่วยได้ แต่การใช้ร่วมกับตัวอย่างยังไม่เสถียร
- มีการทำ ไฟน์จูน ทั้งกับ
gpt-4o-miniและgpt-4o - วิธีสร้างข้อมูลเป็นดังนี้
- ให้ Stockfish เล่นกับตัวเอง 100 เกมที่ระดับความยากสูงสุด
- ในแต่ละเกมสุ่มเลือกหนึ่งตาเดินมาใช้เป็นตัวอย่างฝึก
- แยกอีก 100 เกมจากการเล่นกันเองของ Stockfish มาใช้เป็นข้อมูลตรวจสอบ
- การไฟน์จูนเองช่วยเพิ่มประสิทธิภาพ
- อย่างไรก็ตาม ผลไฟน์จูนครั้งแรกของ
gpt-4oดูแย่ลง จึงรันใหม่ด้วย step size ที่เล็กกว่า และประเด็นนี้ยังเป็นปัจจัยที่ทำให้ไม่แน่ใจ - เมื่อรวมตัวอย่างกับไฟน์จูนแล้ว ผลลัพธ์ไม่ได้ดีขึ้นสม่ำเสมอตามที่คาด
- มีแต่ไฟน์จูนก็ช่วยได้
- มีแต่ตัวอย่างก็ช่วยได้
- ไฟน์จูนแล้วเพิ่มตัวอย่างเข้าไป แทบไม่เกิดผล
- ในสภาพที่มีตัวอย่างอยู่แล้ว การไฟน์จูนกลับให้ผลเสีย
การให้รายการตาเดินที่ถูกกติกากลับทำลายประสิทธิภาพ
- เพราะโมเดลออกตาเดินผิดกติกาเป็นครั้งคราว จึงทดลองให้ รายการตาเดินที่ถูกกติกา ทั้งหมดในตำแหน่งปัจจุบันไว้ก่อนสกอร์เกม
- system prompt ก็ถูกเปลี่ยนให้รับรายการตาเดินที่ถูกกติกาและบันทึกเกมบางส่วน
- ผลลัพธ์แย่มาก
- ไม่เพียงอัตราชนะลดลง แต่ยังเริ่มพลาดตั้งแต่ตาเดินต้น ๆ มากขึ้นด้วย
- หลังจากนั้นจึงเลิกใช้วิธีให้รายการตาเดินที่ถูกกติกา
ไอเดียหลัก: ทำให้โมเดลทวนบันทึกทั้งเกม
- chat model ทำงานในรูปแบบบทสนทนาอย่าง
<|SYSTEM|>,<|USER|>,<|ASSISTANT|>ผ่าน special token และ instruction tuning - ส่วน base model ใกล้เคียงกับ completion model ที่ต่อสตริงข้อความ และบันทึกเกมแบบ PGN ก็เข้ากับวิธีนี้มากกว่า
- ไม่สามารถเข้าถึง
gpt-4-baseของ OpenAI โดยตรง และก็เรียกgpt-4oใน completion mode ไม่ได้ จึงเปรียบเทียบตรง ๆ ไม่ได้ - จึงใช้วิธีทำให้
gpt-4oประพฤติตัวคล้าย completion model โดยไม่ให้ตอบแค่ตาเดินถัดไป แต่ให้ ทวนทั้งเกมก่อน แล้วค่อยต่อด้วยตาเดินใหม่อีกหนึ่งตา - เช่น ถ้าอินพุตเป็น
1. e4 e5 2.ก็ให้เอาต์พุตเป็นรูปแบบ1. e4 e5 2. Nf7 - วิธีนี้ช่วยเพิ่มความสามารถในการเล่นหมากรุกของ
gpt-4o-miniและgpt-4o - การบังคับให้ทวนลำดับทั้งหมดทำให้โมเดลสร้างบริบทที่ทำให้มีโอกาสเลือกตาเดินที่ดีด้วยตัวเอง
- ผลนี้จึงเป็นหลักฐานว่า หากสามารถเรียก
gpt-4-baseที่เข้าถึงไม่ได้ใน completion mode ได้ มันอาจเล่นหมากรุกได้ดีพอสมควร
การผสม regurgitation, ตัวอย่าง, และไฟน์จูน
- มีการทดลองไฟน์จูนใหม่อีกครั้งภายใต้วิธีทวนบันทึกเกม
- อินพุตยังเป็นบันทึกเกมบางส่วนเหมือนเดิม
- เอาต์พุตที่ต้องการคือการทวนบันทึกอินพุตทั้งหมดแล้วต่อด้วยตาเดินถัดไป
- การไฟน์จูนในรูปแบบนี้ดูเหมือนจะช่วยได้เล็กน้อย
- มีการจัดตัวอย่างสามชุดใหม่ให้เข้ากับวิธีทวนบันทึกเกมด้วย
- อินพุต
1.→ เอาต์พุต1. e4 - อินพุต
1. d4→ เอาต์พุต1. d4 d5 - อินพุต
1. e4 e5 2. Nf3 Nc6 3.→ เอาต์พุต1. e4 e5 2. Nf3 Nc6 3. Nf3
- อินพุต
- แม้ข้อมูลที่ให้จะน้อย แต่ตัวอย่างก็ยังส่งผลมากอีกครั้ง
- เมื่อใช้ตัวอย่างร่วมกับไฟน์จูน ก็ยังเกิดรูปแบบแปลกเดิมซ้ำ
- ถ้าเพิ่มตัวอย่างเข้าไปหลังไฟน์จูนจะช่วยได้
- แต่ก็ยังแย่กว่ากรณีที่ใช้ตัวอย่างอย่างเดียว
ผลการทดลองและการประเมิน Elo
- ผลการทดลองสรุปได้เป็นสามกลุ่ม
- ดี: การทวนบันทึกเกม, ตัวอย่าง, และไฟน์จูนแบบไม่มีตัวอย่าง
- ไม่ชัดเจน: เมทาดาทา, การทวน system prompt, และไฟน์จูนที่ใช้ร่วมกับตัวอย่าง
- แย่: การให้รายการตาเดินที่ถูกกติกา
- ชุดค่าผสมสุดท้ายคือใช้การทวนบันทึกเกมและตัวอย่าง แล้วปิดอย่างอื่นทั้งหมด
gpt-4o + regurgitation + examplesทำได้ค่อนข้างดี แต่ยังไม่แข็งแกร่งเท่าgpt-3.5-turbo-instruct- ทั้งสองโมเดลเล่นกัน 50 เกม และทุกเกม
gpt-4oเป็นฝ่ายขาว
ผลของ gpt-4o |
จำนวน |
|---|---|
| ชนะ | 10 |
| เสมอ | 5 |
| แพ้ | 35 |
- ผลนี้สอดคล้องกับความต่าง Elo ราว -191
- หากสะท้อนข้อได้เปรียบจากการเดินก่อนของฝ่ายขาวที่ทราบกันว่าประมาณ 35 Elo ก็จะประเมินได้ว่า
gpt-4o + regurgitation + examplesอยู่ที่ราว1750 - 191 - 35/2 ≈ 1540 Elo - ระดับนี้ถือว่าอยู่ในขั้น สมัครเล่นระดับกลาง
สมมติฐานปัจจุบัน: ข้อมูลกับอินเทอร์เฟซส่งผลร่วมกัน
- สมมติฐานปัจจุบันแบ่งเป็นสองส่วน
- base model ของ OpenAI น่าจะถูกฝึกด้วย ข้อมูลเกมหมากรุก ที่มากกว่าหรือคุณภาพดีกว่าโมเดลเปิด
- base model รุ่นใหม่ของ OpenAI อาจเล่นหมากรุกได้ดีใน completion mode แต่ chat model ที่เข้าถึงได้จริงกลับไม่เป็นเช่นนั้น
- โมเดลเปิดทั้งแบบ base model และ chat model ล้วนเล่นหมากรุกได้ไม่ดี ซึ่งทำให้ดูเหมือนว่าสาเหตุหลักน่าจะเป็นความต่างของข้อมูลมากกว่าข้อจำกัดด้านสถาปัตยกรรม
- ในภาคผนวก A.2 ของงานวิจัยหนึ่งมีข้อความว่า GPT-4 ถูกฝึกด้วยเกมหมากรุกในสัญกรณ์ PGN และกรองให้เหลือเฉพาะเกมของผู้เล่นที่มี Elo มากกว่า 1800
- แม้จะไม่มีการยืนยันสาธารณะว่า
gpt-3.5-turbo-instructใช้ข้อมูลเดียวกัน แต่การที่มันเล่นหมากรุกด้วยสัญกรณ์ PGN และวัด Elo ได้ราว 1750 ก็ดูไม่ใช่เรื่องบังเอิญ - ยังไม่สามารถยืนยันได้ว่าการฝึกโมเดลเปิดอย่าง Llama มีข้อมูลหมากรุกรวมอยู่มากน้อยแค่ไหน
- แม้บนอินเทอร์เน็ตเปิดจะมีเกมจำนวนมาก แต่ก็เป็นไปได้ว่าฐานข้อมูลที่คัดเลือกเกมคุณภาพสูงจำนวนมากให้ผลดีกว่า
- เป็นไปได้เช่นกันว่าข้อมูลหมากรุกระดับต่ำที่มากเกินไปทำให้โมเดลมีแนวโน้มทำนายตาเดินคุณภาพต่ำ แต่ในสถานการณ์ที่ลำดับก่อนหน้ามีความแข็งแกร่งอยู่แล้ว โมเดลก็ควรต้องทำนายตาเดินถัดไปของผู้เล่นที่แข็งแกร่ง จึงไม่น่าใช่คำอธิบายหลัก
ความไม่แน่นอนที่ยังเหลือและความรู้สึกเชิงปฏิบัติ
- หาก
gpt-4oใน chat mode อ่อนกว่าgpt-4-baseใน completion mode จริง ก็ยังไม่รู้ว่าสาเหตุมาจาก chat interface, instruction tuning หรือทั้งสองอย่าง - ยังทดลองไม่ได้ว่า หากจำลอง
gpt-4-baseให้ทำงานเหมือน chat mode จะยังเล่นได้ดีหรือไม่ หรือหากเรียกgpt-4oใน completion mode จะเล่นได้ดีหรือไม่ - ยังเป็นไปได้สูงว่าน่าจะมีวิธีอื่นอีกในการดึงพฤติกรรมที่ดีกว่าจาก
gpt-4o - การหาชุดผสมที่เหมาะที่สุดระหว่างพรอมป์ต ตัวอย่าง และไฟน์จูนเป็นเรื่องยากมาก
- พื้นที่ค้นหากว้าง
- ไม่มีนามธรรมง่าย ๆ
- LLM คาดเดายากและเปราะบาง
- การทดลองช้าและมีต้นทุนสูง
- เมื่อนำสูตรสุดท้ายแบบเดียวกันไปใช้กับ
gpt-4กลับเล่นหมากรุกได้ไม่ดี - ชุดผสมที่พบอาจเฉพาะกับ
gpt-4oและสำหรับgpt-4อาจต้องใช้พรอมป์ตแบบอื่น ตัวอย่างมากขึ้น หรือไฟน์จูน - กระบวนการนี้ไวต่อความแตกต่างของแต่ละโมเดลมาก จนให้ความรู้สึกว่าใกล้เคียงกับการ ค้นหาคาถา มากกว่างานวิศวกรรม
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ถ้าต้องการดูว่า gpt-3.5-turbo-instruct เข้าใจหมากรุกจริงหรือไม่ ก็ให้มันเดินตาถัดไปจาก ตำแหน่งถูกกติกาแบบสุ่ม 1,000 ตำแหน่ง ที่ไม่ใช่รุกฆาตก็พอ
ตำแหน่งแบบนี้สร้างได้ด้วย https://github.com/tromp/ChessPositionRanking และแตกต่างโดยสิ้นเชิงจากเกมปกติที่น่าจะเคยเห็นในข้อมูลฝึก อีกทั้งหลายครั้งตัวเลือกตาที่ถูกกติกาก็มีจำกัดมาก
เหมาะสำหรับทดสอบว่าตาถัดไปถูกกติกาหรือไม่ แต่โดยปกติฝ่ายหนึ่งจะได้เปรียบอย่างท่วมท้น จึงไม่ค่อยมีประโยชน์ในการแยกแยะคุณภาพของตาเดิน
น่าทึ่งที่ Hikaru เห็นตำแหน่งหนึ่งแล้วสามารถ “บรรยายสด” ตั้งแต่ต้นได้ว่าตำแหน่งนั้นมาถึงได้อย่างไร แต่ในวิดีโอเดียวกันเขาอธิบายว่าวิธีนั้นแทบใช้ไม่ได้กับปริศนาหมากรุกสุ่มแปลก ๆ
ปริศนาที่มาจากเกมจริงดีกว่าปริศนาที่สร้างแบบสุ่มมาก และสมเหตุสมผลกว่าสำหรับมนุษย์ระดับสูงสุดด้วย
คนที่เข้าใจหมากรุกดี เช่น ระดับ Elo 1800 แทบไม่มีทางที่จะเดินตาที่ถูกกติกาไม่ได้ตั้งแต่ครั้งแรก
การใช้เหตุผลจริง ๆ อาจต้องอาศัยตรรกะเชิงสัญลักษณ์และนามธรรม แต่ LLM คือเครื่องทำนายโทเค็นถัดไป
เช่น เพราะมันเห็นว่าบิชอปเดินเฉียงเสมอ จึงอาจพิจารณาเฉพาะตาแบบนั้นได้ แต่ไม่ได้แปลว่ามันอนุมาน แนวคิดเรื่องตาที่ถูก/ผิดกติกา ออกมาแล้ว
ภายในอาจสร้างอะไรบางอย่างที่แทนตำแหน่งหมากรุกได้ แต่เมื่อป้อนตำแหน่งหมากรุกที่เข้ารหัสไว้ ตัวแทนนั้นก็คงไม่ได้ถูกเปิดใช้งานโดยอัตโนมัติ
ถ้าจะอ้างว่า gpt-3.5-turbo-instruct “เข้าใจ” หมากรุก “ใช้เหตุผล” และทำ “ตรรกะจริง” ได้ ผมอยากให้ลองหาผู้เล่นหมากรุกระดับ สมัครเล่นขั้นสูง ตามที่บทความพูดถึง ที่เดินผิดกติกาให้ดูหน่อย
คนที่รู้หมากรุกจะยืนยันได้ว่าเรื่องแบบนั้นแทบไม่เกิดขึ้น
ผมก็อยากรู้เหมือนกันว่ามีลิงก์เกมที่มีตาผิดกติกาหรือไม่
ยังเคยเห็นสตรีมเมอร์ที่ระดับสูงกว่าผมมากพยายามเดินตาผิดกติกาซ้ำ ๆ ก่อนจะรู้ว่าอินเทอร์เฟซปฏิเสธเพราะเป็นตาที่ผิดกติกา
แค่ค้นหา “GM illegal moves” บน YouTube ก็มีกรณีที่แกรนด์มาสเตอร์เดินผิดกติกามากพอให้ทำเป็นคลิปรวมได้
ตัวอย่าง: https://www.youtube.com/watch?v=m5WVJu154F0 — กรณี Vidit vs Hikaru น่าประทับใจเป็นพิเศษ โดย Vidit ใช้คิงของตัวเองโจมตีคิงของ Hikaru
ตราบใดที่ LLM ยังเป็น กล่องดำ เราก็ไม่อาจรู้ได้ว่ามันเข้าใจตาที่ถูกกติกาด้วยการใช้เหตุผลตามกฎ หรือแค่เรียนรู้จากข้อมูลตาที่ถูกกติกาจำนวนมากจนรู้วิธีสร้างตาที่ถูกกติกาออกมา
จะอ้างว่าฝั่งไหนคือความจริงก็ได้ แต่ไม่มีวิธีใดเลยที่จะเข้าใจจริง ๆ ว่า LLM “คิด” อะไรอยู่
ถ้าจะไม่เดินผิดกติกาเลยในการเล่นหมากรุกปิดตา ก็ต้องเก่งพอสมควร
มนุษย์ แม้แต่ผู้เชี่ยวชาญชื่อดังในสาขาของตนเอง ก็ทำผิดพลาดมากมาย และบางครั้งก็ทำผิดพลาดในขอบเขตความเชี่ยวชาญของตัวเองชนิดที่มีค่าใช้จ่ายสูงมากและเมื่อมองย้อนกลับไปก็เห็นได้ชัดเจน
แต่เมื่อ LLM ที่ฝึกจากคลังข้อความซึ่งเต็มไปด้วยความโง่เขลาของมนุษย์เดินผิดกติกาในหมากรุก สมองกลับตอบสนองทันทีว่า “ฉันไม่เดินผิดกติกาในหมากรุก แล้วคอมพิวเตอร์ทำแบบนั้นจะเรียกว่าเล่นหมากรุกได้อย่างไร?”
อย่างน้อยก็ดูเหมือนเป็นตัวอย่างที่สมบูรณ์แบบของ อคติด้านเมตาค็อกนิชัน และความผิดพลาดในการอนุมานสาเหตุทั่วไป
บทความนี้ก็มีปัญหาเดียวกับบทความก่อนหน้า ผู้เขียนไม่ได้ให้ข้อมูลเกี่ยวกับ ความถี่ของการเดินผิดกติกา เลย
ดังนั้นจึงสรุปอะไรที่มีความหมายไม่ได้
คล้ายกับการอ้างว่า LLM เป็นแพทย์ผู้เชี่ยวชาญ แต่กรองกรณีที่ให้คำแนะนำทางการแพทย์ผิดออกจากข้อมูลทั้งหมด
ถ้าจำนวนครั้งที่พยายามเดินผิดกติกาแตกต่างกันอย่างมีนัยสำคัญระหว่างแต่ละแนวทาง และโดยเฉพาะถ้าความแตกต่างนั้นไม่สัมพันธ์กับประสิทธิภาพหลังตัดการเดินผิดกติกาออก ก็คงน่าสนใจ แต่ไม่ได้สั่นคลอนข้อสรุปของบทความมากนัก
ถ้าสุ่มเลือกจากชุดการเดินที่ถูกกติกา ก็จะกลายเป็นผู้เล่นหมากรุกที่แย่มากจริง ๆ ดังนั้นถ้าเมื่อสุ่มจากเอาต์พุตของ LLM แล้วเล่นได้ดีกว่ามาก ก็ชัดเจนว่า LLM กำลังให้อะไรบางอย่างอยู่
การถกเรื่องนิยามความสามารถของ LLM เพียงลำพังโดยบอกว่าควรนับการพยายามเดินผิดกติกาทั้งหมดเป็นแพ้ ดูเหมือนจะหลุดจากประเด็นหลัก
ถ้าเป็นเช่นนั้น “LLM+สคริปต์” ก็จะกลายเป็นแพทย์ผู้เชี่ยวชาญได้จริง ๆ แต่แม้จะทำได้กับการเดินหมากรุกผิดกติกา แน่นอนว่าย่อมเป็นไปไม่ได้กับการประเมินคำแนะนำทางการแพทย์
แม้จะไม่ได้อยู่ในนี้ แต่ turbo instruct เคยถูกประเมินมาก่อน
https://github.com/adamkarvonen/chess_gpt_eval
สัดส่วน train เกิน 99% และ test ต่ำกว่า 1% จึงไม่ผ่านแม้แต่พื้นฐานของการตรวจสอบความถูกต้อง AI
ถ้าเป็นงานประชุม AI ส่วนใหญ่ บทความนี้คงยืนไม่ไหว แต่กลับได้ตีพิมพ์ใน Nature Medicine ซึ่งมี impact factor สูงมาก และถูกอ้างอิงมากในวงการ AI ทางการแพทย์
https://www.nature.com/articles/s41591-018-0268-3
ประโยคที่ว่า “ในหลาย ๆ แง่ มันให้ความรู้สึกเหมือนการค้นหาคาถามากกว่าวิศวกรรม” ยังคงตรงกับความรู้สึกของผมต่อ LLM โดยรวม
น่าทึ่งที่มันใช้งานได้ แต่หวังว่านวัตกรรมทางเทคโนโลยีครั้งต่อไปจะไม่ทำให้รู้สึกเหมือนอยู่ในหนังไซไฟเกรดบีทุกครั้ง
ผมไม่คิดว่า “ทุกคนผิด”
ไม่ใช่มีแค่ผมที่พูดประเด็นนี้ด้วย จึงแปลกใจที่ทฤษฎีนี้ไม่อยู่ในรายการ เพราะเมื่อ 7 วันก่อนก็เขียนไว้แบบนี้: https://news.ycombinator.com/item?id=42145710
“อะไรก็ตามที่กลายเป็น benchmark สาธารณะ ควรถือว่าถูกเล็งเป้าอย่างเฉพาะเจาะจงระหว่างการฝึก”
นี่ต่างจากทฤษฎี “การโกง/การแทนที่เอาต์พุตของ LLM” ที่บทความกล่าวถึงและโต้แย้ง
บทความติดตามผลช่วยสนับสนุนข้อสันนิษฐานนี้ OpenAI ฝึกโมเดลพื้นฐานด้วยข้อมูลเกมหมากรุกที่มากกว่าและดีกว่าโมเดลเปิด และในภาคผนวก A.2 ของบทความหนึ่ง ผู้เขียนจาก OpenAI ระบุว่า GPT-4 ถูกฝึกด้วยเกมหมากรุกในรูปแบบ PGN ของผู้เล่นที่มี Elo 1800 ขึ้นไป
เป็นเรื่องสมเหตุสมผลอย่างยิ่งที่ OpenAI จะ เสริม ข้อมูลฝึกด้วยข้อมูลของงานที่ผู้คนมีแนวโน้มจะลองทำจริง
นี่ก็ไม่ใช่เรื่องผิดจริยธรรมด้วย ไม่มี dataset ใดที่ “เป็นกลาง” จริง ๆ อยู่แล้ว ดังนั้นถ้าต้องเลือกอยู่ดี ก็ไม่มีเหตุผลที่จะไม่ฝึกให้ตอบสิ่งที่อาจมีประโยชน์ได้ดี
อย่างไรก็ตาม OpenAI ก็มีประสบการณ์ด้าน เกม AI มาก
https://news.ycombinator.com/item?id=42145215
ไม่มีใครจะฝึก LLM ขนาดใหญ่ที่แพงมหาศาลด้วย dataset มหึมา โดยหวังว่าจะมีบล็อกเกอร์สักคนบังเอิญค้นพบประสิทธิภาพที่งุ่มง่ามระดับ 1800 Elo แล้วทวีตถึงมัน
หมากรุกก็ไม่ใช่ benchmark มาตรฐานของ LLM ถึงขั้นจะเป็นเป้าหมายของ Goodhart และโดยรวมแล้ว OpenAI มักพยายามแก้ปัญหาด้วยวิธีที่ถูกต้องมากกว่าทางลัดหรือการโกง
ตระกูล GPT น่าจะ overfit กับ benchmark มาตรฐานหรือกรณีโต้แย้งได้ง่าย และยังมีมูลค่าทางประชาสัมพันธ์สูงกว่ามาก แต่ก็ไม่ได้ overfit อย่างรุนแรง เช่น การฝึกกับ “ปัญหาสตรอว์เบอร์รี” อะไรทำนองนั้นคงทำได้ง่ายมาก
ในทางกลับกัน ผู้ให้บริการ LLM บางรายอื่นมีคะแนนตกลงมากกว่าอย่างเห็นได้ชัดในงานวิจัยด้านการป้องกันการท่องจำ
อีกทั้งบทความที่กล่าวถึง dataset นั้นเองก็มีการใช้งานเพื่อการวิจัยที่ชัดเจน และหมากรุกเป็นที่สนใจในฐานะ model organism สำหรับวิเคราะห์การชี้นำและ world modeling ของ LLM เพราะสามารถใช้ oracle ได้
บทความ LLM หมากรุกแบบ bullet chess ของ DeepMind ก็ไม่ใช่ส่วนหนึ่งของแผนเจ้าเล่ห์เพื่อให้ Gemini แกล้งทำเป็นเล่นหมากรุกเก่งแล้วเอาไปใช้ทำการตลาด GCP
ตอนแรกพวกเขาอาจคิดว่าหมากรุกเท่ดี และพรุ่งนี้อาจคิดว่าความสามารถด้านโกะหรือการแต่งบทกวีนั้นเท่ก็ได้
คือไม่ว่าจะเป็นสาขาใด ก็ใส่ เนื้อหาจากผู้เชี่ยวชาญ ลงในข้อมูลฝึกให้มากกว่าเนื้อหาจาก “มือสมัครเล่น”
ในพรอมป์ไม่ได้มีคำว่า “จงพยายามชนะเกม” แต่ผลลัพธ์กลับถูกวัดจากว่า LLM ชนะได้มากแค่ไหน
นี่เป็นสิ่งที่แฝงอยู่โดยนัยในพรอมป์ว่า “คุณคือแกรนด์มาสเตอร์หมากรุก” หรือเปล่า?
ในการฝึก LLM มีแพตเทิร์นบางอย่างอย่าง “ถ้าเป็นเกมก็ต้องพยายามชนะเสมอ” อยู่ตรงไหนหรือไม่?
ถ้าแค่บอกให้ชนะ อัตราชนะจะเพิ่มขึ้นได้ไหม?
ในตัวอย่างและคำอธิบายของเกมหมากรุก ผู้เล่นแต่ละฝ่ายแทบจะพยายามชนะเสมอ ดังนั้นการเดินหมากที่ทำให้ชนะจึงเป็นเพียงเอาต์พุตที่สมเหตุสมผลที่สุดเท่านั้น
เพราะฉะนั้น แม้จะพรอมป์อย่างชัดเจนให้ชนะ ก็คงไม่น่าทำให้ประสิทธิภาพดีขึ้นมากนัก
ในทางกลับกัน สิ่งที่น่าสนใจคือถ้าบอกให้เดินตาแพ้หรือเดินแย่ ๆ จะเป็นอย่างไร ถ้าดูว่ามันทำได้อย่างมีประสิทธิภาพแค่ไหน และตาเดินยังถูกกติกาเป็นส่วนใหญ่หรือไม่ ก็อาจเผยให้เห็นมากขึ้นว่ามันพึ่งพาแนวคิดที่เคยเห็นมาก่อนแค่ไหน
ประโยคนั้นน่าจะเพิ่มความน่าจะเป็นในการสร้างโทเคนของตาเดินที่ดีที่สุดเท่าที่เป็นไปได้
ความสามารถของโมเดลในการสร้างลำดับหมากรุกถูกจำกัดด้วยระดับความเชี่ยวชาญที่อยู่ในพูลเกมจากข้อมูลฝึก
แม้จะมีเกมบางส่วนที่ผู้เล่นบางคนตั้งใจแพ้ปะปนอยู่ ก็คงน้อยมาก และในเกมหมากรุกก็ไม่ได้ใส่หมายเหตุเจตนาของผู้เล่นไว้ ดังนั้นต่อให้พรอมป์ให้ชนะหรือแพ้ LLM ก็แยกแยะและจับสิ่งนั้นไม่ได้
ลองสั่งให้ LLM ตั้งใจแพ้ก็จะรู้ จากประสบการณ์ของผม ChatGPT พยายามจัดตำแหน่งตัวเองให้โดน scholar's mate แต่ถ้าฝ่ายตรงข้ามไม่ยอมรับกับดักนั้น มันก็เริ่มกินตัวหมากที่อีกฝ่ายปล่อยไว้ เหมือนพยายามชนะโดยนัย
พอถามว่า “ทำไม?” มันก็ให้ การหาเหตุผลย้อนหลัง ออกมาเหมือนเคย
เพราะฉะนั้นจึงแปลกใจที่ไม่มีถ้อยคำอย่าง “และจงชนะ” หรือ “ฝ่ายดำชนะ”
ถ้าเพราะ reinforcement learning ทำให้ LLM ตั้งใจหลีกเลี่ยงไม่ให้มนุษย์รู้สึกแย่เพราะแพ้เกม ก็คงตลกดี
การปรับปรุงพรอมป์เป็นเรื่องดี แต่ยังพลาดโอกาสปรับปรุงครั้งใหญ่สองอย่างอยู่
อย่างแรก ให้โมเดลอธิบายตำแหน่งกระดานปัจจุบันและแผนล่วงหน้าก่อนเสนอการเดินหมาก วิธีนี้ทำให้โมเดลได้คิดจริง ๆ และคล้ายกับ o1 แต่ในกรณีนี้สามารถรับประกันการประมวลผลที่โฟกัสกว่าได้
อย่างที่สอง ให้มันวาด กระดาน ASCII จริง ๆ ในทุกขั้นตอน รูปแบบกระดาน+ตาเดินน่าจะประมวลผลได้เสถียรและง่ายกว่าการเรียงตาเดิน 20 ตา จึงอาจเพิ่มจำนวนตาเดินที่ถูกกติกาได้
“กราฟิก” สองมิติแบบ ASCII art เป็นสิ่งที่โมเดลภาษาคุ้นเคยน้อย และโมเดลมองข้อความเป็นสตรีมของโทเคนรวมถึงการขึ้นบรรทัดใหม่ ดังนั้นความสัมพันธ์ “แนวตั้ง” ระหว่างบรรทัดจึงไม่ได้ชัดเจนเหมือนที่มนุษย์เห็น
แม้ใน context window จะมีไดอะแกรมกระดานอยู่ ก็มีความเป็นไปได้สูงว่าจะไม่ได้ช่วยโมเดลอนุมานเกมมากนัก
แทนที่จะทำแบบนั้น การให้ระบุตำแหน่งของตัวหมากแต่ละตัวเป็นข้อความธรรมดา เช่น “อัศวินดำที่ c5” อาจเหมาะกว่าในการเสริม การรับรู้ตำแหน่ง
ข้อ 1 คุ้มค่าที่จะลองแน่นอน และยังมีรูปแบบแปรผันที่ได้ผลแตกต่างกันไปตามโมเดลด้วย
สำหรับโมเดลของ Anthropic เอกสารแนะนำให้ติดป้ายและจัดประเภทส่วนสำคัญของอินพุตด้วยรูปแบบ XML โครงสร้างแบบนุ่มนวลนี้ดูเหมือนจะช่วยปรับปรุงผลลัพธ์ของโมเดล Claude และน่าจะถูกฝึกมาเป็นพิเศษให้โมเดลรู้จักสิ่งนี้
อ้างอิง: https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
ถ้าเป็นโมเดล Anthropic พรอมป์สุดท้ายอาจเป็นประมาณว่า “คุณคือแกรนด์มาสเตอร์หมากรุก ดูเกมที่ยังไม่จบภายในแท็ก แล้วทวนเกมทั้งหมด จากนั้นให้ตาเดินใหม่หนึ่งตาในสัญกรณ์พีชคณิตมาตรฐาน และก่อนให้บันทึกเกมใหม่ ให้อธิบายการให้เหตุผลภายในบล็อกแท็ก”
พรอมป์แบบนี้ถูกออกแบบมาให้สร้างการปรับปรุงที่เห็นได้ชัดในโมเดล Anthropic
น่าขันที่แม้จะใช้ Claude 3.5 Sonnet หนัก ๆ มาหลายเดือน ผมเพิ่งค้นพบเรื่องนี้เมื่อไม่กี่สัปดาห์ก่อน RTFM ยังคงเป็นทักษะที่มีประโยชน์
โมเดล OpenAI ก็อาจมี affordance ที่เรียบง่ายคล้ายกันแต่ไม่ค่อยมีคนรู้เช่นกัน
ในการทดลองหมากรุกของผมเมื่อ 1.5 ปีก่อน ทริกการทวนลำดับตาเดินทั้งหมด เป็นเทคนิคที่ดีที่สุดโดยไม่ต้อง fine-tune
อยากเห็นผลลัพธ์เหมือนกัน แต่ถ้ามันดีขึ้นก็คงน่าประหลาดใจทีเดียว
มีสมมติฐานว่าถ้าให้เวลาและพื้นที่มากขึ้นด้วยวิธีอื่น ประสิทธิภาพก็อาจดีขึ้นได้อีก
เช่น ให้แสดงตำแหน่งกระดานปัจจุบัน วิเคราะห์ตำแหน่ง รายการจุดอ่อนและจุดแข็งหลัก รายการกลยุทธ์ที่เป็นไปได้ เลือกกลยุทธ์จากนั้น แล้วสุดท้ายจึงเลือกตาเดิน
กล่าวคือไม่ให้มันพ่นตาเดินออกมาทันที แต่ทำให้มันคิดจริง ๆ ในที่นี้ตัวอย่างน่าจะเป็นหัวใจสำคัญ
แนวคิดแบบนี้แสดงให้เห็นว่าได้ผลดีในงานวิจัย ReAct และงานวิจัย chain of thought และยังสามารถต่อยอดด้วยการทำซ้ำ N ครั้งแล้วหยุดเมื่อได้คำตอบเสียงข้างมากด้วย ซึ่งเป็นไอเดียจากงานวิจัย self-consistency ของ chain of thought
ประเด็นที่ว่า “fine-tuning ช่วยได้ และตัวอย่างก็ช่วยได้ แต่สิ่งที่ทำให้ fine-tuning ไม่จำเป็นคือตัวอย่าง ไม่ใช่กลับกัน” น่าสนใจมาก
ในกรณีเฉพาะนี้ การแค่ ให้ตัวอย่าง ก็เทียบเท่ากับ fine-tuning
สำหรับผมนี่เป็นการค้นพบครั้งใหญ่ และต่อไปตั้งใจจะใช้ตัวอย่างบ่อยขึ้น
อธิบายเหตุผลได้ยาก แต่ผมมีลางสังหรณ์มาตลอดว่า fine-tuning ถูกประเมินค่าสูงเกินไป
เหตุผลหนึ่งอาจเป็นเพราะตัวอย่างอยู่ “ตรงนั้นเลย” จึงได้รับน้ำหนักโดยนัยสูงกว่านิวรอนที่ถูก fine-tune มาก
ในกรณีของเล่นนี้อาจไม่สำคัญมากนัก แต่ควรจำไว้ว่าตัวอย่างแต่ละรายการที่ใส่ในอินพุตจะเพิ่ม เวลาและต้นทุนในการทำนาย เมื่อเทียบกับ fine-tuning
ควรเลิกทดลองแบบคลำทางในความมืดด้วย LLM เชิงพาณิชย์ได้แล้ว
ถ้าต้องการดูให้ถึงแก่นของปัญหานี้ น่าจะน่าสนใจที่จะลองฝึก LLM ด้วยเกมหมากรุกเพียงอย่างเดียว สามารถให้ Stockfish เล่นกับตัวเองเพื่อสังเคราะห์ข้อมูลได้ไม่จำกัด และอาจผสมตัวอย่างบทสนทนาเกี่ยวกับหมากรุกเล็กน้อย เช่น คำอธิบายเกมหมากรุก, “บนกระดานมีเบี้ยกี่ตัว?”, “เรือของฉันอยู่ที่ไหน?”, “วาดกระดานให้ดู” เพื่อแสดงว่ามันมีการแทนค่ากระดานหรือไม่
ไม่เชื่อว่า “ปรากฏการณ์อุบัติใหม่” หรือความสามารถด้านภาษาทั่วไป หรือความสามารถในการทำเหมือนว่ามีความสามารถ จำเป็นต่อการเล่นหมากรุก การเล่นหมากรุกเก่งไม่ได้แปลว่าจะฉลาดเรื่องอื่น ๆ และในทางกลับกันก็เช่นกัน
การทดลองแบบนี้อาจพิสูจน์ได้ว่าผมคิดผิด
论文ที่ออกมาเมื่อประมาณหนึ่งสัปดาห์ก่อน https://arxiv.org/pdf/2411.06655 ดูเหมือนจะได้ผลลัพธ์ที่ดีด้วย Llama ที่ผ่านการ fine-tune
ผมชอบ论文นี้ที่ว่าด้วยความสามารถในการบรรยายหมากรุกด้วย: https://arxiv.org/abs/2410.20811
อาจเพิ่มรางวัลที่เหลืออยู่เพื่อให้เครือข่ายเรียนรู้ว่าตาแบบใดปรากฏในเกมที่ดีและเกมที่แย่ ซึ่งจะกลายเป็นกรอบการเรียนรู้แบบเสริมกำลังออฟไลน์อย่าง Decision Transformer
ผมมองว่าทักษะหมากรุกไม่มีประโยชน์โดยสิ้นเชิงสำหรับ LLM ทั่วไป และไม่ใช่ปรากฏการณ์อุบัติใหม่ แต่เป็นเพียงการใช้แบนด์วิดท์ของ gradient กับพื้นที่พารามิเตอร์ไปกับลูกเล่นเจ๋ง ๆ นี้เท่านั้น
เรื่องนี้เห็นได้ชัดจากการที่ LLM ที่ไม่ได้ฝึกมาเฉพาะทางด้านหมากรุกเล่นหมากรุกได้ไม่ดี
หากสร้าง tokenizer ที่ปรับให้เหมาะกับการแทนตาเดินหมากรุก แล้วฝึก LLM ตั้งแต่ต้นด้วยเกมของ Stockfish ก็น่าจะน่าสนใจ
ถ้าใช้ tokenizer แบบกำหนดเอง คุณภาพน่าจะดีขึ้นที่ขนาดโมเดลเท่ากัน
ไม่จำเป็นต้องเสียเลเยอร์จำนวนมากไปกับการเข้ารหัสและถอดรหัส และการแทนค่าแฝงที่ “เป็นธรรมชาติ” ก็อาจเข้าใจได้โดยสัญชาตญาณมากขึ้น