{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/chessgpt-bridging-policy-learning-and-1","title":"ChessGPT: Bridging Policy Learning and Language Modeling","arxiv_id":"2306.09200","date":"2023-06-15","proceeding":"NeurIPS 2023 11","authors":["Xidong Feng","Yicheng Luo","Ziyan Wang","Hongrui Tang","Mengyue Yang","Kun Shao","David Mguni","Yali Du","Jun Wang"],"abstract":"When solving decision-making tasks, humans typically depend on information from two key sources: (1) Historical policy data, which provides interaction replay from the environment, and (2) Analytical insights in natural language form, exposing the invaluable thought process or strategic considerations. Despite this, the majority of preceding research focuses on only one source: they either use historical replay exclusively to directly learn policy or value functions, or engaged in language model training utilizing mere language corpus. In this paper, we argue that a powerful autonomous agent should cover both sources. Thus, we propose ChessGPT, a GPT model bridging policy learning and language modeling by integrating data from these two sources in Chess games. Specifically, we build a large-scale game and language dataset related to chess. Leveraging the dataset, we showcase two model examples ChessCLIP and ChessGPT, integrating policy learning and language modeling. Finally, we propose a full evaluation framework for evaluating language model's chess ability. Experimental results validate our model and dataset's effectiveness. We open source our code, model, and dataset at https://github.com/waterhorse1/ChessGPT.","url_abs":"https://arxiv.org/abs/2306.09200v2","url_pdf":"https://arxiv.org/pdf/2306.09200v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"chessgpt-bridging-policy-learning-and-1","repo_url":"https://github.com/waterhorse1/chessgpt","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"decision-making","task_name":"Decision Making"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"}],"methods":[{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"attention-dropout","method_name":"Attention Dropout"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"cosine-annealing","method_name":"Cosine Annealing"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"discriminative-fine-tuning","method_name":"Discriminative Fine-Tuning"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"gpt","method_name":"GPT"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"linear-warmup-with-cosine-annealing","method_name":"Linear Warmup With Cosine Annealing"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"weight-decay","method_name":"Weight Decay"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2306.09200","atlas_url":"https://app.syntology.ai/?focus=2306.09200","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2306.09200"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/waterhorse1/ChessGPT","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/waterhorse1/chessgpt","reach":null}],"summary":{"ran_violates":1,"ran_draft_wrong":4,"ran":9,"unverified":6},"by_repo_kind":{"official":{"samples":20,"ran":14,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"0928f497e20fb443","entry":"mean","repo":"waterhorse1/ChessGPT","repo_kind":"official","path":"eval/eval_clip/eval_clip_checkmate_in_one.py","file_url":"https://github.com/waterhorse1/ChessGPT/blob/HEAD/eval/eval_clip/eval_clip_checkmate_in_one.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":2,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0928f497e20fb443"}},{"code_sha256_prefix":"a677092c48744688","entry":"natural_key","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/training/main_chess.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/training/main_chess.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a677092c48744688"}},{"code_sha256_prefix":"6fdc88f3b630d199","entry":"AttentionPool2d","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6fdc88f3b630d199"}},{"code_sha256_prefix":"9cacb80c889cd2a4","entry":"Bottleneck","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9cacb80c889cd2a4"}},{"code_sha256_prefix":"5bd7cd28d8cc3983","entry":"CLIPTextCfg","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5bd7cd28d8cc3983"}},{"code_sha256_prefix":"cbd8e0434d6addde","entry":"CLIPVisionCfg","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cbd8e0434d6addde"}},{"code_sha256_prefix":"2ce325eef914eb38","entry":"LayerNorm","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2ce325eef914eb38"}},{"code_sha256_prefix":"f5a2164abfcb21f3","entry":"LayerNormFp32","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f5a2164abfcb21f3"}},{"code_sha256_prefix":"ace306ca4e4fe383","entry":"ResidualAttentionBlock","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ace306ca4e4fe383"}},{"code_sha256_prefix":"4174c2dd4f6fcc5c","entry":"Transformer","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4174c2dd4f6fcc5c"}},{"code_sha256_prefix":"13b07e13a2877644","entry":"VisionTransformer","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"13b07e13a2877644"}},{"code_sha256_prefix":"93448c613c050973","entry":"get_latest_checkpoint","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/training/main_chess.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/training/main_chess.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"93448c613c050973"}},{"code_sha256_prefix":"c5bcf01d18bba63d","entry":"read_json","repo":"waterhorse1/ChessGPT","repo_kind":"official","path":"chessgpt/train/clm_training/finetune_pp_peft_trainer.py","file_url":"https://github.com/waterhorse1/ChessGPT/blob/HEAD/chessgpt/train/clm_training/finetune_pp_peft_trainer.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c5bcf01d18bba63d"}},{"code_sha256_prefix":"d40f0123e8a8f5c0","entry":"sample_stddev","repo":"waterhorse1/ChessGPT","repo_kind":"official","path":"eval/eval_clip/eval_clip_checkmate_in_one.py","file_url":"https://github.com/waterhorse1/ChessGPT/blob/HEAD/eval/eval_clip/eval_clip_checkmate_in_one.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d40f0123e8a8f5c0"}},{"code_sha256_prefix":"66be7371bc7a1e75","entry":"ChessCLIP","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"66be7371bc7a1e75"}},{"code_sha256_prefix":"a33d5a54b85820bd","entry":"FiLMBasicBlock","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a33d5a54b85820bd"}},{"code_sha256_prefix":"27d33e151720c199","entry":"FiLMModifiedResNet","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"27d33e151720c199"}},{"code_sha256_prefix":"bd639b02dd5683ff","entry":"ModifiedResNet","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bd639b02dd5683ff"}},{"code_sha256_prefix":"944a99db21069fc3","entry":"TimmModel","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"944a99db21069fc3"}},{"code_sha256_prefix":"4139bce30d88596b","entry":"_build_vision_tower","repo":"waterhorse1/chessgpt","repo_kind":"official","path":"chessclip/src/open_clip/model.py","file_url":"https://github.com/waterhorse1/chessgpt/blob/HEAD/chessclip/src/open_clip/model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4139bce30d88596b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}