{"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/arxiv-2602-22296","title":"UpSkill: Mutual Information Skill Learning for Structured Response Diversity in LLMs","arxiv_id":"2602.22296","date":"2026-02-25","proceeding":null,"authors":["Devan Shah","Owen Yang","Daniel Yang","Chongyi Zheng","Benjamin Eysenbach"],"abstract":"Reinforcement Learning with Verifiable Rewards (RLVR) has improved the reasoning abilities of large language models (LLMs) on mathematics and programming tasks, but standard approaches that optimize single-attempt accuracy can inadvertently suppress response diversity across repeated attempts, narrowing exploration and overlooking underrepresented strategies. We introduce UpSkill, a training time method that adapts Mutual Information Skill Learning (MISL) to LLMs for optimizing pass@k correctness. We propose a novel reward that we implement within Group Relative Policy Optimization (GRPO): a token-level mutual information (MI) reward that encourages trajectory specificity to z. Experiments on GSM8K with three open-weight models, Llama 3.1-8B, Qwen 2.5-7B, and R1-Distilled-Qwen2.5-Math-1.5B, show that UpSkill improves multi-attempt metrics on the stronger base models, yielding mean gains of ~3% in pass@k for both Qwen and Llama without degrading pass@1. Additionally, we find both empirical and theoretical evidence that improvements in pass@k are closely tied to the mutual information objective.","url_abs":"https://arxiv.org/abs/2602.22296","url_pdf":"https://arxiv.org/pdf/2602.22296","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2602.22296","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2602.22296"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/dshah02/upskill","reach":null}],"summary":{"ran_draft_wrong":2,"unverified":20},"by_repo_kind":{"found_in_text":{"samples":22,"ran":2,"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":22,"samples":[{"code_sha256_prefix":"885dcaee42326ed4","entry":"last_boxed_only_string","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/DAPO_math_dapo.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/DAPO_math_dapo.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"885dcaee42326ed4"}},{"code_sha256_prefix":"52adf1b5d14ad2a3","entry":"remove_boxed","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/DAPO_math_dapo.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/DAPO_math_dapo.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"52adf1b5d14ad2a3"}},{"code_sha256_prefix":"2b7225f74d0266a6","entry":"check_answer","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/gsm8k/benchmark.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/gsm8k/benchmark.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2b7225f74d0266a6"}},{"code_sha256_prefix":"9a76fae87a250a3a","entry":"correctness_reward_func","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/UNSLOTH_rewards.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/UNSLOTH_rewards.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9a76fae87a250a3a"}},{"code_sha256_prefix":"093dcf652c70e5e4","entry":"decode_ids","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/arithmetic/arithmetic_llm.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/arithmetic/arithmetic_llm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"093dcf652c70e5e4"}},{"code_sha256_prefix":"fbcd80ebd06254cb","entry":"decode_ids","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/arithmetic/arithmetic_testing.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/arithmetic/arithmetic_testing.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fbcd80ebd06254cb"}},{"code_sha256_prefix":"7b8da6f474c75e33","entry":"eval_chain_left_assoc","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/arithmetic/arithmetic_testing.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/arithmetic/arithmetic_testing.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7b8da6f474c75e33"}},{"code_sha256_prefix":"00b3eb926c545de4","entry":"exp_moving_average","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/plot_rewards.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/plot_rewards.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"00b3eb926c545de4"}},{"code_sha256_prefix":"f2d7a18be63d7053","entry":"extract_strategy_idx","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/utils.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f2d7a18be63d7053"}},{"code_sha256_prefix":"ec75842bf1583279","entry":"find_model_dir","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/plot_rewards.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/plot_rewards.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ec75842bf1583279"}},{"code_sha256_prefix":"d1c064c40ca31703","entry":"find_trainer_log","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/plot_rewards.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/plot_rewards.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d1c064c40ca31703"}},{"code_sha256_prefix":"cac12352583c2761","entry":"get_log_probability","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/gsm8k/full_train_from_finetuned.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/gsm8k/full_train_from_finetuned.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cac12352583c2761"}},{"code_sha256_prefix":"095e3f1f8788aec5","entry":"int_reward_func","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/UNSLOTH_rewards.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/UNSLOTH_rewards.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"095e3f1f8788aec5"}},{"code_sha256_prefix":"8e1ba71a728e180c","entry":"last_boxed_only_string","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/flex_extract.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/flex_extract.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8e1ba71a728e180c"}},{"code_sha256_prefix":"1ceb3f62d6f06aaa","entry":"load_dataset","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/gsm8k/benchmark.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/gsm8k/benchmark.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1ceb3f62d6f06aaa"}},{"code_sha256_prefix":"f8eed3cb436fe2a3","entry":"normalize_final_answer","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/DAPO_math_dapo.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/DAPO_math_dapo.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f8eed3cb436fe2a3"}},{"code_sha256_prefix":"937ef0071534906e","entry":"remove_boxed","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/flex_extract.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/flex_extract.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"937ef0071534906e"}},{"code_sha256_prefix":"8feeb8e6935dfad7","entry":"safe_eval_binop","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/arithmetic/arithmetic_testing.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/arithmetic/arithmetic_testing.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8feeb8e6935dfad7"}},{"code_sha256_prefix":"4965f613886e4b9a","entry":"safe_eval_expr","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/arithmetic/arithmetic_llm.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/arithmetic/arithmetic_llm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4965f613886e4b9a"}},{"code_sha256_prefix":"f9b8aeb3854ee75a","entry":"sample_problem","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"experiments/arithmetic/arithmetic_llm.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/experiments/arithmetic/arithmetic_llm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f9b8aeb3854ee75a"}},{"code_sha256_prefix":"54e22aa03fd4963c","entry":"strict_format_reward_func","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/UNSLOTH_rewards.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/UNSLOTH_rewards.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"54e22aa03fd4963c"}},{"code_sha256_prefix":"f49e5c25b7adaa1d","entry":"strip_latex_wrappers","repo":"dshah02/upskill","repo_kind":"found_in_text","path":"src/flex_extract.py","file_url":"https://github.com/dshah02/upskill/blob/HEAD/src/flex_extract.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f49e5c25b7adaa1d"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}