LLM शतरंज की अजीब विसंगति अब कुछ हद तक समझ में आने लगी
(dynomight.net)- जहाँ अधिकांश LLM शतरंज नहीं खेल पाते, वहाँ सिर्फ
gpt-3.5-turbo-instructके असामान्य रूप से मजबूत होने की घटना को अब कुछ हद तक इस प्रयोग से समझाया गया है कि prompt interface बदलने परgpt-4oऔरgpt-4o-miniभी काफ़ी बेहतर हो जाते हैं - OpenAI के गुप्त रूप से chess engine कॉल करने की परिकल्पना कमज़ोर लगती है: एक ही बोर्ड पर भी वहाँ तक पहुँचने की चालों के क्रम के अनुसार अलग चाल चलना, prompt बदलाव के प्रति संवेदनशील होना, और प्रदर्शन का engine नहीं बल्कि लगभग 1750 Elo स्तर पर रुक जाना
- सिर्फ तीन छोटे in-context examples से प्रदर्शन बहुत बढ़ गया, और Stockfish की 100 self-play games से चुने गए उदाहरणों पर fine-tuning करने पर भी सुधार दिखा
- इसके उलट, वर्तमान में उपलब्ध legal moves की सूची बताने पर प्रदर्शन बहुत बिगड़ गया, और पूरी game notation दोहराने के बाद अगली चाल जोड़ने वाली regurgitation शैली ने chat model को completion model की तरह व्यवहार करने पर मजबूर करके प्रदर्शन बढ़ाया
- अंतिम संयोजन
gpt-4o + regurgitation + examplesनेgpt-3.5-turbo-instructके खिलाफ 50 खेलों में 10 जीत, 5 ड्रॉ, 35 हार दर्ज की, और सफ़ेद मोहरों के लाभ को ध्यान में रखें तो इसका अनुमानित स्तर लगभग 1540 Elo है, जोgpt-3.5-turbo-instructके लगभग 1750 Elo से कम है
समस्या की सेटिंग: सिर्फ gpt-3.5-turbo-instruct ही शतरंज अच्छा क्यों खेलता है
- शुरुआती अवलोकन यह था कि अधिकांश LLM शतरंज बहुत खराब खेलते हैं, लेकिन
gpt-3.5-turbo-instructउन्नत शौकिया स्तर पर खेलता है - यह मॉडल एक साल से भी पुराना और अपेक्षाकृत छोटा है, फिर भी यह नए मॉडलों से बेहतर शतरंज खेलता दिखा
- इसके चार बड़े संभावित कारण माने गए थे
- बड़े base model शतरंज अच्छे खेलते हैं, लेकिन instruction tuning से गुज़रे chat model में यह क्षमता बनी नहीं रहती
gpt-3.5-turbo-instructको अधिक शतरंज डेटा पर train किया गया- किसी खास LLM architecture में कोई विशेष तत्व है
- training data में शतरंज डेटा का हिस्सा पर्याप्त बड़ा होना चाहिए
- बाद की चर्चा OpenAI द्वारा chess engine कॉल करने की संभावना, LLM वास्तव में शतरंज खेलता है या नहीं, और base model बनाम chat model के अंतर पर सिमट गई
गुप्त chess engine इस्तेमाल करने की परिकल्पना कम विश्वसनीय है
- यह शक कि
gpt-3.5-turbo-instructशतरंज notation पहचानकर कोई बाहरी chess engine कॉल करता है, बहुत कम संभावित लगता है - इसके समर्थन में कई तर्क हैं
- OpenAI से जुड़े लोगों ने कहा कि ऐसा कोई प्रोसेस नहीं था
- chess engine एक ही बोर्ड स्थिति पर, उससे पहले की चालों की परवाह किए बिना, वही मूल्यांकन देता है; लेकिन
gpt-3.5-turbo-instructएक ही बोर्ड पर भी वहाँ तक पहुँचने की चालों के क्रम बदलने पर अलग चाल चलता है - शतरंज के शौकिया मानदंड से यह अच्छा है, लेकिन विशेषज्ञ स्तर से काफ़ी कमज़ोर है, और chess engine की तुलना में इसका प्रदर्शन बहुत नीचे है
- prompt बदलने पर इसका खेल सूक्ष्म रूप से बदल जाता है
- बाद के OpenAI मॉडल डिफ़ॉल्ट रूप में बहुत खराब खेलते हैं, लेकिन सही prompt देने पर बेहतर खेल सकते हैं
- अगर सचमुच cheating हुई होती, तो इसका मतलब होता कि बाहरी engine call जैसी चीज़ को छिपाते हुए यह दिखाने के लिए बहुत जटिल तरीका अपनाया गया कि LLM खुद चाल चुन रहा है
LLM सिर्फ रटकर शतरंज नहीं खेल रहा
gpt-3.5-turbo-instructएंडगेम में भी illegal moves कम ही सुझाता है1. e4 d5 2. exd5 Qxd5 3. Nc3जैसी स्ट्रिंग में आख़िरी चाल legal है या नहीं, यह तय करने के लिए शतरंज के नियम और स्थिति-ट्रैकिंग दोनों चाहिए- वास्तविक खेलों में भी
gpt-3.5-turbo-instructइतिहास में कभी न देखी गई नई बोर्ड स्थितियों में काफ़ी अच्छा खेलता है - इसलिए यह कहना सही नहीं कि यह opening याद रखता है और बाद में random चालें चलता है
मूल प्रयोग: completion model और chat model का अंतर
gpt-3.5-turbo-instructएक completion model है, इसलिए अगली चाल पाने के लिए उससे PGN रूप के टेक्स्ट को आगे बढ़ाने के लिए कहा गया- उदाहरण के तौर पर
[Event "Shamkir Chess"], खिलाड़ियों के नाम, Elo, परिणाम, और1. e4 e5 2. Nf3 Nc6 3.जैसी notation दी जाती है
- उदाहरण के तौर पर
gpt-4o-miniऔरgpt-4ochat model हैं, इसलिए system prompt और user prompt के ज़रिए उनसे सिर्फ अगली चाल standard algebraic notation में देने को कहा गया- Stockfish level 1 के खिलाफ हर चाल पर अधिकतम 0.01 सेकंड देकर 50 खेलों का औसत लिया गया, और खेल के बाद हर turn का score centipawn में निकाला गया
- pawn को 100 points माना गया
- ±1500 जीत/हार के बराबर माना गया
- बेसिक prompt में
gpt-3.5-turbo-instructमजबूत निकला, जबकिgpt-4oऔरgpt-4o-miniजैसे chat model कमजोर दिखे
prompt संरचना के प्रयोग
- यह जाँचा गया कि user prompt की शुरुआत में system prompt दोहराया जाए या नहीं, और खिलाड़ियों के नाम व Elo जैसे metadata जोड़े जाएँ या नहीं
gpt-4o-miniमें बड़ा अंतर लगभग नहीं दिखाgpt-4oमें system prompt दोहराना थोड़ा मददगार और metadata थोड़ा नुकसानदेह लगा, लेकिन यह noise भी हो सकता है- बाद के प्रयोगों में सरलता के लिए system prompt repetition और metadata दोनों बंद कर दिए गए
सिर्फ तीन उदाहरणों से प्रदर्शन में बड़ा सुधार
- जैसे LLM से काम करवाते समय आम तौर पर किया जाता है, वैसे ही API के ज़रिए तीन छोटे input-output examples दिए गए
- इनपुट
1.→ आउटपुटe4 - इनपुट
1. e4→ आउटपुटd5 - इनपुट
1. e4 e5 2. Nf3 Nc6 3.→ आउटपुटBb5
- इनपुट
- सिर्फ इन तीन उदाहरणों से परिणाम बहुत बेहतर हो गया
- संभव है कि अधिक या अलग उदाहरण और अच्छे हों, लेकिन हर chart बनाने के लिए बहुत सारी queries चाहिए थीं, इसलिए आगे जाँच नहीं की गई
fine-tuning मदद करती है, लेकिन उदाहरणों के साथ इसका संयोजन अस्थिर है
gpt-4o-miniऔरgpt-4oदोनों पर fine-tuning की गई- डेटा बनाने का तरीका यह था
- Stockfish ने highest difficulty पर खुद के साथ 100 खेल खेले
- हर game से एक random चाल चुनकर उसे training example बनाया गया
- अलग से Stockfish self-play की 100 games validation data के रूप में इस्तेमाल की गईं
- fine-tuning अपने आप में प्रदर्शन सुधारती है
- लेकिन
gpt-4oकी पहली fine-tuning खराब दिखी, इसलिए इसे छोटी step size के साथ फिर चलाया गया; यह एक अनिश्चितता बनी रही - उदाहरणों और fine-tuning को साथ रखने पर परिणाम उम्मीद के मुताबिक लगातार अच्छे नहीं रहे
- सिर्फ fine-tuning हो तो मदद मिलती है
- सिर्फ उदाहरण हों तो भी मदद मिलती है
- fine-tuning के बाद उदाहरण जोड़ने पर लगभग कोई असर नहीं पड़ता
- और उदाहरण मौजूद हों तो fine-tuning उल्टा नुकसानदेह बन जाती है
legal moves की सूची देना प्रदर्शन बिगाड़ देता है
- क्योंकि मॉडल कभी-कभी illegal move दे देता था, इसलिए एक प्रयोग में मौजूदा legal moves की सूची को notation से पहले दिया गया
- system prompt भी इस तरह बदला गया कि वह legal moves की सूची और आंशिक notation ले
- परिणाम बहुत खराब रहे
- सिर्फ जीत दर नहीं घटी, बल्कि मॉडल पहले ही turns से गलतियाँ करने लगा
- इसके बाद legal moves की सूची का उपयोग नहीं किया गया
मुख्य विचार: पूरी game notation दोहराने के लिए कहना
- chat model special token और instruction tuning के ज़रिए
<|SYSTEM|>,<|USER|>,<|ASSISTANT|>जैसे बातचीत-आधारित format में काम करते हैं - base model स्ट्रिंग को आगे बढ़ाने वाले completion model के अधिक करीब होते हैं, और PGN notation भी उसी शैली से बेहतर मेल खाती है
- OpenAI के
gpt-4-baseतक सीधे पहुँच नहीं है, और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, examples और fine-tuning का संयोजन
- regurgitation शैली पर भी अलग fine-tuning प्रयोग फिर से किए गए
- इनपुट पहले की तरह आंशिक notation था
- वांछित आउटपुट वह रूप था जिसमें पूरी इनपुट notation दोहराने के बाद अगली चाल जोड़ी जाए
- इस शैली की fine-tuning थोड़ी मददगार दिखी
- इसी शैली के अनुसार तीन उदाहरण भी फिर बनाए गए
- इनपुट
1.→ आउटपुट1. e4 - इनपुट
1. d4→ आउटपुट1. d4 d5 - इनपुट
1. e4 e5 2. Nf3 Nc6 3.→ आउटपुट1. e4 e5 2. Nf3 Nc6 3. Nf3
- इनपुट
- कम जानकारी होने के बावजूद उदाहरणों का असर फिर बहुत बड़ा रहा
- उदाहरणों और fine-tuning को साथ रखने पर वही अजीब पैटर्न दोहराया गया
- fine-tuning में उदाहरण जोड़ने से मदद मिलती है
- लेकिन फिर भी यह सिर्फ उदाहरणों वाले मामले से बदतर रहता है
प्रयोग के परिणाम और Elo अनुमान
- परिणामों को तीन श्रेणियों में बाँटा गया
- अच्छा: regurgitation, examples, और examples के बिना fine-tuning
- अस्पष्ट: metadata, system prompt repetition, और examples के साथ fine-tuning
- खराब: legal moves की सूची देना
- अंतिम संयोजन में regurgitation और examples का उपयोग किया गया और बाकी सब बंद रखा गया
gpt-4o + regurgitation + examplesकाफ़ी ठीक था, लेकिनgpt-3.5-turbo-instructजितना मजबूत नहीं था- दोनों मॉडलों ने 50 खेल खेले, और हर खेल में
gpt-4oसफ़ेद मोहरों से खेला
gpt-4o परिणाम |
संख्या |
|---|---|
| जीत | 10 |
| ड्रॉ | 5 |
| हार | 35 |
- यह परिणाम लगभग -191 Elo अंतर के अनुरूप है
- अगर सफ़ेद की पहली चाल के लाभ को लगभग 35 Elo माना जाए, तो
gpt-4o + regurgitation + examplesका अनुमान1750 - 191 - 35/2 ≈ 1540 Eloबनता है - इसे मध्यम स्तर के शौकिया खिलाड़ी के बराबर माना गया
वर्तमान परिकल्पना: डेटा और interface साथ मिलकर असर डालते हैं
- मौजूदा परिकल्पना के दो हिस्से हैं
- OpenAI के base model को open models की तुलना में अधिक या बेहतर chess game data पर train किया गया
- नए OpenAI base model completion mode में शतरंज अच्छा खेल सकते हैं, लेकिन वास्तव में उपलब्ध chat model नहीं
- open models, चाहे base हों या chat, शतरंज अच्छा नहीं खेलते दिखे; इससे architecture सीमा की तुलना में data का अंतर अधिक संभावित लगता है
- एक paper के section A.2 में लिखा है कि GPT-4 को PGN notation वाले chess games पर train किया गया था, और केवल Elo 1800 से ऊपर के खिलाड़ियों के खेल शामिल करने के लिए filter किया गया था
gpt-3.5-turbo-instructने भी वही data इस्तेमाल किया था, इसकी सार्वजनिक पुष्टि नहीं है, लेकिन इसका PGN notation में शतरंज खेलना और लगभग 1750 Elo मापा जाना संयोग जैसा नहीं लगता- Llama जैसे open models की training में कितना chess data शामिल था, यह स्पष्ट नहीं हो सका
- open internet से बहुत सारे खेल गए होंगे, लेकिन संभव है कि बड़े पैमाने पर चुने गए उच्च-गुणवत्ता वाले games वाले database ने बेहतर परिणाम दिए हों
- यह भी संभव है कि बहुत अधिक निम्न-स्तरीय chess data मॉडल को कमजोर चालों की भविष्यवाणी की ओर धकेलता हो, लेकिन जहाँ पहले की चालें मजबूत हों वहाँ अगली चाल भी मजबूत खिलाड़ियों जैसी होनी चाहिए, इसलिए इसे मुख्य कारण नहीं माना गया
बची हुई अनिश्चितताएँ और व्यावहारिक धारणा
- अगर
gpt-4oका chat mode,gpt-4-baseके completion mode से कमजोर है, तो कारण chat interface है, instruction tuning है, या दोनों, यह पता नहीं - यह भी परखा नहीं जा सकता कि
gpt-4-baseको chat mode जैसा simulate करने पर वह अच्छा खेलेगा या नहीं, याgpt-4oको completion mode में कॉल करने पर वह अच्छा खेलेगा या नहीं - संभव है कि
gpt-4oसे बेहतर व्यवहार निकलवाने के और तरीके हों - prompt, examples और fine-tuning का सर्वोत्तम संयोजन ढूँढना बहुत कठिन है
- खोज-क्षेत्र बड़ा है
- कोई आसान abstraction नहीं है
- LLM का व्यवहार अनुमान लगाना कठिन और नाज़ुक है
- प्रयोग धीमे और महंगे हैं
- जब यही अंतिम recipe
gpt-4पर लागू की गई, तो उसने शतरंज अच्छा नहीं खेला - संभव है कि मिला हुआ संयोजन खास तौर पर
gpt-4oके लिए काम करता हो, औरgpt-4के लिए अलग prompt, अधिक examples, या fine-tuning चाहिए हो - यह पूरी प्रक्रिया engineering से ज़्यादा मंत्र खोजने जैसी लगती है, क्योंकि हर मॉडल की संवेदनशीलता बहुत अलग है
1 टिप्पणियां
Hacker News की रायें
यह देखने के लिए कि gpt-3.5-turbo-instruct सच में chess समझता है या नहीं, उसे checkmate नहीं बल्कि 1000 random legal positions से अगली चाल चलने को कहा जा सकता है
ऐसी positions https://github.com/tromp/ChessPositionRanking से बनाई जा सकती हैं, ये training data में दिखी होंगी ऐसी सामान्य games से बिल्कुल अलग होती हैं, और कई बार legal moves के विकल्प भी बहुत सीमित होते हैं
अगली चाल की legality test करने के लिए यह अच्छा है, लेकिन आमतौर पर एक side बेहद ज़्यादा बेहतर होती है, इसलिए move quality अलग करने में यह कम उपयोगी है
Hikaru को किसी position को देखकर शुरुआत से “live commentary” की तरह यह दिखाते देखना हैरान करने वाला था कि वह position कैसे पहुँची, लेकिन उसी video में उन्होंने समझाया कि अजीब random chess puzzles पर यह तरीका लगभग काम नहीं करता
असली games से आए puzzles random generated puzzles से कहीं बेहतर होते हैं, और शीर्ष स्तर के इंसानों को भी वे ज़्यादा समझ में आते हैं
chess को अच्छे से समझने वाला व्यक्ति, जैसे Elo 1800 level का, पहली कोशिश में legal move न दे पाए ऐसा लगभग कभी नहीं होता
असली reasoning के लिए symbolic logic और abstraction चाहिए मानी जा सकती है, जबकि LLM next-token predictor है
उदाहरण के लिए, bishop को हमेशा diagonal में ही चलते देखा है, इसलिए वह सिर्फ वैसी चालों पर विचार कर सकता है, लेकिन यह ज़रूरी नहीं कि उसने legal/illegal move concept infer किया हो
अंदरूनी तौर पर वह positions represent करने वाली कोई चीज़ बना भी सकता है, लेकिन encoded chess position देने पर वह representation अपने-आप activate हो जाए, यह ज़रूरी नहीं
अगर दावा है कि gpt-3.5-turbo-instruct chess को “समझता” है, “reasoning” करता है और “real logic” लागू करता है, तो मैं कहना चाहूँगा कि लेख में बताए गए advanced amateur स्तर के chess players में किसी ऐसे को ढूँढकर दिखाइए जो illegal move करता हो
chess जानने वाला कोई भी व्यक्ति पुष्टि कर देगा कि ऐसा लगभग नहीं होता
यह भी जानना चाहूँगा कि illegal moves वाली games के links हैं या नहीं
मैंने अपने से कहीं ऊँचे level के streamers को भी बार-बार illegal moves try करते देखा है, जब तक उन्हें एहसास नहीं हुआ कि interface उन्हें illegal होने की वजह से reject कर रहा है
YouTube पर “GM illegal moves” खोजते ही grandmasters द्वारा illegal moves के इतने examples मिल जाते हैं कि compilation बन जाए
उदाहरण: https://www.youtube.com/watch?v=m5WVJu154F0 — Vidit vs Hikaru वाला मामला खास तौर पर प्रभावशाली है, जहाँ Vidit ने अपने king से Hikaru के king पर attack किया
जब तक LLM black box है, हम नहीं जान सकते कि उसने rules follow करके reason किया और legal moves को समझा, या फिर उसने legal-move data बहुत ज़्यादा देखकर legal moves निकालना ही सीख लिया
आप किसी भी पक्ष को सच कह सकते हैं, लेकिन LLM ने क्या “सोचा” इसे सचमुच समझने का कोई तरीका नहीं है
blindfold chess में कभी भी illegal move न करने के लिए काफी अच्छा खिलाड़ी होना पड़ता है
इंसान, यहाँ तक कि अपने field के मशहूर experts भी बहुत गलतियाँ करते हैं, और कभी-कभी अपने ही expertise area में बहुत महँगी और पीछे मुड़कर देखने पर साफ दिखने वाली गलतियाँ कर बैठते हैं
फिर भी जब इंसानी मूर्खताओं से भरे corpus पर trained LLM chess में illegal move करता है, तो दिमाग तुरंत प्रतिक्रिया देता है: “मैं तो chess में illegal move नहीं करता, तो computer ऐसा करके chess कैसे खेल सकता है?”
कम से कम यह metacognitive bias और general attribution error का एक perfect example लगता है
इस लेख में भी पिछले लेख जैसी ही समस्या है। लेखक ने अवैध चालों की frequency पर कोई डेटा बिल्कुल नहीं दिया है
इसलिए कोई meaningful निष्कर्ष निकालना संभव नहीं है
यह कुछ वैसा है जैसे यह दावा करना कि LLM एक विशेषज्ञ डॉक्टर है, लेकिन डेटा से गलत मेडिकल सलाह वाले सभी मामलों को छांट देना
अगर अवैध चालों के प्रयासों की संख्या approach के हिसाब से meaningful रूप से अलग होती, और खासकर अगर वह अंतर अवैध चालें हटाने के बाद की performance से correlate न करता, तो यह दिलचस्प होता, लेकिन लेख के निष्कर्ष को इससे बहुत ज्यादा झटका नहीं लगता
legal moves के set से random चुनने पर सचमुच बेहद खराब chess player बनेगा, इसलिए अगर LLM output से sampling करने पर वह काफी बेहतर खेलता है, तो साफ है कि LLM कुछ न कुछ योगदान दे रहा है
अवैध चालों के सभी प्रयासों को हार मानना चाहिए, यह कहते हुए LLM की अकेली क्षमता की परिभाषा पर बहस करना मुख्य मुद्दे से भटका हुआ लगता है
तब असल में “LLM+script” विशेषज्ञ डॉक्टर बन जाएगा, लेकिन chess की अवैध चालों के लिए यह संभव है, मेडिकल सलाह का मूल्यांकन करने के लिए जाहिर तौर पर नहीं
यहां नहीं है, लेकिन turbo instruct का पहले मूल्यांकन हो चुका है
https://github.com/adamkarvonen/chess_gpt_eval
training ratio 99% से ज्यादा और test 1% से कम था, इसलिए वह AI validation की बुनियादी कसौटी भी पार नहीं करता
ज्यादातर AI conferences में ऐसा paper टिकना मुश्किल होता, लेकिन यह बहुत ऊंचे impact factor वाली Nature Medicine में छपा और medical AI field में खूब cite हुआ
https://www.nature.com/articles/s41591-018-0268-3
“कई मायनों में यह engineering से ज्यादा मंत्र खोजने जैसा लगता है” — यह expression अब भी LLMs के बारे में मेरी overall impression जैसा ही है
यह कि वे काम करते हैं, हैरान करने वाली बात है, लेकिन उम्मीद है कि अगला तकनीकी innovation हर बार किसी खराब SF फिल्म के अंदर होने जैसा एहसास नहीं कराएगा
मुझे नहीं लगता कि “सब लोग गलत थे”
यह बात कहने वाला मैं अकेला भी नहीं था, इसलिए हैरानी हुई कि यह theory सूची में नहीं थी; 7 दिन पहले भी मैंने यह लिखा था: https://news.ycombinator.com/item?id=42145710
“जो भी public benchmark बन जाता है, मानकर चलना चाहिए कि training के दौरान उसे specifically target किया जाएगा।”
यह लेख में बताई और खारिज की गई “cheating/LLM output replacement” theory से अलग है
follow-up लेख इस अनुमान को support करता है। OpenAI ने open models की तुलना में ज्यादा और बेहतर chess game data से base model को train किया, और एक paper के A.2 में OpenAI authors ने बताया कि GPT-4 को Elo 1800 से ऊपर के players की PGN notation वाली chess games पर train किया गया था
OpenAI का training data को ऐसे कामों के data से augment करना पूरी तरह समझ में आता है, जिन्हें लोग वास्तव में आजमा सकते हैं
यह अनैतिक भी नहीं है। कोई भी dataset सच में “neutral” नहीं होता, इसलिए जब choice करनी ही है, तो संभावित रूप से useful answers देने में अच्छा train न करने की कोई वजह नहीं है
वैसे भी OpenAI के पास game AI का काफी अनुभव है
https://news.ycombinator.com/item?id=42145215
कोई भी इस उम्मीद में कि कोई blogger संयोग से 1800 Elo स्तर की कमजोर performance खोजकर tweet करेगा, बेहद महंगे बड़े LLM को विशाल dataset पर train नहीं करता
chess इतना standard LLM benchmark भी नहीं है कि वह Goodhart का target बने, और OpenAI आम तौर पर shortcuts या cheating की बजाय सही तरीके से problems solve करने की कोशिश करता आया है
GPT series standard benchmarks या counterexamples पर आसानी से overfit हो सकती थी और उसका PR value भी कहीं ज्यादा होता, फिर भी उसने extreme overfitting नहीं की। मसलन “strawberry problem” जैसी चीज पर train कराना बहुत आसान होता
दूसरी तरफ कुछ अन्य LLM providers के scores memorization-prevention papers में कहीं ज्यादा गिरते हैं
साथ ही, जिस paper में उस dataset का उल्लेख है, उसमें स्पष्ट research use है, और chess में oracle इस्तेमाल किया जा सकता है, इसलिए LLMs की guidance और world modeling को analyze करने के लिए एक model organism के रूप में उसमें interest है
DeepMind का blitz chess LLM paper भी Gemini से chess skill fake करवाकर GCP marketing में इस्तेमाल करने की कोई चालाक योजना का हिस्सा नहीं है
शुरू में उन्हें chess cool लगा होगा, और कल उन्हें Go या poetry-writing skill cool लग सकती है
domain चाहे जो हो, training data में “amateur” content की तुलना में expert content ज्यादा डालने के रूप में
प्रॉम्प्ट में “गेम जीतने की कोशिश करो” नहीं कहा गया है, लेकिन नतीजा इस बात से मापा गया कि LLM कितना जीतता है
क्या यह बात “आप एक chess grandmaster हैं” वाले प्रॉम्प्ट में implicit रूप से शामिल है?
क्या LLM training में कहीं “गेम हो तो हमेशा जीतने की कोशिश करनी है” वाला pattern है?
अगर सीधे जीतने को कहा जाए, तो क्या win rate बढ़ सकता है?
chess games के उदाहरणों और explanations में लगभग हमेशा हर player जीतने की कोशिश करता है, इसलिए winning move खेलना ही सबसे logical output है
इसलिए explicit रूप से जीतने को prompt करने से performance बहुत बेहतर होगी, ऐसा नहीं लगता
उल्टा, अगर उसे हारने वाली या खराब चाल चलने को कहा जाए तो क्या होता है, यह दिलचस्प होगा। वह इसे प्रभावी ढंग से कर पाता है या नहीं, और चालें अब भी ज़्यादातर legal रहती हैं या नहीं—इससे यह और साफ हो सकता है कि वह पहले देखे गए concepts पर कितना निर्भर है
वह वाक्य best possible move tokens generate करने की probability बढ़ाएगा
model की chess sequence generate करने की क्षमता training data के games pool में मौजूद expertise तक सीमित है
अगर कुछ games में कुछ players जानबूझकर हारने की कोशिश कर रहे थे, तब भी शायद उसका असर बहुत मामूली होगा; और chess games में player intention को annotate नहीं किया जाता, इसलिए जीतने या हारने को prompt करने पर LLM उसे अलग से पकड़ नहीं पाएगा
LLM को जानबूझकर हारने को कहकर देखा जा सकता है। मेरे अनुभव में ChatGPT खुद को scholar's mate में फंसाने के लिए set up करने की कोशिश करता है, लेकिन अगर opponent उसे accept नहीं करता, तो वह implicit रूप से जीतने की कोशिश करने जैसा opponent के undefended pieces लेना शुरू कर देता है
“क्यों?” पूछने पर, हमेशा की तरह, वह post-hoc rationalization दे देता है
इसलिए “और जीतो” या “black wins” जैसी expression न होना मुझे surprising लगा
अगर reinforcement learning की वजह से LLM जानबूझकर avoid कर रहा है ताकि इंसान game हारकर बुरा महसूस न करे, तो यह काफी मज़ेदार होगा
prompt को improve करना अच्छा है, लेकिन अब भी दो बहुत बड़ी improvement possibilities छूट रही हैं
पहली, move suggest करने से पहले current board position और आगे की plan explain कराना। इससे model सच में ज़्यादा सोचता है; o1 जैसा है, लेकिन यहाँ ज़्यादा focused processing सुनिश्चित की जा सकती है
दूसरी, हर step पर सच में ASCII board draw कराना। board+move format 20 moves की list के मुकाबले ज्यादा stable तरीके से process करना आसान हो सकता है, जिससे legal moves बढ़ सकते हैं
ASCII art जैसी 2D “graphics” language models के लिए unfamiliar होती हैं, और model text को line breaks सहित token stream के रूप में देखता है, इसलिए lines के बीच की “vertical” relationship वैसी साफ नहीं होती जैसी इंसान को दिखती है
context window में board diagram होने पर भी model को game reason करने में शायद ज्यादा मदद नहीं मिलेगी
इसके बजाय “c5 पर black knight” की तरह हर piece की position normal text में list कराना position awareness को मजबूत करने के लिए ज्यादा उपयुक्त हो सकता है
नंबर 1 निश्चित रूप से try करने लायक है, और model के हिसाब से काम करने वाले variants भी और हैं
Anthropic models में docs input के important parts को XML notation से label और classify करने की सलाह देते हैं। ऐसी soft structure Claude model results को improve करती दिखती है, और शायद model को इसे recognize करने के लिए खास तौर पर train किया गया होगा
संदर्भ: https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
Anthropic model के लिए final prompt कुछ ऐसा हो सकता है: “आप chess grandmaster हैं। tags के अंदर incomplete game देखकर पूरे game को repeat करें, फिर standard algebraic notation में एक नया move दें, और नया notation देने से पहले tag block के अंदर अपनी reasoning explain करें”
ऐसे prompt Anthropic models में noticeable improvement देने के लिए बने हैं
irony यह है कि Claude 3.5 Sonnet को कई महीनों तक खूब use करने के बाद भी मैंने यह कुछ हफ्ते पहले ही खोजा। RTFM अब भी useful skill है
OpenAI models में भी ऐसा ही simple लेकिन कम-known affordance हो सकता है
मेरे 1.5 साल पहले के chess experiments में पूरे move sequence को repeat करने वाली trick fine-tuning के बिना सबसे अच्छा method था
results देखना चाहूंगा, लेकिन अगर बेहतर हुआ तो मुझे काफी surprise होगा
hypothesis यह है कि दूसरे तरीकों से भी अधिक time और space देने पर performance और बेहतर हो सकती है
उदाहरण के लिए current board position दिखाना, position analysis कराना, key weaknesses और strengths की list बनवाना, possible strategies की list, उनमें से strategy selection, और अंत में move selection
यानी उसे तुरंत move उगलने को न कहकर सचमुच सोचने पर मजबूर करना। यहाँ examples ही key होंगे
ऐसे ideas ReAct paper और chain-of-thought paper में अच्छी तरह काम करते दिखे हैं, और इसमें N बार repeat करके majority answer आने पर रोकने का तरीका भी जोड़ा जा सकता है। यह idea chain-of-thought self-consistency paper से लिया गया है
“fine-tuning मदद करती है और examples भी मदद करते हैं, लेकिन fine-tuning को unnecessary बनाने वाली चीज examples हैं, उल्टा नहीं” वाला हिस्सा बहुत interesting है
इस specific case में simple examples देना fine-tuning के बराबर है
मेरे लिए यह बड़ी discovery है, इसलिए आगे examples को ज्यादा बार इस्तेमाल करने की सोच रहा हूं
वजह समझाना मुश्किल है, लेकिन मुझे हमेशा यह gut feeling थी कि fine-tuning overrated है
एक वजह यह हो सकती है कि examples “यहीं सामने” होते हैं, इसलिए fine-tuned neurons की तुलना में implicitly उनका weight कहीं ज्यादा मिलता है
इस toy case में यह इतना महत्वपूर्ण नहीं है, लेकिन याद रखना चाहिए कि input में दिया गया हर example fine-tuning की तुलना में prediction time और cost बढ़ाता है
commercial LLMs के साथ अंधेरे में टटोलने जैसे प्रयोग अब बंद करने चाहिए
इस समस्या की तह तक जाने के लिए सिर्फ chess games पर LLM को train करके देखना दिलचस्प होगा। Stockfish को खुद से खेलाकर इन्हें अनंत रूप से synthesize किया जा सकता है, और chess commentary के साथ “board पर कितने pawns हैं?”, “मेरा rook कहाँ है?”, “board draw करो” जैसे chess conversation examples थोड़ा मिलाकर दिखाया जा सकता है कि उसके पास board representation है या नहीं
मुझे नहीं लगता कि “emergent phenomenon” या general language ability, या क्षमता होने का दिखावा करने की क्षमता, chess खेलने के लिए जरूरी है। Chess में अच्छा होने का मतलब यह नहीं कि बाकी चीजों में भी intelligent हो, और इसका उल्टा भी सही है
ऐसा प्रयोग मुझे गलत भी साबित कर सकता है
करीब एक हफ्ते पहले आया paper https://arxiv.org/pdf/2411.06655 fine-tuned Llama से अच्छे परिणाम पाता दिखता है
chess commentary ability पर यह paper भी मुझे पसंद है: https://arxiv.org/abs/2410.20811
बचा हुआ reward जोड़कर network को यह सीखने दिया जा सकता है कि अच्छी और खराब games में कौन-सी moves आती हैं, और यह Decision Transformer जैसे offline reinforcement learning setup में बदल जाता है
मेरे हिसाब से chess skill general LLMs के लिए पूरी तरह बेकार है और कोई emergent phenomenon भी नहीं; यह बस इस शानदार trick के लिए gradient bandwidth और parameter space खर्च करना है
यह इस बात से साफ है कि chess के लिए खास तौर पर train न किए गए LLMs chess अच्छे से नहीं खेलते
chess move notation के लिए optimized tokenizer बनाकर, Stockfish games से LLM को scratch से train करना दिलचस्प हो सकता है
custom tokenizer इस्तेमाल करने पर वही model size बेहतर quality दे सकता है
encoding और decoding में बहुत सारी layers बर्बाद नहीं करनी पड़ेंगी, और “natural” latent representation भी ज्यादा intuitive हो सकता है