{"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/vl-rethinker-incentivizing-self-reflection-of","title":"VL-Rethinker: Incentivizing Self-Reflection of Vision-Language Models with Reinforcement Learning","arxiv_id":"2504.08837","date":"2025-04-10","proceeding":null,"authors":["Haozhe Wang","Chao Qu","Zuming Huang","Wei Chu","Fangzhen Lin","Wenhu Chen"],"abstract":"Recently, slow-thinking systems like GPT-o1 and DeepSeek-R1 have demonstrated great potential in solving challenging problems through explicit reflection. They significantly outperform the best fast-thinking models, such as GPT-4o, on various math and science benchmarks. However, their multimodal reasoning capabilities remain on par with fast-thinking models. For instance, GPT-o1's performance on benchmarks like MathVista, MathVerse, and MathVision is similar to fast-thinking models. In this paper, we aim to enhance the slow-thinking capabilities of vision-language models using reinforcement learning (without relying on distillation) to advance the state of the art. First, we adapt the GRPO algorithm with a novel technique called Selective Sample Replay (SSR) to address the vanishing advantages problem. While this approach yields strong performance, the resulting RL-trained models exhibit limited self-reflection or self-verification. To further encourage slow-thinking, we introduce Forced Rethinking, which appends a rethinking trigger token to the end of rollouts in RL training, explicitly enforcing a self-reflection reasoning step. By combining these two techniques, our model, VL-Rethinker, advances state-of-the-art scores on MathVista, MathVerse to achieve 80.4%, 63.5% respectively. VL-Rethinker also achieves open-source SoTA on multi-disciplinary benchmarks such as MathVision, MMMU-Pro, EMMA, and MEGA-Bench, narrowing the gap with OpenAI-o1. Our empirical results show the effectiveness of our approaches.","url_abs":"https://arxiv.org/abs/2504.08837v3","url_pdf":"https://arxiv.org/pdf/2504.08837v3.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":"vl-rethinker-incentivizing-self-reflection-of","repo_url":"https://github.com/infly-ai/inf-mllm","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"vl-rethinker-incentivizing-self-reflection-of","repo_url":"https://github.com/tiger-ai-lab/vl-rethinker","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"math","task_name":"Math"},{"task_slug":"multimodal-reasoning","task_name":"Multimodal Reasoning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2504.08837","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2504.08837"}},"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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/infly-ai/inf-mllm","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tiger-ai-lab/vl-rethinker","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":1,"ran":1,"unverified":10},"by_repo_kind":{"listed":{"samples":12,"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":0,"samples":[{"code_sha256_prefix":"18ed61dcfadbbdf0","entry":"reward_fn","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/cli/eval_ray.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/cli/eval_ray.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"18ed61dcfadbbdf0"}},{"code_sha256_prefix":"c48a5c183e44469e","entry":"zero_pad_sequences","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/datasets/utils.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/datasets/utils.py","link_basis":"harvester_set","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":"c48a5c183e44469e"}},{"code_sha256_prefix":"de2fefc774bb0362","entry":"compute_approx_kl","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/models/utils.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/models/utils.py","link_basis":"harvester_set","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":"de2fefc774bb0362"}},{"code_sha256_prefix":"0d27f3b8c425d79f","entry":"compute_reward","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/models/utils.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/models/utils.py","link_basis":"harvester_set","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":"0d27f3b8c425d79f"}},{"code_sha256_prefix":"d66f259aaf6cd9c7","entry":"convert_ring_attn_params","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/models/ring_attn_utils.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/models/ring_attn_utils.py","link_basis":"harvester_set","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":"d66f259aaf6cd9c7"}},{"code_sha256_prefix":"c710eef68603bd62","entry":"entropy_from_logits","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/models/actor.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/models/actor.py","link_basis":"harvester_set","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":"c710eef68603bd62"}},{"code_sha256_prefix":"71edf11f55693a58","entry":"exist_and_not_none","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/datasets/utils.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/datasets/utils.py","link_basis":"harvester_set","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":"71edf11f55693a58"}},{"code_sha256_prefix":"27ab2676fee3ce6a","entry":"get_print","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/models/loss.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/models/loss.py","link_basis":"harvester_set","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":"27ab2676fee3ce6a"}},{"code_sha256_prefix":"0612b61574b81472","entry":"log_probs_from_logits","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/models/utils.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/models/utils.py","link_basis":"harvester_set","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":"0612b61574b81472"}},{"code_sha256_prefix":"8368fe60f5326faa","entry":"preprocess_data","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/datasets/prompts_dataset.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/datasets/prompts_dataset.py","link_basis":"harvester_set","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":"8368fe60f5326faa"}},{"code_sha256_prefix":"059f7ea3562486c2","entry":"read_jsonl","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/trainer/evaluator.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/trainer/evaluator.py","link_basis":"harvester_set","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":"059f7ea3562486c2"}},{"code_sha256_prefix":"e93117d99aa6b210","entry":"reset_ring_attn_position_ids","repo":"tiger-ai-lab/vl-rethinker","repo_kind":"listed","path":"openrlhf/models/ring_attn_utils.py","file_url":"https://github.com/tiger-ai-lab/vl-rethinker/blob/HEAD/openrlhf/models/ring_attn_utils.py","link_basis":"harvester_set","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":"e93117d99aa6b210"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}