基于双自一致性强化学习的科学图形程序合成 Scientific Graphics Program Synthesis via Dual Self-Consistency Reinforcement Learning
提出 SciTikZer 模型与 Dual Self-Consistency 强化学习框架,从图像生成可编译的 TikZ 代码,在 8B 体量上超越 Gemini-2.5-Pro 与 Qwen3-VL-235B。
前置知识
TikZ / LaTeX 声明式绘图
TikZ 是 LaTeX 中用于绘制科学示意图的声明式矢量图形语言,通过显式坐标、节点和路径命令描述图形(如电路、流程图、几何证明),而非 matplotlib 那种命令式统计绘图。TikZ 要求严格的精确坐标和拓扑连接,代码与渲染结果强绑定,编译失败即无输出。
本文的核心任务是把图片反向工程为 TikZ 代码,必须理解 TikZ 对坐标精度、依赖包和拓扑结构的严格要求,才能明白数据清洗、编译反馈和双自一致性奖励的设计动机。
Group Relative Policy Optimization (GRPO)
GRPO 是一种无需 critic 的强化学习算法,对同一 prompt 采样一组 G 个候选输出,以组内奖励均值与标准差做归一化得到优势 $\hat{A}_i = (R_i - \mu_R)/\sigma_R$,再用 PPO 风格的 clip 目标优化策略 $\pi_\theta$,目标函数为 $J_{\text{GRPO}}(\theta) = \mathbb{E}[\sum_i \min(\rho_i \hat{A}_i, \text{clip}(\rho_i, 1-\epsilon, 1+\epsilon)\hat{A}_i)] - \beta D_{KL}(\pi_\theta\|\pi_{\text{ref}})$。
本文所有 RL 阶段都基于 GRPO 实现可验证奖励驱动的策略优化,是理解 Dual Self-Consistency 算法中组采样、KL 约束与优势估计的基础。
MLLM-as-a-Judge 与可验证奖励
用多模态大模型作为自动裁判,从 Correctness、Layout、Readability、Scientific Plausibility、Visual Complexity 等维度对生成结果打 0–5 分;可验证奖励则依赖编译器执行这类外部确定性反馈(如 pdflatex 是否成功生成 PDF)给出二元信号。
数据引擎的精筛、评估基准的构建以及 RL 中 LPIPS/SigLIP/编译奖励都依赖这一范式,是本文工程闭环的关键。
SigLIP 与 LPIPS 视觉奖励
SigLIP 通过大规模图文对比预训练提供高层语义余弦相似度 $\text{Sim}_{\text{SigLIP}} = f_{gt}\cdot f_{pr}/\|f_{gt}\|\|f_{pr}\|$,衡量概念对齐;LPIPS 用预训练 CNN(如 AlexNet)提取深度特征后算感知距离 $d_{\text{LPIPS}}$,对像素级几何与风格敏感。
本文把 SigLIP(语义)和 LPIPS(结构)通过 hinge 缩放与指数核映射融合为多粒度视觉奖励 $r_{\text{vis}} = \lambda_1 s_{\text{sem}} + \lambda_2 s_{\text{struct}}$,是 Stage 1 阶段优化的核心信号。
研究动机
科学示意图(如电路、几何证明、流程图)通常以光栅图像形式流传,作者难以再编辑或复用。TikZ 作为科学绘图的 de facto 标准,要求严格坐标与显式拓扑,但当前多模态大模型在这类任务上普遍表现欠佳:从 Figure 1 可以看到 InternVL3-8B 生成的电路图使用 \documentclass{article} 而非 standalone,且缺少 circuitikz 包,导致语法幻觉、依赖遗漏和几何失准。作者统计现有数据集 AutomatikZ、MathCoder 等多由网络爬取或简单合成,存在非可执行、视觉-代码错位、片段不完整三大问题;而评估方面,Image2Struct 等基准仅覆盖公式与简单图表,无法系统衡量多学科科学图形的结构保真度。方法论上,TikZero、DeTikZify 仅依赖 CLIP 对齐或 MCTS 搜索,采用单向生成,无法利用 TikZ 可执行的天然优势做闭环训练,因此 SFT 过度惩罚语法变体、视觉 RL 又易于 reward hacking 生成退化图像。
本文的目标是本文提出一个端到端闭环框架,覆盖数据、评估、算法三个层面:在数据上构建执行中心的数据引擎,产出 230K 严格可编译的图像-TikZ 对 SciTikZ-230K;在评估上推出 611 题的多维基准 SciTikZ-Bench,覆盖 11 个学科、Easy/Medium/Hard 三档难度;在算法上提出 Dual Self-Consistency (DSC) 强化学习范式,把视觉保真度与结构逻辑通过 round-trip 重建耦合起来,最终训练出 4B/8B 的 SciTikZer 模型,在编译率与视觉相似度上同时超越 Gemini-2.5-Pro、Qwen3-VL-235B 等大模型以及 DeTikZify-v2.5 等专用基线。
与已有工作不同的是,已有工作要么止步于数据清洗(AutomatikZ 仍依赖噪声爬取),要么仅做单向 SFT 或 CLIP 对齐(TikZero/DeTikZify),无法同时兼顾'能编译''看起来像''结构可编辑'三重目标。本文的独特切入角度是把 LaTeX 工具链作为可执行验证器,让生成的代码 $\hat{y}$ 经过编译器 $\mathcal{T}$ 渲染成图像 $\hat{I}$,再用同一策略回译出 $\hat{y}'$,要求 $\hat{y} \approx \hat{y}'$ 形成对偶闭环,从而无需人工标注即可在无标签数据上获得结构监督信号,弥补 SFT 过严与视觉 RL 过松的中间地带。
核心方法
SciTikZer 的整体思路是把图像到 TikZ 的合成任务视作'视觉可验证的代码生成':先用 230K 高质量数据做监督微调让模型掌握 TikZ 严格语法;再通过课程数据选择挑出模型'最近发展区'的 8K 样本;最后用两阶段强化学习做闭环优化。Stage 1 用 GRPO 联合训练编译奖励 $\alpha_+$(成功 +0.1)/$\alpha_-$(失败 −0.6)、SigLIP 语义相似度(hinge 缩放 $\tau_{\text{hold}}=0.80$)和 LPIPS 几何精度(指数核 $\tau_{\text{temp}}=0.5$),目标是把像素级视觉对齐做扎实。Stage 2 在此基础上引入 DSC:让同一策略对自身渲染图 $\hat{I}=\mathcal{T}(\hat{y})$ 做反向重建 $\hat{y}' \sim \pi_\theta(\cdot|\hat{I})$,再用 CrystalBLEU 与 Kernelized Token Edit Distance 计算 $\hat{y}$ 与 $\hat{y}'$ 的结构-语义相似度 $s_{\text{code}} = \gamma \cdot \text{CrystalBLEU} + (1-\gamma) \cdot s_{\text{ted}}$,并通过保真门控 $\mathbf{1}[r_{\text{vis}}>\tau_{\text{gate}}]$($\tau_{\text{gate}}=0.6$)避免对低质样本做空循环监督。直觉上,这相当于让模型自问:'我画的图,能否再被自己读回成等价的代码?',从而把'看起来对'和'结构对'绑定在一起。
和已有方法相比,本文的本质区别在于:(1) 数据层从被动过滤转向主动补救——利用 Qwen3-VL-235B 作为修复 agent,把约 40% 的非 standalone 片段补全、再修复约 60% 的编译错误,把 310K 原始池升级为 230K 严格可编译的 SciTikZ-230K;(2) 评估层从单一 CLIP 分数转向 SSIM/LPIPS/SigLIP/CLIP/DreamSim/CrystalBLEU/TED 七维评估,并配合 Trim-and-Align 预处理消除 LaTeX 边距噪声;(3) 算法层首次把对偶学习(dual learning)思想引入视觉-代码 RL,让编译器 $\mathcal{T}$ 成为免费的 oracle,用 round-trip 重建 $\hat{y} \to \hat{I} \to \hat{y}'$ 提供无标注的结构监督,并通过 Fidelity Gate 抑制 reward hacking 与 mode collapse。
方法步骤详情
方法流水线分四步。第一步是 SciTikZ-230K 数据引擎:源聚合阶段从 HuggingFace、TeX-StackExchange、arXiv 抓取 310K 原始片段;Active Remediation 阶段先用 Qwen3-VL-235B 把非 standalone 片段包装为 \documentclass{standalone},再用 pdflatex 10 秒沙箱编译,过滤后驱动 MLLM 修复 agent 基于编译日志修错,成功率约 50%;Coarse-to-Fine Purification 阶段先按 8192 token 上限与 15:1 长宽比做启发式过滤,再用 50-gram 去重,最后用 Qwen3-VL-235B 在五维评分上做精筛,仅保留 $S_{\text{total}}>\delta_{\text{total}}$ 且 $s_{\text{comp}}>\delta_{\text{comp}}$ 且其余四维 $>\delta_{\min}$ 的样本。第二步是 SFT 暖启动:在 Qwen3-VL-4B/8B-Instruct 上用 LLaMA-Factory 做 3 epoch 微调,学习率 $5\times 10^{-5}$,全局 batch size 128,最大长度 4096,损失为标准的负对数似然 $\mathcal{L}_{\text{SFT}}(\theta)=-\mathbb{E}_{(I,y)\sim D_{\text{final}}}\sum_t \log\pi_\theta(y_t|y_{\tau_{\text{gate}}\}\cdot\lambda_{\text{code}}\cdot s_{\text{code}}(\hat{y},\hat{y}')$ 再跑 50–80 步,最终得到 SciTikZer-4B/8B。
技术新颖性
技术新颖性体现在三方面。其一是把 LaTeX 编译器作为可执行验证器嵌入 RL 循环,让 reward 信号具备强因果性而非纯启发式打分;其二是首次把 dual learning 的对偶闭环搬到图像-代码跨模态 RL 上,通过 CrystalBLEU(用频率掩码 $T_k$ 抑制前 500 高频 n-gram)加 Kernelized TED($s_{\text{ted}}=\exp(-D_{\text{eed}}/\tau_{\text{ted}})$)构造可微的结构奖励,规避了单纯视觉 RL 的 reward hacking;其三是 Fidelity Gate $\mathbf{1}\{r_{\text{vis}}>0.6\}$ 与循环进入率监测(Table 9)作为正则器,使自一致性只在高质量样本上激活,避免 mode collapse。这种'编译 + 视觉 + 回译'的三层信号目前在 TikZ 生成领域是首创。
实验结果
主实验(Table 1)在 611 题 SciTikZ-Bench 上对比 17 个模型。SciTikZer-8B 取得 97.2% 编译成功率(All SigLIP 93.8 / 96.5,All LPIPS 29.7 / 27.7,All SSIM 72.5 / 74.6,All DreamSim 10.9 / 8.4,TED 42.8,C-BLEU 28.9),相对基线 Qwen3-VL-8B 在编译率上提升 26.2 个百分点、LPIPS 下降 31.0、DreamSim 下降 31.4;相对最强的开源大模型 Qwen3-VL-235B(92.1% 编译率),以 1/30 的参数量实现 +5.1% 编译率提升;相对专用基线 DeTikZify-V2.5-8B(93.1%),SigLIP 高 4.9、LPIPS 低 7.6、C-BLEU 低 1.5(仅在 n-gram 重叠上略输),TED 低 0.2。SciTikZer-4B 同样以 95.9% 编译率和 30.8 LPIPS 击败 14B 的 InternVL3.5。在 DaTikZ-v3(Table 3)外部测试集上,SciTikZer-8B 进一步以 94.46% 编译率、KID 1.14、DSim 88.29、cBLEU 16.17、TED 48.83 全面领先 Qwen3-VL-235B(87.82% 编译率)与 DeTikZify-V2.5-8B(90.41%)。渐进式训练分析(Table 2)显示:SFT 把 8B 编译率从 71.0% 拉到 81.0%,C-BLEU 从 17.0 翻倍到 31.6;Stage 1 把 LPIPS 从 51.4 砍到 37.0;Stage 2 再把编译率推到 97.2%。消融实验 Figure 6 表明,加 DSC 在 8B 上把编译率再提 1.1 点、LPIPS 降 1.3、DreamSim 降 1.4。跨语言实验(Table 4)在 ChartMimic 上把 VinciCoder-8B-RL 的执行率从 91.2% 提到 92.1%,Low/High-L 分别提升 0.9 和 0.6,说明 DSC 范式对 Python 同样有效。盲评人类评测(Table 5,300 题 6 位标注者)显示 SciTikZer-8B 综合得分 12.08、综合偏好 59%,远超 Gemini-2.5-Pro(11.62 / 11%)、GPT-5.1(11.34)、DeTikZify-V2.5-8B(11.14)和 Qwen3-VL-32B(9.73 / 15%)。MLLM 自动裁判(Table 12)也印证 SciTikZer-8B 在视觉保真度 7.12、结构正确 8.05、代码质量 8.40 三项均为最高。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| SciTikZ-Bench 编译成功率(611 题) | Compile Success Rate (%) | 97.2 | Gemini-2.5-Pro 88.9;Qwen3-VL-235B 92.1;DeTikZify-V2.5-8B 93.1 | +5.1 至 +9.0 个百分点(相对 Qwen3-VL-235B 与 Gemini-2.5-Pro) |
| SciTikZ-Bench 语义对齐(All SigLIP) | SigLIP Cosine (×100) | 93.8 | DeTikZify-V2.5-8B 88.9;Qwen3-VL-235B 86.8;Gemini-2.5-Pro 85.5 | +4.9 至 +8.3 |
| SciTikZ-Bench 几何精度(All LPIPS,越低越好) | LPIPS Distance | 29.7 | DeTikZify-V2.5-8B 37.3;Qwen3-VL-235B 43.8;Gemini-2.5-Pro 40.2 | -7.6 至 -14.1 |
| SciTikZ-Bench 代码结构(TED Norm 越低越好) | TED Normalized | 42.8 | DeTikZify-V2.5-8B 43.0;Qwen3-VL-235B 45.2;Gemini-2.5-Pro 46.7 | -0.2 至 -3.9 |
| DaTikZ-v3 外部测试集(542 题) | Compile Rate / KID / cBLEU / DSim | 94.46 / 1.14 / 16.17 / 88.29 | DeTikZify-V2.5-8B 90.41/1.72/12.83/85.05;Qwen3-VL-235B 87.82/2.66/16.05/83.91 | 编译率 +4.05/+6.64;KID -0.58/-1.52;cBLEU +3.34/+0.12 |
| ChartMimic Python 跨语言泛化 | Exec. Rate / Low-L / High-L | 92.1 / 80.2 / 81.5 | VinciCoder-8B-RL 91.2 / 79.3 / 80.9 | +0.9 / +0.9 / +0.6 |
| SciTikZ-Bench 人工盲评(300 题 6 人) | 综合得分 / 综合偏好 | 12.08 / 59% | Gemini-2.5-Pro 11.62/11%;GPT-5.1 11.34/13%;DeTikZify-V2.5-8B 11.14/2% | +0.46 至 +0.94 分;偏好提升 44 至 57 个百分点 |
局限与改进
作者在 Appendix E.1 明确承认三个局限:(1) RL 循环的计算开销显著高于普通 SFT,因为每次策略更新都伴随多次 forward 与 LaTeX 外部渲染;(2) TikZ 生成对编译环境敏感,不同机器的宏包版本与编译器配置可能导致细微差异;(3) 优化目标偏向功能正确而非词汇保真,因此模型可能生成视觉对、但风格/习惯用法偏离 ground-truth 注释(如自己的 CrystalBLEU 在 Stage 2 比纯 GRPO 略低)。从图表观察我还发现:Figure 10 中 SciTikZer-8B 在某些量子加密协议图上仍出现装饰库缺失错误,说明复杂自定义库依赖仍是痛点;Table 2 显示 C-BLEU 从 Stage 1 的 29.1 降到 Stage 2 的 28.6,证实 DSC 主动牺牲词面重叠换结构正确;Fidelity Gate 阈值敏感性(Table 9)显示 τgate 偏离 0.6 都会让 Val Comp 掉 4–6 个百分点,说明该参数对超参数稳健性较敏感。
独立分析的弱点
独立分析可改进的弱点有三处:(1) 数据覆盖偏差——SciTikZ-230K 中 FlowChart 占比 10.4%、Geometry 16.4%、Coordinate Plot 11.7%,而 Bio/Chem/Earth 等学科样本极少,Figure 3 显示这些学科的占比都低于 8%,因此 SciTikZer 在生物过程图或化学反应图上的稳健性可能不足,建议引入专门的 bio-chem 渲染数据或做领域适配 SFT。(2) Back-translation 延迟——DSC 要求策略对自身渲染图做第二次完整前向,单步训练时间近似翻倍,在 8×A100 上 Stage 2 仍需 2–3 天,未来可以改成共享 KV cache 的早退机制或蒸馏一个轻量回译器以加速。(3) Fidelity Gate 的二元门控容易在边界样本上抖动(τgate=0.5 与 0.7 在 Val Comp 上差 4.5 个百分点),建议改为软门控 $\sigma((r_{\text{vis}}-\tau_{\text{gate}})/T)$ 让奖励连续可微,缓解梯度稀疏。(4) CrystalBLEU 频率掩码 $T_k$ 是离线统计,对罕见领域的 n-gram 覆盖不全,建议按学科分层统计掩码。(5) 评测只覆盖到中等复杂的科学示意图,对带阴影、渐变、3D 投影的 TikZ 高级特效未做评测。
未来方向
作者在 Appendix E.2 与正文给出三个方向:(1) Inference-Time Iterative Self-Correction——把编译错误日志作为多轮反馈,在生成阶段做自纠错;(2) Sketch-to-TikZ——把手绘草图也纳入输入,做更接地气的草图到矢量图转换;(3) 推广到 Asymptote、Gnuplot、SVG 等其他声明式/形式化图形语言。基于实验结果我认为还有几个延伸方向值得探索:把 DSC 与过程奖励模型(PRM)结合做 step-wise 自一致性;把 SciTikZ-Bench 拓展到带阴影、渐变、3D 投影的高复杂度样本;将 round-trip 范式推广到 3D 场景图/几何求解器(Code-as-Policy 风格);把双自一致性与人类偏好对齐(RLHF/DPO)结合,进一步贴近科学出版级排版质量。
复现评估
复现性评估整体良好:作者在 GitHub 公开了 SciTikZer-4B/8B 模型权重与完整训练代码(https://github.com/JackieLin0123/SciTikZ),数据集 SciTikZ-230K 与 SciTikZ-Bench 也同步开源;训练算力透明——SFT 在 8×A100 80G 上 4B 跑 1.5 天、8B 跑 2 天,Stage 1 跑 2–3 天、Stage 2 跑 2–3 天,全部超参数在 Tables 8/10/11 完整列出(包括 AdamW、$\beta=1\times10^{-2}$、KL 系数、rollout batch 256、采样温度 0.7、top-p 0.9、生成上限 8192 等);评测采用统一的 Prompt 4 模板、温度 0.1、top-p 0.95、重复惩罚 1.05、最大长度 4096,并在 8×A100 上分布式推理;评测指标全开源(Trim-and-Align 预处理、SSIM/SigLIP/CLIP/LPIPS/DreamSim/CrystalBLEU/TED 公式在 Appendix C 全部给出)。复现难度为中等偏低:硬件门槛 8×A100 80G 大约 50 万元成本级别,普通实验室可通过 EasyR1(基于 verl)复现两阶段 RL;但仍有两个潜在难点——Qwen3-VL-235B 作为数据引擎的修复 agent 需要外部 API 或本地部署 235B 模型,对小团队不友好;pdflatex 渲染流水线需要在 TeX Live 完整环境下做 10 秒沙箱编译,对集群环境配置有一定要求。
论文图表
图左展示提示词与失败案例:InternVL3-8B 输出使用 \documentclass{article} 而非 standalone、缺少 circuitikz 包,并因 battery1 节点未声明导致语法错误,渲染失败;图右展示 SciTikZer 输出,使用 standalone + circuitikz 包,正确画出电池、电阻、电感、电位器等元件。
这是论文核心痛点的可视化——直接展示开源 MLLM 在 TikZ 严格约束下的三大失败模式,让读者迅速理解为什么需要执行中心的数据引擎与双自一致性 RL。
柱状图:GRPO vs Ours (DSC) 在 4B/8B 上的 Succ./SigLIP/LPIPS/DreamSim/C-BLEU 对比。DSC 在 8B 上把编译率从 96.1 → 97.2、LPIPS 从 32.2 → 29.7、DreamSim 从 13.9 → 10.9。
消融 DSC 模块单独贡献的核心证据。
针对一个灌溉系统电路图(Traditional Farming Irrigation System)的逐模型渲染与代码片段对比:SciTikZer-8B 使用 circuitikz + RPvoltages 库并保持连续拓扑逻辑;DeTikZify-V2.5-8B 缺少域内专用库;Qwen3-VL-32B 拓扑断裂;Gemini-2.5-Pro 因 (pump.in) 锚点未定义报致命 PGF Math 错误。
通过一个具体案例展示四类典型失败(库缺失、拓扑断裂、语法幻觉)与 SciTikZer 的优势。