跳到主要内容

研究论文写作

为 NeurIPS/ICML/ICLR 撰写机器学习论文:从设计到投稿。

技能元数据

来源内置(默认安装)
路径skills/research/research-paper-writing
版本1.1.0
作者Orchestra Research
许可证MIT
依赖项semanticscholar, arxiv, habanero, requests, scipy, numpy, matplotlib, SciencePlots
平台linux, macos
标签研究, 论文写作, 实验, 机器学习, 人工智能, NeurIPS, ICML, ICLR, ACL, AAAI, COLM, LaTeX, 引用, 统计分析
相关技能arxiv, ml-paper-writing, subagent-driven-development, plan

参考:完整 SKILL.md

信息

以下是该技能被触发时 Hermes 加载的完整技能定义。这是技能激活时 Agent 看到的指令。

研究论文写作流程

端到端流程,用于生成面向 NeurIPS、ICML、ICLR、ACL、AAAI 和 COLM 的可投稿机器学习/人工智能研究论文。该技能涵盖完整的研究生命周期:实验设计、执行、监控、分析、论文写作、审阅、修改和投稿。 这不是一条线性流水线——而是一个迭代循环。结果会触发新的实验,评审会触发新的分析。Agent 必须处理这些反馈回路。

┌─────────────────────────────────────────────────────────────┐
│ 研究论文流水线 │
│ │
│ 阶段 0: 项目设置 ──► 阶段 1: 文献综述 │
│ │ │ │
│ ▼ ▼ │
│ 阶段 2: 实验设计 阶段 5: 论文草稿 ◄──┐ │
│ │ 撰写 │ │
│ │ │ │ │
│ ▼ ▼ │ │
│ 阶段 3: 执行与 阶段 6: 自我评审 │ │
│ 监控 与修订 ────────┘ │
│ │ │ │
│ ▼ ▼ │
│ 阶段 4: 分析 ─────► 阶段 7: 提交 │
│ (反馈至阶段 2 或 5) │
│ │
└─────────────────────────────────────────────────────────────┘

何时使用此技能

在以下场景使用此技能:

  • 从现有代码库或想法开始撰写一篇新的研究论文
  • 设计并运行实验以支持论文中的主张
  • 撰写或修改研究论文的任何章节
  • 准备向特定会议或研讨会提交论文
  • 回应评审意见,补充额外实验或进行修订
  • 在不同会议格式之间转换论文
  • 撰写非实证论文——理论、综述、基准或立场论文(参见实证 ML 之外的论文类型
  • 为 NLP、HCI 或对齐研究设计人工评估
  • 准备录用后的交付物——海报、演讲、代码发布

核心理念

  1. 主动出击。 交付完整的草稿,而不是问题。科学家们都很忙——给出他们可以回应的具体内容,然后迭代。
  2. 绝不捏造引用。 AI 生成的引用错误率约 40%。始终通过编程方式获取。将无法验证的引用标记为 [CITATION NEEDED]
  3. 论文是一个故事,而不是实验的集合。 每篇论文都需要用一句话陈述一个清晰的贡献。如果做不到,说明论文还没准备好。
  4. 实验服务于主张。 每个实验必须明确说明它支持哪个主张。永远不要运行与论文叙事无关的实验。
  5. 尽早提交,频繁提交。 每完成一批实验、每更新一次论文草稿——都要用描述性的提交信息提交。Git 日志就是实验历史。

主动性与协作

默认:主动出击。先起草,带着草稿提问。

信心等级行动
(仓库清晰,贡献明确)撰写完整草稿,交付,根据反馈迭代
(存在一些模糊之处)撰写带有标记不确定性的草稿,继续推进
(主要未知项)通过 clarify 提出 1-2 个针对性问题,然后起草
章节自主起草?在草稿中标记
摘要"将贡献表述为 X —— 如有需要请调整"
引言"强调了问题 Y —— 如果错了请纠正"
方法"包含了细节 A、B、C —— 请补充遗漏部分"
实验"突出了结果 1、2、3 —— 如有需要请重新排序"
相关工作"引用了论文 X、Y、Z —— 请补充我遗漏的"
仅当以下情况时输入此块:目标会议不明确、存在多个矛盾的框架、结果似乎不完整、明确要求先进行审查。

阶段 0:项目设置

目标:建立工作区,理解现有工作,明确贡献点。

步骤 0.1:探索仓库

# 了解项目结构
ls -la
find . -name "*.py" | head -30
find . -name "*.md" -o -name "*.txt" | xargs grep -l -i "result\|conclusion\|finding"

查找:

  • README.md — 项目概览和声明
  • results/outputs/experiments/ — 现有发现
  • configs/ — 实验设置
  • .bib 文件 — 现有引用
  • 草稿文档或笔记

步骤 0.2:组织工作区

建立一致的工作区结构:

workspace/
paper/ # LaTeX 源码、图表、编译后的 PDF
experiments/ # 实验运行脚本
code/ # 核心方法实现
results/ # 原始实验结果(自动生成)
tasks/ # 任务/基准定义
human_eval/ # 人工评估材料(如果需要)

步骤 0.3:设置版本控制

git init  # 如果尚未初始化
git remote add origin <repo-url>
git checkout -b paper-draft # 或 main

Git 纪律:每完成一批实验,都要用描述性信息提交。例如:

Add Monte Carlo constrained results (5 runs, Sonnet 4.6, policy memo task)
Add Haiku baseline comparison: autoreason vs refinement baselines at cheap model tier

步骤 0.4:明确贡献点

在动笔之前,先理清:

  • 是什么:这篇论文贡献了什么核心内容?
  • 为什么:有哪些证据支撑它?
  • 所以呢:读者为什么要在意?

向科学家提议:“根据我的理解,主要贡献是:[一句话]。关键结果显示 [Y]。这是您想要的表述框架吗?”

步骤 0.5:创建待办清单

使用 todo 工具创建结构化的项目计划:

研究论文待办清单:
- [ ] 定义一句话贡献
- [ ] 文献综述(相关工作 + 基线方法)
- [ ] 设计核心实验
- [ ] 运行实验
- [ ] 分析结果
- [ ] 撰写初稿
- [ ] 自我审查(模拟审稿人)
- [ ] 根据审查意见修改
- [ ] 投稿准备

在整个项目过程中持续更新此清单。它作为跨会话的持久状态。

步骤 0.6:估算计算预算

在运行实验之前,估算总成本和时间:

计算预算检查清单:
- [ ] API 成本:(模型每 token 价格)×(每次运行预估 token 数)×(运行次数)
- [ ] GPU 时长:(每个实验耗时)×(实验数量)×(随机种子数)
- [ ] 人工评估成本:(标注人员数)×(小时数)×(时薪)
- [ ] 总预算上限和应急储备(为重新运行增加 30-50%)

在实验运行过程中跟踪实际花费:

# 简单的成本跟踪器模式
import json, os
from datetime import datetime

COST_LOG = "results/cost_log.jsonl"

def log_cost(experiment: str, model: str, input_tokens: int, output_tokens: int, cost_usd: float):
entry = {
"timestamp": datetime.now().isoformat(),
"experiment": experiment,
"model": model,
"input_tokens": input_tokens,
"output_tokens": output_tokens,
"cost_usd": cost_usd,
}
with open(COST_LOG, "a") as f:
f.write(json.dumps(entry) + "\n")

当预算紧张时:在全面展开实验之前,先运行试点实验(1-2个随机种子,部分任务)。使用较便宜的模型调试流水线,然后在最终运行时切换到目标模型。

步骤 0.7:多作者协作

大多数论文有3-10位作者。尽早建立工作流程:

工作流程工具使用场景
Overleaf基于浏览器多位作者同时编辑,无Git经验
Git + LaTeX使用 git 并配合 .gitignore 忽略辅助文件技术团队,需要基于分支的审阅
Overleaf + Git 同步Overleaf 高级版两者兼得——实时协作与版本历史

章节所有权:将每个章节分配给一位主要作者。其他人可以评论但不直接编辑。防止合并冲突和风格不一致。

作者协作检查清单:
- [ ] 确定章节所有权(谁写什么)
- [ ] 设置共享工作空间(Overleaf 或 Git 仓库)
- [ ] 在任何人开始写作之前,约定符号规范
- [ ] 安排内部审阅轮次(不要等到最后)
- [ ] 指定一人负责最终格式整理
- [ ] 在创建图表之前,约定图表风格(颜色、字体、大小)

尽早约定的 LaTeX 规范

  • \method{} 宏用于统一的方法命名
  • 引用风格:\citet{}\citep{} 的用法
  • 数学符号:向量用小写粗体,矩阵用大写粗体等
  • 英式英语 vs 美式英语拼写

第一阶段:文献综述

目标:查找相关工作,确定基线方法,收集引用。

步骤 1.1:确定种子论文

从代码库中已引用的论文开始:

# 通过终端:
grep -r "arxiv\|doi\|cite" --include="*.md" --include="*.bib" --include="*.py"
find . -name "*.bib"

加载 arxiv 技能以进行结构化论文发现:skill_view("arxiv")。它提供 arXiv REST API 搜索、Semantic Scholar 引用图谱、作者简介以及 BibTeX 生成。

使用 web_search 进行广泛发现,使用 web_extract 获取特定论文:

# 通过 web_search:
web_search("[主要技术] + [应用领域] site:arxiv.org")
web_search("[基线方法] 比较 ICML NeurIPS 2024")

# 通过 web_extract(针对特定论文):
web_extract("https://arxiv.org/abs/2303.17651")

其他可尝试的搜索查询:

搜索查询:
- "[主要技术] + [应用领域]"
- "[基线方法] 比较"
- "[问题名称] 最新进展"
- 现有引用中的作者姓名

推荐:安装 Exa MCP 以进行实时学术搜索:

claude mcp add exa -- npx -y mcp-remote "https://mcp.exa.ai/mcp"

步骤 1.2b:深化搜索(先广度,后深度)

一次扁平搜索(一轮查询)通常会遗漏重要的相关工作。采用受深度研究流程启发的迭代式先广度后深度模式:

迭代式文献搜索:

第 1 轮(广度):4-6 个并行查询,覆盖不同角度
- "[方法] + [领域]"
- "[问题名称] 最新进展 2024 2025"
- "[基线方法] 比较"
- "[替代方法] vs [你的方法]"
→ 收集论文,提取关键概念和术语

第 2 轮(深度):根据第 1 轮的学习生成后续查询
- 第 1 轮论文中发现的新术语
- 第 1 轮最相关结果引用的论文
- 需要调查的矛盾发现
→ 收集论文,识别剩余空白

第 3 轮(针对性):填补特定空白
- 第 1-2 轮中识别出的缺失基线
- 同期工作(最近 6 个月,同一问题)
- 关键负面结果或失败方法
→ 当新查询返回的论文大部分已见过时停止

何时停止:如果某一轮返回的论文中已有超过80%在你的收藏中,则搜索已饱和。通常2-3轮即可。对于综述论文,预计需要4-5轮。

针对基于Agent的工作流:通过 delegate_task 并行委派每一轮的查询。收集结果,去重,然后根据综合学习成果生成下一轮的查询。

步骤 1.3:验证每条引用

绝不要凭记忆生成 BibTeX。始终通过编程方式获取。

对于每条引用,遵循强制性的5步流程:

引用验证(每条引用必须执行):
1. 搜索 → 使用特定关键词查询 Semantic Scholar 或 Exa MCP
2. 验证 → 确认论文存在于2个以上来源(Semantic Scholar + arXiv/CrossRef)
3. 获取 → 通过 DOI 内容协商获取 BibTeX(编程方式,而非凭记忆)
4. 确认 → 验证你引用的主张确实出现在论文中
5. 添加 → 将验证后的 BibTeX 添加到参考文献列表
如果任何步骤失败 → 标记为 [CITATION NEEDED],通知科学家
# 通过 DOI 获取 BibTeX
import requests

def doi_to_bibtex(doi: str) -> str:
response = requests.get(
f"https://doi.org/{doi}",
headers={"Accept": "application/x-bibtex"}
)
response.raise_for_status()
return response.text

如果你无法验证某条引用:

\cite{PLACEHOLDER_author2024_verify_this}  % TODO: 验证此引用是否存在

始终告知科学家:“我已将 [X] 条引用标记为占位符,需要验证。” 参见 references/citation-workflow.md 获取完整的 API 文档和 CitationManager 类。

按方法论对论文进行分组,而不是逐篇罗列:

好的做法:“一条工作线使用 X 的假设 [参考文献],而我们使用 Y 的假设,因为……” 不好的做法:“Smith 等人提出了 X。Jones 等人提出了 Y。我们结合了二者。”


阶段 2:实验设计

目标:设计直接支撑论文主张的实验。每个实验必须回答一个具体问题。

步骤 2.1:将主张映射到实验

创建明确的映射表:

主张实验预期证据
“我们的方法优于基线”主要对比(表 1)胜率、统计显著性
“对于较弱模型,效果更明显”模型规模研究单调提升曲线
“收敛需要范围约束”有约束 vs 无约束收敛速度对比

规则:如果某个实验没有对应任何主张,就不要运行它。

步骤 2.2:设计基线

强大的基线是区分被接收论文和被拒论文的关键。审稿人会问:“他们和 X 对比了吗?”

标准基线类别:

  • 朴素基线:最简单的方法
  • 强基线:已知的最佳现有方法
  • 消融基线:你的方法去掉一个组件
  • 计算量匹配基线:相同的计算预算,不同的分配方式

步骤 2.3:定义评估协议

在运行任何实验之前,请明确以下内容:

  • 指标:你测量的内容,以及方向符号(越高越好/越低越好)
  • 聚合方式:如何将多次运行/任务的结果合并
  • 统计检验:使用哪些检验来确立显著性
  • 样本量:运行次数/问题数/任务数

步骤 2.4:编写实验脚本

参考以下成功研究流程中的模式:

增量保存 — 每一步都保存结果,以便崩溃后恢复:

# 每个问题/任务后保存
result_path = f"results/{task}/{strategy}/result.json"
if os.path.exists(result_path):
continue # 跳过已完成的工作
# ... 运行实验 ...
with open(result_path, 'w') as f:
json.dump(result, f, indent=2)

产物保留 — 保存所有中间输出:

results/<实验名称>/
<任务>/
<策略>/
final_output.md # 最终结果
history.json # 完整轨迹
pass_01/ # 每次迭代的产物
version_a.md
version_b.md
critic.md

关注点分离 — 将生成、评估和可视化分开:

run_experiment.py              # 核心实验运行器
run_baselines.py # 基线对比
run_comparison_judge.py # 盲评
analyze_results.py # 统计分析
make_charts.py # 可视化

完整的设计模式、定时监控和错误恢复,请参见 references/experiment-patterns.md

步骤 2.5:设计人工评估(如适用)

许多 NLP、HCI 和对齐论文需要人工评估作为主要或补充证据。请在运行自动化实验之前设计好这一环节——人工评估通常需要更长的准备时间(机构审查委员会批准、标注员招募)。

何时需要人工评估:

  • 自动化指标无法捕捉你关心的方面(流畅度、有用性、安全性)
  • 你的贡献涉及面向人的品质(可读性、偏好、信任)
  • NLP 会议(ACL、EMNLP)的审稿人期望生成任务有人工评估

关键设计决策:

决策选项指导建议
标注员类型专家、众包工人、最终用户与你的主张要求相匹配
评分尺度李克特量表(1-5)、两两比较、排序对于大语言模型输出,两两比较比李克特量表更可靠
样本量每位标注员及总项目数功效分析或至少 100 个项目,3 名以上标注员
一致性指标Cohen's kappa、Krippendorff's alpha、ICC标注员超过 2 人时使用 Krippendorff's alpha;同时报告原始一致性
平台Prolific、MTurk、内部团队Prolific 保证质量;MTurk 适合大规模;内部团队适合领域专业知识

标注指南检查清单:

- [ ] 清晰的任务描述并附有示例(好的和坏的)
- [ ] 模糊案例的决策标准
- [ ] 每个类别至少 2 个已完成的示例
- [ ] 注意力检查/黄金标准项目(占总量的 10-15%)
- [ ] 资格任务或筛选轮次
- [ ] 每个项目的预估时间和公平报酬(>= 当地最低工资)
- [ ] 如果机构要求,进行机构审查委员会/伦理审查

报告要求(审稿人会检查以下所有项):

  • 标注者人数及其资质
  • 标注者间一致性(需注明具体指标和数值)
  • 报酬详情(金额、预估时薪)
  • 标注界面描述或截图(附录)
  • 总标注时长

完整指南(含人工评估数据的统计检验、众包质量控制模式及IRB指导)请参见 references/human-evaluation.md


阶段 3:实验执行与监控

目标:可靠地运行实验,监控进度,从失败中恢复。

步骤 3.1:启动实验

对于长时间运行的实验,使用 nohup

nohup python run_experiment.py --config config.yaml > logs/experiment_01.log 2>&1 &
echo $! # 记录进程ID

并行执行:可同时运行相互独立的实验,但需注意 API 速率限制。在同一 API 上同时运行 4 个以上实验会拖慢每个实验的速度。

步骤 3.2:设置监控(Cron 模式)

对于长时间运行的实验,设置定期状态检查。Cron 提示应遵循以下模板:

监控提示模板:
1. 检查进程是否仍在运行:ps aux | grep <模式>
2. 读取日志最后 30 行:tail -30 <日志文件>
3. 检查是否已有完成的结果:ls <结果目录>
4. 如果存在结果,读取并报告:cat <结果文件>
5. 如果全部完成,提交:git add -A && git commit -m "<描述性消息>" && git push
6. 以结构化格式报告(表格形式呈现关键指标)
7. 回答本次实验的关键分析问题

静默模式:如果自上次检查以来没有任何变化,请回复 [SILENT] 以抑制对用户的通知。仅在出现新消息时进行报告。

步骤 3.3:处理失败

常见的失败模式及恢复方法:

失败类型检测方式恢复方法
API 速率限制 / 额度耗尽日志中出现 402/429 错误等待,然后重新运行(脚本会跳过已完成的工作)
进程崩溃PID 消失,结果不完整从上一个检查点重新运行
难题超时进程卡住,日志无进展终止并跳过,在结果中注明
错误的模型 ID引用模型名称时出错修正 ID 并重新运行

关键:脚本应始终检查现有结果并跳过已完成的工作。这使得重新运行既安全又高效。

步骤 3.4:提交完成的结果

每批实验完成后:

git add -A
git commit -m "添加 <实验名称>:<一行关键发现>"
git push

步骤 3.5:维护实验日志

Git 提交记录了发生了什么,但并未记录探索树——即根据所学内容决定下一步尝试什么的决策过程。维护一个结构化的实验日志来捕获这个树:

// experiment_journal.jsonl — 每次实验尝试追加一条记录
{
"id": "exp_003",
"parent": "exp_001",
"timestamp": "2025-05-10T14:30:00Z",
"hypothesis": "添加作用域约束将修复 exp_001 中的收敛失败问题",
"plan": "使用 max_tokens=2000 和固定结构模板重新运行 autoreason",
"config": {"model": "haiku", "strategy": "autoreason", "max_tokens": 2000},
"status": "completed",
"result_path": "results/exp_003/",
"key_metrics": {"win_rate": 0.85, "convergence_rounds": 3},
"analysis": "作用域约束修复了收敛问题。胜率从 0.42 跃升至 0.85。",
"next_steps": ["在 Sonnet 上尝试相同约束", "测试不使用结构模板"],
"figures": ["figures/exp003_convergence.pdf"]
}

为什么用日志(journal),而不是只用 git? Git 跟踪文件变更。日志跟踪的是推理过程:为什么尝试 X,学到了什么,这对下一步实验意味着什么。写论文时,这个树状结构对“方法”部分(“我们观察到 X,这促使我们尝试 Y”)和诚实的失败报告来说非常宝贵。

选择最佳路径:当日志显示一个分支树(exp_001 → exp_002a, exp_002b, exp_003)时,找出最能支撑论文主张的路径。将死胡同分支记录在附录中,作为消融实验或负面结果。

每个实验的快照代码:每次运行后复制实验脚本:

cp experiment.py results/exp_003/experiment_snapshot.py

这样即使后续代码发生更改,也能精确复现。


阶段 4:结果分析

目标:提取发现,计算统计量,识别故事主线。

步骤 4.1:汇总结果

编写分析脚本,完成以下任务:

  1. 加载一个批次中的所有结果文件
  2. 计算每个任务和聚合指标
  3. 生成汇总表格
# 标准分析模式
import json, os
from pathlib import Path

results = {}
for result_file in Path("results/").rglob("result.json"):
data = json.loads(result_file.read_text())
strategy = result_file.parent.name
task = result_file.parent.parent.name
results.setdefault(strategy, {})[task] = data

# 计算聚合指标
for strategy, tasks in results.items():
scores = [t["score"] for t in tasks.values()]
print(f"{strategy}: mean={np.mean(scores):.1f}, std={np.std(scores):.1f}")

步骤 4.2:统计显著性

始终计算:

  • 误差线:标准差或标准误,需指明具体使用哪一种
  • 置信区间:关键结果给出 95% 置信区间
  • 成对检验:使用 McNemar 检验比较两种方法
  • 效应量:使用 Cohen's d 或 h 衡量实际显著性

McNemar 检验、自助法置信区间和 Cohen's h 的完整实现,请参见 references/experiment-patterns.md

步骤 4.3:确定故事主线

分析之后,明确回答以下问题:

  1. 主要发现是什么? 用一句话概括。
  2. 什么让你感到意外? 出乎意料的结果往往能成就最好的论文。
  3. 哪些实验失败了? 失败的实验往往信息量最大。如实报告失败反而能增强论文的可信度。
  4. 还需要哪些后续实验? 结果通常会引出新的问题。

处理负面或无效结果

当你的假设错误或结果不明确时,你有三种选择:

情况应对策略适合的会议/期刊
假设错误,但原因有信息量围绕原因分析来组织论文NeurIPS、ICML(如果分析足够严谨)
方法未超越基线,但揭示了新东西将贡献重新定义为理解/分析ICLR(重视理解类工作)、workshop 论文
针对流行观点得到干净的负面结果写出来——领域需要知道NeurIPS Datasets & Benchmarks、TMLR、workshops
结果不明确,没有清晰的故事转向——换不同的实验或重新组织不要硬凑一篇不存在的论文
如何撰写负面结果论文:
  • 以社区普遍认知为引,说明为何检验该认知至关重要
  • 描述严谨的方法论(必须无懈可击——审稿人会更加严格地审查)
  • 用统计证据清晰呈现零结果
  • 分析预期结果为何未能出现
  • 讨论对该领域的影响

明确欢迎负面结果的会议/期刊:NeurIPS(数据集与基准测试轨道)、TMLR、ML可复现性挑战赛、各大会议的工作坊。部分工作坊专门征集负面结果。

步骤 4.4:创建图表与表格

图表

  • 所有绘图使用矢量图形(PDF):plt.savefig('fig.pdf')
  • 色盲友好调色板(Okabe-Ito 或 Paul Tol)
  • 自包含图注——读者无需阅读正文即可理解
  • 图中不包含标题——图注承担此功能

表格

  • 使用 booktabs LaTeX 宏包
  • 每个指标的最佳值加粗
  • 包含方向符号(越高越好/越低越好)
  • 统一小数精度
\usepackage{booktabs}
\begin{tabular}{lcc}
\toprule
Method & Accuracy $\uparrow$ & Latency $\downarrow$ \\
\midrule
Baseline & 85.2 & 45ms \\
\textbf{Ours} & \textbf{92.1} & 38ms \\
\bottomrule
\end{tabular}

步骤 4.5:决定:继续实验还是开始写作?

情况行动
核心主张得到支持,结果显著进入阶段 5(写作)
结果不明确,需要更多数据返回阶段 2(设计)
意外发现提示新方向返回阶段 2(设计)
缺少审稿人会要求的消融实验先运行该实验,再进入阶段 5
所有实验已完成但部分失败记录失败,进入阶段 5

步骤 4.6:撰写实验日志(连接实验与论文的桥梁)

在开始撰写论文之前,创建一个结构化的实验日志,将实验结果与文字叙述连接起来。这是连接实验与论文之间最重要的纽带——没有它,写作 Agent 就必须从原始结果文件中重新推导出整个故事。

创建 experiment_log.md,结构如下:

# 实验日志

## 贡献(一句话概括)
[论文的核心主张]

## 已完成的实验

### 实验 1:[名称]
- **验证的论点**:[该实验支持论文中的哪个论点]
- **实验设置**:[模型、数据集、配置、运行次数]
- **关键结果**:[一句话概括,包含具体数字]
- **结果文件**:results/exp1/final_info.json
- **生成的图表**:figures/exp1_comparison.pdf
- **意外发现**:[任何出乎意料的结果]

### 实验 2:[名称]
...

## 图表
| 文件名 | 描述 | 所属章节 |
|----------|-------------|---------------------------|
| figures/main_comparison.pdf | 在基准测试 X 上比较所有方法的柱状图 | 结果,图 2 |
| figures/ablation.pdf | 移除组件 A、B、C 的消融实验 | 结果,图 3 |
...

## 失败的实验(如实记录)
- [尝试了什么,失败的原因,以及它告诉了我们什么]

## 待解决的问题
- [实验结果提出的、论文需要解答的任何问题]

为什么这很重要:在起草论文时,Agent(或一个委派的子 Agent)可以加载 experiment_log.md 以及 LaTeX 模板,并基于实际结果生成初稿。如果没有这个桥梁,写作 Agent 就必须解析原始的 JSON/CSV 文件并推断故事脉络——这通常是导致数字被幻觉或误报的常见原因。 Git discipline: 将这份日志与它所描述的结果一起提交。


迭代优化:策略选择

此流程中的任何输出——论文草稿、实验脚本、分析——都可以进行迭代优化。自推理研究为每种优化策略何时有效、何时失效提供了经验证据。请使用本节来选择合适的方法。

快速决策表

你的情况策略原因
中端模型 + 约束性任务自推理最佳适用点。生成与评估之间的差距最大。基线方法会主动破坏弱模型的输出。
中端模型 + 开放性任务自推理(添加范围约束)添加固定事实、结构或可交付成果来限定改进空间。
前沿模型 + 约束性任务自推理即使在前沿模型上,也能在 2/3 的约束性任务中胜出。
前沿模型 + 无约束任务批评与修订单次生成自推理排名最后。模型自身评估能力足够好。
具体技术任务(系统设计)批评与修订直接的“发现-修复”循环更高效。
模板填充任务(一种正确结构)单次生成保守策略决策空间极小。迭代不会增加价值。
带测试用例的代码自推理(代码变体)在修复前对失败原因进行结构化分析。恢复率 62% 对比 43%。
非常弱的模型(Llama 8B 级别)单次生成模型太弱,无法生成多样化的候选方案。应投资于生成质量。

生成-评估差距

核心洞察:Autoreason 的价值取决于模型的生成能力与自我评估能力之间的差距。

模型层级           │ 生成能力 │ 自我评估 │ 差距    │ Autoreason 价值
──────────────────┼──────────┼─────────┼────────┼─────────────────
弱(Llama 8B) │ 差 │ 差 │ 小 │ 无 — 无法生成多样化的候选
中(Haiku 3.5) │ 尚可 │ 差 │ 大 │ 最大 — 42/42 完美 Borda
中(Gemini Flash) │ 尚可 │ 中等 │ 较大 │ 高 — 赢得 2/3
强(Sonnet 4) │ 好 │ 尚可 │ 中等 │ 中等 — 赢得 3/5
前沿(S4.6) │ 优秀 │ 好 │ 小 │ 仅在约束条件下有效

这种差距是结构性的,而非暂时的。随着成本下降,今天的前沿模型会成为明天的中端模型。最佳点会移动,但永远不会消失。

Autoreason 循环(总结)

每一轮由全新、独立的 Agent 生成三个候选:

  1. 批评者 → 找出当前方案 A 中的问题(不提供修复)
  2. 作者 B → 基于批评意见修改 A
  3. 合成者 → 合并 A 和 B(随机化标签)
  4. 评审团 → 3 个盲审 CoT 评审员通过 Borda 计数对 A、B、AB 进行排名
  5. 收敛 → A 连续获胜 k=2 轮 → 结束

关键参数:

  • k=2 收敛(k=1 过早,k=3 成本过高且无质量提升)
  • 始终使用 CoT 评审员(收敛速度提升 3 倍)
  • 作者温度 0.8,评审员温度 0.3
  • 保守平局决胜:当前方案获胜
  • 每个角色都是全新 Agent,无共享上下文

应用于论文草稿

在通过自动推理(autoreason)对论文本身进行精炼时:

  • 向评审者提供真实数据:实际的实验数据、结果 JSON、统计输出。没有这些,模型会幻觉出虚假的消融实验和伪造的置信区间。
  • 至少使用 3 个有效评审者:一个损坏的评审解析器不会增加噪声——它会完全阻止达成均衡。
  • 限定修订范围:“解决这些具体弱点”,而不是“改进论文”。

失败模式

失败类型检测方法修复方式
无法收敛(A 从未获胜)在 20+ 轮中 A 获胜 <15%为任务添加范围约束
综合漂移字数无限制增长约束结构和交付物
退化至低于单次生成基线得分高于迭代输出切换为单次生成;模型可能太弱
过拟合(代码)公开测试通过率高,私有测试通过率低使用结构化分析,而不仅仅是测试反馈
评审者损坏解析失败导致评审小组少于 3 人在继续之前修复解析器

完整提示词、Borda 评分细节、模型选择指南、范围约束设计模式以及计算预算参考,请参见 references/autoreason-methodology.md


阶段 5:论文撰写

目标:撰写一篇完整的、可发表的论文。

大型项目的上下文管理

一个包含 50 多个实验文件、多个结果目录和大量文献笔记的论文项目,很容易超出 Agent 的上下文窗口。请主动管理:

每个起草任务应加载到上下文中的内容:

起草任务加载到上下文不要加载
撰写引言experiment_log.md、贡献声明、5-10 篇最相关的论文摘要原始结果 JSON、完整的实验脚本、所有文献笔记
撰写方法实验配置、伪代码、架构描述原始日志、其他实验的结果
撰写结果experiment_log.md、结果汇总表、图表列表完整的分析脚本、中间数据
撰写相关工作整理好的引用笔记(步骤 1.4 的输出)、.bib 文件实验文件、原始 PDF
修订阶段完整的论文草稿、具体的审稿人意见其他所有内容

原则:

  • experiment_log.md 是主要的上下文桥梁 — 它汇总了写作所需的一切,无需加载原始数据文件(参见步骤 4.6)
  • 委托任务时,一次只加载一个章节的上下文。负责起草方法的子 Agent 不需要文献综述笔记。
  • 进行摘要,不要包含原始文件。 对于 200 行的结果 JSON,加载一个 10 行的汇总表。对于 50 页的相关论文,加载 5 句摘要 + 你关于其相关性的 2 行笔记。
  • 对于非常大的项目:创建一个包含预压缩摘要的 context/ 目录:
    context/
    contribution.md # 1 句话
    experiment_summary.md # 关键结果表(来自 experiment_log.md)
    literature_map.md # 整理好的引用笔记
    figure_inventory.md # 带描述的图表列表

叙事原则

最关键的一点:你的论文不是实验的堆砌——它是一个有清晰贡献、有证据支撑的故事。

每一篇成功的机器学习论文都围绕 Neel Nanda 所说的“叙事”展开:一个简短、严谨、基于证据的技术故事,并给出读者关心的结论。

三大支柱(必须在引言结束时清晰呈现):

支柱描述检验标准
是什么1-3 个具体的新颖主张你能用一句话说清楚吗?
为什么严谨的实证证据实验能否区分你的假设与其他可能性?
所以呢读者为什么要在意这能否关联到社区公认的问题?

如果你无法用一句话说清自己的贡献,那你还未真正拥有一篇论文。

本指南的参考来源

本技能综合了多位在顶级会议大量发表论文的研究者的写作理念。写作理念层最初由 Orchestra Researchml-paper-writing 技能的形式整理。

来源关键贡献链接
Neel Nanda(Google DeepMind)叙事原则,是什么/为什么/所以呢框架如何撰写机器学习论文
Sebastian Farquhar(DeepMind)五句话摘要公式如何撰写机器学习论文
Gopen & Swan读者期望的七项原则科学写作的科学
Zachary Lipton用词选择,消除模糊表述科学写作启发式
Jacob Steinhardt(加州大学伯克利分校)精确性,术语一致性写作技巧
Ethan Perez(Anthropic)微观层面的清晰度技巧轻松论文写作技巧
Andrej Karpathy聚焦单一贡献各类讲座
如需深入了解以上任何内容,请参阅:

时间分配

在以下各部分上花费大致相等的时间:

  1. 摘要
  2. 引言
  3. 图表
  4. 其余所有内容的总和

为什么? 大多数审稿人在读到你的方法之前就已经形成了判断。读者阅读论文的顺序是:标题 → 摘要 → 引言 → 图表 → 可能才到其余部分。

写作流程

论文写作检查清单:
- [ ] 步骤 1:定义一句话贡献
- [ ] 步骤 2:起草图 1(核心思想或最令人信服的结果)
- [ ] 步骤 3:起草摘要(5 句公式)
- [ ] 步骤 4:起草引言(最多 1-1.5 页)
- [ ] 步骤 5:起草方法
- [ ] 步骤 6:起草实验与结果
- [ ] 步骤 7:起草相关工作
- [ ] 步骤 8:起草结论与讨论
- [ ] 步骤 9:起草局限性(所有会议/期刊均要求)
- [ ] 步骤 10:规划附录(证明、额外实验、细节)
- [ ] 步骤 11:完成论文检查清单
- [ ] 步骤 12:最终审阅

两遍精炼模式

在使用 AI Agent 起草时,采用两遍方法(在 SakanaAI 的 AI-Scientist 流程中已被证明有效):

第一遍 — 逐节写作 + 立即精炼: 对于每个章节,先写出完整草稿,然后在同一上下文中立即进行精炼。这样可以在章节内容还新鲜时,抓住局部问题(清晰度、流畅性、完整性)。 Pass 2 — 全局精炼(结合全文上下文):
在所有章节草稿完成后,带着对整篇论文的认知重新审视每个章节。这能发现跨章节问题:冗余、术语不一致、叙事流畅性,以及某个章节承诺了但其他章节未兑现的缺口。

第二轮精炼提示(按章节):
"Review the [SECTION] in the context of the complete paper.
- Does it fit with the rest of the paper? Are there redundancies with other sections?
- Is terminology consistent with Introduction and Methods?
- Can anything be cut without weakening the message?
- Does the narrative flow from the previous section and into the next?
Make minimal, targeted edits. Do not rewrite from scratch."

LaTeX 错误检查清单

将以下检查清单附加到每个精炼提示后。这些是 LLM 编写 LaTeX 时最常见的错误:

LaTeX 质量检查清单(每次编辑后验证):
- [ ] 无未闭合的数学符号($ 符号成对出现)
- [ ] 仅引用存在的图表(\ref 与 \label 匹配)
- [ ] 无捏造的引用(\cite 与 .bib 中的条目匹配)
- [ ] 每个 \begin{env} 都有对应的 \end{env}(尤其是 figure、table、algorithm)
- [ ] 无 HTML 污染(例如 </end{figure}> 而非 \end{figure})
- [ ] 数学模式外无未转义的下划线(文本中使用 \_)
- [ ] 无重复的 \label 定义
- [ ] 无重复的章节标题
- [ ] 文本中的数字与实际实验结果一致
- [ ] 所有图表都有标题和标签
- [ ] 无导致 overfull hbox 警告的过长行

步骤 5.0:标题

标题是论文中被阅读最多的元素。它决定了是否有人会点击进入摘要。

好的标题

  • 陈述贡献或发现:"Autoreason: When Iterative LLM Refinement Works and Why It Fails"
  • 突出令人惊讶的结果:"Scaling Data-Constrained Language Models"(暗示你可以做到)
  • 命名方法 + 其作用:"DPO: Direct Preference Optimization of Language Models"

不好的标题

  • 过于通用:"An Approach to Improving Language Model Outputs"
  • 过长:超过约 15 个单词的任何标题
  • 仅含术语:"Asymptotic Convergence of Iterative Stochastic Policy Refinement"(这是给谁看的?)

规则

  • 如果有方法名称,请包含在内(便于引用)
  • 包含 1-2 个审稿人会搜索的关键词
  • 除非两部分都有意义,否则避免使用冒号
  • 测试:审稿人仅凭标题就能知道领域和贡献吗?

步骤 5.1:摘要(五句话公式)

来自 Sebastian Farquhar(DeepMind):

1. 你实现了什么:"We introduce...", "We prove...", "We demonstrate..."
2. 为什么这很难且重要
3. 你如何做到(包含专业关键词以便被发现)
4. 你有什么证据
5. 你最引人注目的数字/结果

删除像"Large language models have achieved remarkable success..."这样的通用开头。

步骤 5.2:图 1

图 1 是大多数读者(在摘要之后)看的第二样东西。在写引言之前先草拟它——这会迫使你理清核心想法。

图1类型使用时机示例
方法图新架构或新流程展示你系统的TikZ流程图
结果预告图一个令人信服的结果就能说明全部柱状图:“我们的 vs 基线”,差距明显
问题说明图问题本身不直观修复前后对比,展示你解决的失败模式
概念图抽象贡献需要视觉支撑方法属性的2x2矩阵

规则:图1必须在不阅读任何文字的情况下就能理解。仅凭图注就应传达核心思想。有目的地使用颜色——不要只是为了装饰。

步骤5.3:引言(最多1-1.5页)

必须包含:

  • 清晰的问题陈述
  • 简要的方法概述
  • 2-4条贡献列表(双栏格式下每条最多1-2行)
  • 方法部分应在第2-3页开始

步骤5.4:方法

确保可复现:

  • 概念性大纲或伪代码
  • 列出所有超参数
  • 提供足以复现的架构细节
  • 呈现最终设计决策;消融实验放在实验部分

步骤5.5:实验与结果

对于每个实验,明确说明:

  • 它支持什么主张
  • 如何与主要贡献关联
  • 观察要点:“蓝线显示X,这证明了Y”

要求:

  • 误差棒及其方法说明(标准差 vs 标准误差)
  • 超参数搜索范围
  • 计算基础设施(GPU型号、总时长)
  • 随机种子设置方法

按方法论组织,不要逐篇罗列论文。广泛引用——审稿人很可能就是相关论文的作者。

步骤 5.7:局限性(必填)

所有重要会议都要求这一部分。坦诚有助于:

  • 审稿人被要求不因诚实的局限性说明而扣分
  • 先指出弱点,提前规避批评
  • 解释为什么这些局限性不会削弱核心主张

步骤 5.8:结论与讨论

结论(必填,0.5–1 页):

  • 用一句话重新陈述贡献(措辞与摘要不同)
  • 总结关键发现(2–3 句话,不要列清单)
  • 意义:这对领域意味着什么?
  • 未来工作:2–3 个具体的下一步(不要模糊地说“我们把 X 留给未来工作”)

讨论(可选,有时与结论合并):

  • 超出直接结果的更广泛影响
  • 与其他子领域的联系
  • 对方法何时有效、何时无效的诚实评估
  • 实际部署方面的考虑

不要在结论中引入新的结果或主张。

步骤 5.9:附录策略

所有主要会议对附录页数没有限制,附录对可复现性至关重要。结构如下:

附录章节内容
证明与推导正文中过长的完整证明。正文可陈述定理并注明“证明见附录 A”。
额外实验消融实验、缩放曲线、按数据集细分、超参数敏感性
实现细节完整的超参数表、训练细节、硬件规格、随机种子
数据集文档数据收集过程、标注指南、许可信息、预处理
提示与模板使用的确切提示(针对基于 LLM 的方法)、评估模板
人工评估标注界面截图、给标注者的说明、IRB 详情
额外图表按任务细分、轨迹可视化、失败案例示例
规则
  • 主论文必须独立成篇——审稿人无需阅读附录
  • 切勿将关键证据仅放在附录中
  • 交叉引用时写明:"完整结果见表5(附录B)",而非仅仅"见附录"
  • 使用 \appendix 命令,然后使用 \section{A: 证明}

页面预算管理

当超出页面限制时:

缩减策略节省页数风险
将证明移入附录0.5-2 页低——标准做法
压缩相关工作0.5-1 页中——可能遗漏关键引用
使用子图合并表格0.25-0.5 页低——通常可提高可读性
谨慎使用 \vspace{-Xpt}0.1-0.3 页用量少则风险低,明显则风险高
删除定性示例0.5-1 页中——审稿人喜欢示例
缩小图片尺寸0.25-0.5 页高——图片必须保持可读性

不要:减小字号、修改页边距、删除必要章节(局限性、更广泛影响),或在正文中使用 \small/\footnotesize

步骤 5.10:伦理与更广泛影响声明

大多数会议现在要求或强烈鼓励提供伦理/更广泛影响声明。这不是套话——审稿人会认真阅读,并可能指出伦理问题,从而导致直接拒稿。

需要包含的内容:

组成部分内容要求方
积极的社会影响你的工作如何惠及社会NeurIPS, ICML
潜在的负面影响滥用风险、双重用途问题、失败模式NeurIPS, ICML
公平性与偏见你的方法/数据是否存在已知偏见?所有会议(隐含要求)
环境影响大规模训练的计算碳足迹ICML, 以及越来越多的 NeurIPS
隐私你的工作是否使用或支持处理个人数据?ACL, NeurIPS
LLM 声明是否在写作或实验中使用 AI?ICLR(强制), ACL
撰写声明:
\section*{更广泛影响声明}
% NeurIPS/ICML:在结论之后,不计入页数限制

% 1. 积极应用(1-2句话)
本工作实现了[具体应用],可能使[具体群体]受益。

% 2. 风险与缓解措施(1-3句话,要具体)
[方法/模型]可能被滥用于[具体风险]。我们通过[具体缓解措施,例如仅发布大于特定大小的模型权重、包含安全过滤器、记录故障模式]来缓解这一风险。

% 3. 影响声明的局限性(1句话)
我们的评估仅限于[特定领域];更广泛的部署需要[具体的额外工作]。

常见错误:

  • 写“我们看不出任何负面影响”(几乎从不真实——审稿人不信任这种说法)
  • 模糊表述:“这可能被滥用”但没有说明如何被滥用
  • 忽略大规模工作的计算成本
  • 忘记在要求披露LLM使用的会议中说明LLM的使用情况

计算碳足迹(针对训练密集型论文):

# 使用 ML CO2 Impact 工具方法估算
gpu_hours = 1000 # 总 GPU 小时数
gpu_tdp_watts = 400 # 例如 A100 = 400W
pue = 1.1 # 电能利用效率(数据中心开销)
carbon_intensity = 0.429 # kg CO2/kWh(美国平均值;因地区而异)

energy_kwh = (gpu_hours * gpu_tdp_watts * pue) / 1000
carbon_kg = energy_kwh * carbon_intensity
print(f"能量:{energy_kwh:.0f} kWh,碳:{carbon_kg:.0f} kg CO2eq")

第 5.11 步:数据表与模型卡(如适用)

如果您的论文介绍了新数据集发布模型,请包含结构化文档。审稿人越来越期望这一点,NeurIPS 数据集与基准(Datasets & Benchmarks)赛道也要求这样做。

数据集数据表(Datasheets for Datasets, Gebru et al., 2021)——包含在附录中:

数据集文档(附录):
- 动机:为什么创建这个数据集?它支持什么任务?
- 组成:实例是什么?有多少?数据类型?
- 收集:数据是如何收集的?来源是什么?
- 预处理:应用了哪些清洗/过滤?
- 分发:数据集如何分发?使用什么许可证?
- 维护:谁维护它?如何报告问题?
- 伦理考量:包含个人数据?获得同意了吗?
潜在的危害?已知的偏见?

模型卡(Model Cards, Mitchell et al., 2019)——对于模型发布,包含在附录中:

模型卡(附录):
- 模型详情:架构、训练数据、训练流程
- 预期用途:主要用例,超出范围的使用
- 评估指标:基准测试的评估指标和结果
- 伦理考量:已知偏见,公平性评估
- 局限性:已知的失败模式,模型表现不佳的领域

写作风格

句子层面的清晰度(Gopen & Swan 的 7 条原则):

原则规则
主语-动词邻近主语和动词保持靠近
强调位置将重点放在句子末尾
话题位置先给出上下文,后放新信息
旧信息在前,新信息在后熟悉信息 → 不熟悉信息
一个单元,一个功能每个段落围绕一个要点
动词表达动作使用动词,而非名词化
先上下文,后新内容呈现之前先设定背景
单词选择(Lipton, Steinhardt):
  • 具体化:用“准确率”而非“性能”
  • 避免模糊:除非确实不确定,否则去掉“可能”
  • 全文术语保持一致
  • 避免渐进式词汇:用“开发”,不用“组合”

完整写作指南及示例:参见 references/writing-guide.md

使用 LaTeX 模板

始终先复制整个模板目录,然后在其中进行写作。

模板设置检查清单:
- [ ] 步骤 1:将整个模板目录复制到新项目
- [ ] 步骤 2:验证模板原样编译通过(在修改之前)
- [ ] 步骤 3:阅读模板的示例内容,了解结构
- [ ] 步骤 4:逐节替换示例内容
- [ ] 步骤 5:使用模板宏(检查导言区中的 \newcommand 定义)
- [ ] 步骤 6:最后再清理模板残留内容

步骤 1:复制完整模板

cp -r templates/neurips2025/ ~/papers/my-paper/
cd ~/papers/my-paper/
ls -la # 应看到:main.tex, neurips.sty, Makefile 等

复制整个目录,而不仅仅是 .tex 文件。模板包含样式文件(.sty)、参考文献样式(.bst)、示例内容和 Makefile。

步骤 2:先验证模板能编译

在进行任何修改之前:

latexmk -pdf main.tex
# 或手动:pdflatex main.tex && bibtex main && pdflatex main.tex && pdflatex main.tex

如果未修改的模板无法编译,请先解决该问题(通常是缺少 TeX 包——通过 tlmgr install &lt;package&gt; 安装)。 步骤 3:保留模板内容作为参考

不要立即删除示例内容。将其注释掉,并作为格式参考使用:

% 模板示例(保留作为参考):
% \begin{figure}[t]
% \centering
% \includegraphics[width=0.8\linewidth]{example-image}
% \caption{模板展示了标题样式}
% \end{figure}

% 你的实际图片:
\begin{figure}[t]
\centering
\includegraphics[width=0.8\linewidth]{your-figure.pdf}
\caption{你的标题,遵循相同样式。}
\end{figure}

步骤 4:逐节替换内容

按顺序系统地进行:标题/作者 → 摘要 → 引言 → 方法 → 实验 → 相关工作 → 结论 → 参考文献 → 附录。每完成一节后编译一次。

步骤 5:使用模板宏

\newcommand{\method}{YourMethodName}  % 统一的方法命名
\newcommand{\eg}{e.g.,\xspace} % 正确的缩写
\newcommand{\ie}{i.e.,\xspace}

模板常见陷阱

陷阱问题解决方案
只复制 .tex 文件缺少 .sty,无法编译复制整个目录
修改 .sty 文件破坏会议格式永远不要编辑样式文件
随意添加宏包冲突,破坏模板只在必要时添加
过早删除模板内容丢失格式参考保留为注释直到完成
不频繁编译错误累积每完成一节后编译
使用栅格 PNG 作为图片论文中模糊始终通过 savefig('fig.pdf') 使用矢量 PDF

快速模板参考

会议主文件样式文件页数限制
NeurIPS 2025main.texneurips.sty9 页
ICML 2026example_paper.texicml2026.sty8 页
ICLR 2026iclr2026_conference.texiclr2026_conference.sty9 页
ACL 2025acl_latex.texacl.sty8 页(长文)
AAAI 2026aaai2026-unified-template.texaaai2026.sty7 页
COLM 2025colm2025_conference.texcolm2025_conference.sty9 页

通用规则:双盲评审,参考文献不计入页数,附录不限页数,必须使用 LaTeX。

模板位于 templates/ 目录下。编译环境设置(VS Code、命令行、Overleaf、其他 IDE)请参见 templates/README.md

表格与图表

表格 — 使用 booktabs 实现专业排版:

\usepackage{booktabs}
\begin{tabular}{lcc}
\toprule
方法 & 准确率 $\uparrow$ & 延迟 $\downarrow$ \\
\midrule
基线 & 85.2 & 45ms \\
\textbf{我们的方法} & \textbf{92.1} & 38ms \\
\bottomrule
\end{tabular}

规则:

  • 每个指标的最佳值加粗
  • 包含方向符号($\uparrow$ 越高越好,$\downarrow$ 越低越好)
  • 数值列右对齐
  • 小数精度保持一致

图表

  • 矢量图(PDF、EPS)用于所有图表和示意图 — plt.savefig('fig.pdf')
  • 位图(PNG 600 DPI)仅用于照片
  • 色盲友好调色板(Okabe-Ito 或 Paul Tol)
  • 验证灰度可读性(8% 的男性存在色觉缺陷)
  • 图表内不包含标题 — 图注承担此功能
  • 图注自包含 — 读者无需阅读正文即可理解

会议转投

如需在不同会议之间转换格式,请参见第 7 阶段(投稿准备)——其中涵盖了完整的转换流程、页面变更表格以及被拒后的指导。

专业 LaTeX 导言区

为任何论文添加以下宏包,即可获得专业品质。它们与所有主流会议样式文件兼容:

% --- 专业宏包(在会议样式文件之后添加)---

% 排版
\usepackage{microtype} % 微排版改进(突出、扩展)
% 让文字明显更精致——始终包含

% 表格
\usepackage{booktabs} % 专业表格线(\toprule, \midrule, \bottomrule)
\usepackage{siunitx} % 统一的数字格式、小数点对齐
% 用法:\num{12345} → 12,345;\SI{3.5}{GHz} → 3.5 GHz
% 表格对齐:S 列类型用于小数点对齐的数字

% 图片
\usepackage{graphicx} % 包含图片(\includegraphics)
\usepackage{subcaption} % 子图,带 (a)、(b)、(c) 标签
% 用法:\begin{subfigure}{0.48\textwidth} ... \end{subfigure}

% 图表与算法
\usepackage{tikz} % 可编程矢量图
\usetikzlibrary{arrows.meta, positioning, shapes.geometric, calc, fit, backgrounds}
\usepackage[ruled,vlined]{algorithm2e} % 专业伪代码
% 替代方案:如果模板已包含,则使用 \usepackage{algorithmicx}

% 交叉引用
\usepackage{cleveref} % 智能引用:\cref{fig:x} → "图 1"
% 必须在 hyperref 之后加载
% 处理:图、表、章节、公式、算法

% 数学(通常由会议 .sty 包含,但请确认)
\usepackage{amsmath,amssymb} % AMS 数学环境与符号
\usepackage{mathtools} % 扩展 amsmath(dcases, coloneqq 等)

% 颜色(用于图片和图表)
\usepackage{xcolor} % 颜色管理
% Okabe-Ito 色盲友好调色板:
\definecolor{okblue}{HTML}{0072B2}
\definecolor{okorange}{HTML}{E69F00}
\definecolor{okgreen}{HTML}{009E73}
\definecolor{okred}{HTML}{D55E00}
\definecolor{okpurple}{HTML}{CC79A7}
\definecolor{okcyan}{HTML}{56B4E9}
\definecolor{okyellow}{HTML}{F0E442}

注意:

  • microtype 是对视觉质量影响最大的单一宏包。它会在亚像素级别调整字符间距。请始终包含它。
  • siunitx 通过 S 列类型处理表格中的小数点对齐——无需手动调整间距。
  • cleveref 必须在 hyperref 之后加载。大多数会议 .sty 文件会加载 hyperref,因此请将 cleveref 放在最后。
  • 检查会议模板是否已加载了这些宏包(尤其是 algorithmamsmathgraphicx)。不要重复加载。

siunitx 表格对齐

siunitx 能显著提升数字密集型表格的可读性:

\begin{tabular}{l S[table-format=2.1] S[table-format=2.1] S[table-format=2.1]}
\toprule
Method & {Accuracy $\uparrow$} & {F1 $\uparrow$} & {Latency (ms) $\downarrow$} \\
\midrule
Baseline & 85.2 & 83.7 & 45.3 \\
Ablation (no X) & 87.1 & 85.4 & 42.1 \\
\textbf{Ours} & \textbf{92.1} & \textbf{90.8} & \textbf{38.7} \\
\bottomrule
\end{tabular}

S 列类型会自动按小数点对齐。用 {} 包裹的表头会跳过对齐。

子图

并排图的常用模式:

\begin{figure}[t]
\centering
\begin{subfigure}[b]{0.48\textwidth}
\centering
\includegraphics[width=\textwidth]{fig_results_a.pdf}
\caption{Results on Dataset A.}
\label{fig:results-a}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.48\textwidth}
\centering
\includegraphics[width=\textwidth]{fig_results_b.pdf}
\caption{Results on Dataset B.}
\label{fig:results-b}
\end{subfigure}
\caption{Comparison of our method across two datasets. (a) shows the scaling
behavior and (b) shows the ablation results. Both use 5 random seeds.}
\label{fig:results}
\end{figure}

使用 \cref{fig:results} → "图1",\cref{fig:results-a} → "图1a"。

使用 algorithm2e 的伪代码

\begin{algorithm}[t]
\caption{Iterative Refinement with Judge Panel}
\label{alg:method}
\KwIn{Task $T$, model $M$, judges $J_1 \ldots J_n$, convergence threshold $k$}
\KwOut{Final output $A^*$}
$A \gets M(T)$ \tcp*{Initial generation}
$\text{streak} \gets 0$\;
\While{$\text{streak} < k$}{
$C \gets \text{Critic}(A, T)$ \tcp*{Identify weaknesses}
$B \gets M(T, C)$ \tcp*{Revised version addressing critique}
$AB \gets \text{Synthesize}(A, B)$ \tcp*{Merge best elements}
\ForEach{judge $J_i$}{
$\text{rank}_i \gets J_i(\text{shuffle}(A, B, AB))$ \tcp*{Blind ranking}
}
$\text{winner} \gets \text{BordaCount}(\text{ranks})$\;
\eIf{$\text{winner} = A$}{
$\text{streak} \gets \text{streak} + 1$\;
}{
$A \gets \text{winner}$; $\text{streak} \gets 0$\;
}
}
\Return{$A$}\;
\end{algorithm}

TikZ 图表模式

TikZ 是机器学习论文中方法图的标准。常见模式:

流水线/流程图(机器学习论文中最常见):

\begin{figure}[t]
\centering
\begin{tikzpicture}[
node distance=1.8cm,
box/.style={rectangle, draw, rounded corners, minimum height=1cm,
minimum width=2cm, align=center, font=\small},
arrow/.style={-{Stealth[length=3mm]}, thick},
]
\node[box, fill=okcyan!20] (input) {Input\\$x$};
\node[box, fill=okblue!20, right of=input] (encoder) {Encoder\\$f_\theta$};
\node[box, fill=okgreen!20, right of=encoder] (latent) {Latent\\$z$};
\node[box, fill=okorange!20, right of=latent] (decoder) {Decoder\\$g_\phi$};
\node[box, fill=okred!20, right of=decoder] (output) {Output\\$\hat{x}$};

\draw[arrow] (input) -- (encoder);
\draw[arrow] (encoder) -- (latent);
\draw[arrow] (latent) -- (decoder);
\draw[arrow] (decoder) -- (output);
\end{tikzpicture}
\caption{Architecture overview. The encoder maps input $x$ to latent
representation $z$, which the decoder reconstructs.}
\label{fig:architecture}
\end{figure}

比较/矩阵图(用于展示方法变体):

\begin{tikzpicture}[
cell/.style={rectangle, draw, minimum width=2.5cm, minimum height=1cm,
align=center, font=\small},
header/.style={cell, fill=gray!20, font=\small\bfseries},
]
% 表头
\node[header] at (0, 0) {方法};
\node[header] at (3, 0) {收敛?};
\node[header] at (6, 0) {质量?};
% 行
\node[cell] at (0, -1) {单次通过};
\node[cell, fill=okgreen!15] at (3, -1) {N/A};
\node[cell, fill=okorange!15] at (6, -1) {基线};
\node[cell] at (0, -2) {批评+修订};
\node[cell, fill=okred!15] at (3, -2) {否};
\node[cell, fill=okred!15] at (6, -2) {退化};
\node[cell] at (0, -3) {我们的方法};
\node[cell, fill=okgreen!15] at (3, -3) {是($k$=2)};
\node[cell, fill=okgreen!15] at (6, -3) {提升};
\end{tikzpicture}

迭代循环图(用于带反馈的方法):

\begin{tikzpicture}[
node distance=2cm,
box/.style={rectangle, draw, rounded corners, minimum height=0.8cm,
minimum width=1.8cm, align=center, font=\small},
arrow/.style={-{Stealth[length=3mm]}, thick},
label/.style={font=\scriptsize, midway, above},
]
\node[box, fill=okblue!20] (gen) {生成器};
\node[box, fill=okred!20, right=2.5cm of gen] (critic) {批评器};
\node[box, fill=okgreen!20, below=1.5cm of $(gen)!0.5!(critic)$] (judge) {评判小组};

\draw[arrow] (gen) -- node[label] {输出 $A$} (critic);
\draw[arrow] (critic) -- node[label, right] {批评 $C$} (judge);
\draw[arrow] (judge) -| node[label, left, pos=0.3] {胜者} (gen);
\end{tikzpicture}

使用 latexdiff 进行修订追踪

对 rebuttal 阶段至关重要——可生成标记了版本间变更的 PDF:

# 安装
# macOS: brew install latexdiff(或随 TeX Live 自带)
# Linux: sudo apt install latexdiff

# 生成差异文件
latexdiff paper_v1.tex paper_v2.tex > paper_diff.tex
pdflatex paper_diff.tex

# 对于多文件项目(使用了 \input{} 或 \include{})
latexdiff --flatten paper_v1.tex paper_v2.tex > paper_diff.tex

这会生成一个 PDF,其中删除内容以红色删除线显示,新增内容以蓝色显示——这是 rebuttal 补充材料的标准格式。

使用 SciencePlots 美化 matplotlib 图表

安装并使用,可生成出版级质量的图表:

pip install SciencePlots
import matplotlib.pyplot as plt
import scienceplots # 注册样式

# 使用科学样式(类似 IEEE,简洁)
with plt.style.context(['science', 'no-latex']):
fig, ax = plt.subplots(figsize=(3.5, 2.5)) # 单栏宽度
ax.plot(x, y, label='Ours', color='#0072B2')
ax.plot(x, y2, label='Baseline', color='#D55E00', linestyle='--')
ax.set_xlabel('Training Steps')
ax.set_ylabel('Accuracy')
ax.legend()
fig.savefig('paper/fig_results.pdf', bbox_inches='tight')

# 可用样式:'science', 'ieee', 'nature', 'science+ieee'
# 如果生成图表的机器未安装 LaTeX,请添加 'no-latex'

标准图表尺寸(双栏格式):

  • 单栏:figsize=(3.5, 2.5) —— 适合一栏宽度
  • 双栏:figsize=(7.0, 3.0) —— 跨两栏
  • 方形:figsize=(3.5, 3.5) —— 用于热力图、混淆矩阵

第六阶段:自我审阅与修订

目标:模拟投稿前的审阅流程,尽早发现薄弱环节。

步骤 6.1:模拟审阅(集成模式)

从多个视角生成审阅意见。自动化研究管线(尤其是 SakanaAI 的 AI-Scientist)的关键洞见是:使用元审稿人的集成审阅,比单次审阅能产生更校准的反馈。

第一步:生成 N 份独立审阅(N=3-5)

使用不同的模型或温度设置。每位审稿人只看到论文,看不到其他审阅意见。默认偏向负面——LLM 在评估中普遍存在正向偏差。

你是一位 [会议/期刊] 的专家审稿人。你批判且严谨。
如果论文存在弱点,或者你对某个主张不确定,请明确标记出来,
并在评分中反映出来。不要给予怀疑的好处。

请根据官方审稿指南审阅这篇论文。评估以下方面:

1. 可靠性(主张是否有充分支持?基线是否公平且强有力?)
2. 清晰度(论文是否写得好?专家能否复现?)
3. 重要性(对社区是否有意义?)
4. 原创性(是否有新见解,而不仅仅是增量组合?)

请以结构化的 JSON 格式提供你的审阅意见:
{
"summary": "2-3 句摘要",
"strengths": ["优势 1", "优势 2", ...],
"weaknesses": ["弱点 1(最关键)", "弱点 2", ...],
"questions": ["向作者提问 1", ...],
"missing_references": ["应引用的论文", ...],
"soundness": 1-4,
"presentation": 1-4,
"contribution": 1-4,
"overall": 1-10,
"confidence": 1-5
}

Step 2: 元评审(领域主席聚合)

将所有 N 份评审反馈提交给一位元评审人:

你是 [VENUE] 的领域主席。你收到了对一篇论文的 [N] 份独立评审。
你的任务是:

1. 识别评审人之间的共识优势和劣势
2. 通过直接检查论文来解决分歧
3. 生成代表综合判断的元评审
4. 使用所有评审的平均数值分数

保持保守态度:如果评审人对于某个弱点是否严重存在分歧,则将之视为严重问题,直到作者解决它为止。

评审:
[review_1]
[review_2]
...

Step 3: 反思循环(可选,2-3 轮)

每位评审人在看到元评审后,可以优化自己的评审。使用提前终止哨兵机制:如果评审人回复“I am done”(无变更),则停止迭代。

评审的模型选择:即使你用一个较便宜的模型写了论文,评审时最好也用当前可用的最强模型。评审模型应与写作模型独立选择。

少样本校准:如果可行,提供 1-2 篇来自目标会议的真实已发表评审作为示例。这会显著改善分数校准。参见 references/reviewer-guidelines.md 获取示例评审。

Step 6.1b: 视觉评审通道(VLM)

纯文本评审会漏掉一整类问题:图表质量、排版问题、视觉一致性。如果你有支持视觉理解的模型,对已编译的 PDF 运行一次独立的视觉评审

你正在审阅这份研究论文PDF的视觉呈现效果。
请检查:
1. 图表质量:绘图是否清晰可读?标签是否清晰?颜色是否可区分?
2. 图表与标题对应:每个标题是否准确描述了对应的图表?
3. 布局问题:孤立的章节标题、尴尬的分页、图表远离其引用位置
4. 表格格式:列对齐、小数精度一致、最佳结果加粗
5. 视觉一致性:所有图表使用相同的配色方案、一致的字体大小
6. 灰度可读性:如果以黑白打印,图表是否仍能理解?

对于每个问题,请指明页码和具体位置。

这能捕捉到纯文本审阅无法发现的问题:轴标签难以辨认的绘图、距离首次引用位置3页的图表、图2和图5之间不一致的配色方案,或者明显超出列宽的表格。

步骤 6.1c:声明验证环节

在模拟审阅之后,运行一个独立的验证环节。这能捕捉到审阅者可能遗漏的事实性错误:

声明验证协议:
1. 从论文中提取每一个事实性声明(数字、比较、趋势)
2. 对于每个声明,追溯其支持的具体实验/结果
3. 验证论文中的数字是否与实际结果文件一致
4. 标记任何无法追溯来源的声明为 [VERIFY]

对于基于Agent的工作流:将验证委托给一个全新的 sub-agent,该 sub-agent 仅接收论文文本和原始结果文件。全新的上下文可以防止确认偏差——验证者不会“记住”结果应该是什么。

步骤 6.2:对反馈进行优先级排序

收集完审阅意见后,进行分类:

优先级操作
严重(技术缺陷、缺少基线)必须修复。可能需要新实验 → 返回阶段 2
(清晰度问题、缺少消融实验)应在本次修订中修复
(次要写作问题、额外实验)时间允许则修复
(风格偏好、无关建议)记录为未来工作

步骤 6.3:修订周期

针对每个严重/高优先级问题:

  1. 确定受影响的特定章节
  2. 起草修复方案
  3. 验证修复不会破坏其他论断
  4. 更新论文
  5. 再次对照审稿人的意见进行核查

步骤 6.4:撰写反驳信

在回应实际审稿意见时(投稿后),反驳信是一项与修订截然不同的技能:

格式:逐点回应。针对每位审稿人的每条意见:

> R1-W1: "论文缺少与方法 X 的对比。"

我们感谢审稿人的建议。我们已在表 3(修订版)中添加了与方法 X 的对比。
我们的方法在 [指标] 上比 X 高出 3.2 个百分点(p<0.05)。我们注意到 X 需要
我们两倍的计算预算。

规则

  • 回应每一条意见——审稿人会注意到你是否跳过某条
  • 用最强的回应开头
  • 简洁直接——审稿人需要阅读数十份反驳信
  • 如果在反驳期间进行了实验,请包含新的结果
  • 即使面对薄弱批评,也切勿表现出防御性或轻蔑态度
  • 使用 latexdiff 生成标记了修改的 PDF(参见专业 LaTeX 工具章节)
  • 感谢审稿人提出具体、可操作的反馈(而非泛泛的赞美) 不要这样做:没有证据就说“我们不敢苟同”。不解释就说“这不在范围内”。只回应优点而忽略缺点。

步骤 6.5:论文演进追踪

在关键里程碑保存快照:

paper/
paper.tex # 当前工作版本
paper_v1_first_draft.tex # 第一版完整草稿
paper_v2_post_review.tex # 模拟审稿后版本
paper_v3_pre_submission.tex # 提交前最终版
paper_v4_camera_ready.tex # 接收后最终版

阶段 7:提交准备

目标:最终检查、格式调整与提交。

步骤 7.1:会议检查清单

每个会议都有强制检查清单。请仔细完成——不完整的检查清单可能导致直接拒稿。

参见 references/checklists.md 了解:

  • NeurIPS 16 项论文检查清单
  • ICML 更广泛影响 + 可复现性
  • ICLR LLM 披露政策
  • ACL 强制性局限性说明部分
  • 通用提交前检查清单

步骤 7.2:匿名化检查清单

双盲审稿意味着审稿人无法知道论文作者是谁。请检查以下所有项:

匿名化检查清单:
- [ ] PDF 中没有任何作者姓名或所属机构
- [ ] 没有致谢部分(接收后再添加)
- [ ] 自引用使用第三人称:“Smith 等人 [1] 表明……”而不是“我们之前表明 [1]……”
- [ ] 没有指向个人仓库的 GitHub/GitLab 链接
- [ ] 代码链接使用 Anonymous GitHub (https://anonymous.4open.science/)
- [ ] 图片中没有机构标志或标识符
- [ ] 文件元数据不包含作者姓名(检查 PDF 属性)
- [ ] 没有“我们之前的工作”或“在我们之前的论文中”这样的措辞
- [ ] 数据集名称不暴露机构(必要时重命名)
- [ ] 补充材料不包含可识别信息

常见错误:补充代码中可见的 Git 提交信息、来自机构工具的水印图片、前序草稿遗留的致谢、匿名期前发布的 arXiv 预印本。

步骤 7.3:格式验证

提交前格式检查:
- [ ] 页数限制(参考文献和附录除外)
- [ ] 所有图片为矢量图(PDF)或高分辨率位图(600 DPI PNG)
- [ ] 所有图片在灰度模式下可读
- [ ] 所有表格使用 booktabs
- [ ] 参考文献正确编译(引用中无 "?")
- [ ] 关键区域无 overfull hboxes
- [ ] 附录清晰标注并分离
- [ ] 必需章节已包含(局限性、更广泛影响等)

步骤 7.4:编译前验证

在尝试 pdflatex 之前运行这些自动化检查。在此处捕获错误比调试编译器输出更快。

# 1. Lint with chktex (catches common LaTeX mistakes)
# Suppress noisy warnings: -n2 (sentence end), -n24 (parens), -n13 (intersentence), -n1 (command terminated)
chktex main.tex -q -n2 -n24 -n13 -n1

# 2. Verify all citations exist in .bib
# Extract \cite{...} from .tex, check each against .bib
python3 -c "
import re
tex = open('main.tex').read()
bib = open('references.bib').read()
cites = set(re.findall(r'\\\\cite[tp]?{([^}]+)}', tex))
for cite_group in cites:
for cite in cite_group.split(','):
cite = cite.strip()
if cite and cite not in bib:
print(f'WARNING: \\\\cite{{{cite}}} not found in references.bib')
"

# 3. Verify all referenced figures exist on disk
python3 -c "
import re, os
tex = open('main.tex').read()
figs = re.findall(r'\\\\includegraphics(?:\[.*?\])?{([^}]+)}', tex)
for fig in figs:
if not os.path.exists(fig):
print(f'WARNING: Figure file not found: {fig}')
"

# 4. Check for duplicate \label definitions
python3 -c "
import re
from collections import Counter
tex = open('main.tex').read()
labels = re.findall(r'\\\\label{([^}]+)}', tex)
dupes = {k: v for k, v in Counter(labels).items() if v > 1}
for label, count in dupes.items():
print(f'WARNING: Duplicate label: {label} (appears {count} times)')
"

在继续之前,请先修复所有警告。对于基于 Agent 的工作流:将 chktex 的输出反馈给 Agent,并指示其进行最小化修复。

步骤 7.5:最终编译

# 清理构建
rm -f *.aux *.bbl *.blg *.log *.out *.pdf
latexmk -pdf main.tex

# 或手动编译(三次 pdflatex + bibtex 处理交叉引用)
pdflatex -interaction=nonstopmode main.tex
bibtex main
pdflatex -interaction=nonstopmode main.tex
pdflatex -interaction=nonstopmode main.tex

# 确认输出文件存在且有内容
ls -la main.pdf

如果编译失败:解析 .log 文件,找到第一个错误。常见修复方法:

  • "Undefined control sequence" → 缺少宏包或命令名拼写错误
  • "Missing $ inserted" → 数学符号出现在数学模式之外
  • "File not found" → 图片路径错误或缺少 .sty 文件
  • "Citation undefined" → .bib 条目缺失或未运行 bibtex

步骤 7.6:会议特定要求

会议特殊要求
NeurIPS附录中需包含论文清单,若被接收则需提供通俗摘要
ICML需包含更广泛影响声明(位于结论之后,不计入字数限制)
ICLR需披露是否使用大语言模型,并签署互审协议
ACL必须包含局限性章节,以及负责任 NLP 清单
AAAI严格遵循样式文件——不得做任何修改
COLM需为语言模型社区阐述贡献

步骤 7.7:会议转投与格式转换

在不同会议之间转投时,切勿在不同模板之间复制 LaTeX 导言区

# 1. 从目标模板开始全新准备
cp -r templates/icml2026/ new_submission/

# 2. 仅复制内容部分(非前言)
# - 摘要文本、章节内容、图表、表格、参考文献条目

# 3. 根据页数限制调整
# 4. 添加特定会议要求的章节
# 5. 更新参考文献
从 → 到页数变化关键调整
NeurIPS → ICML9 → 8删减1页,增加 Broader Impact
ICML → ICLR8 → 9扩展实验,增加 LLM 披露声明
NeurIPS → ACL9 → 8按 NLP 惯例重构,增加 Limitations
ICLR → AAAI9 → 7大幅删减,严格遵循格式要求
任意 → COLM不定 → 9重新聚焦于语言模型方向

删减页数时:将证明移至附录,压缩相关工作,合并表格,使用子图。 扩展页数时:增加消融实验,扩展局限性,补充更多基线,添加定性示例。

被拒后:在新版本中回应审稿人的意见,但不要包含“修改说明”章节或引用之前的投稿(盲审)。

步骤 7.8:最终版准备(录用后)

录用后,准备最终版:

最终版检查清单:
- [ ] 去匿名化:添加作者姓名、单位、邮箱地址
- [ ] 添加致谢章节(基金资助、计算资源、有帮助的审稿人)
- [ ] 添加公开代码/数据链接(真实 GitHub 仓库,非匿名)
- [ ] 处理元审稿人要求的强制性修改
- [ ] 切换模板至最终版模式(如适用——例如 AAAI 的 \anon → \camera)
- [ ] 按会议要求添加版权声明
- [ ] 更新文中所有“匿名”占位符
- [ ] 确认最终 PDF 编译无误
- [ ] 检查最终版页数限制(有时与投稿时不同)
- [ ] 将补充材料(代码、数据、附录)上传至会议系统

步骤 7.9:arXiv 与预印本策略

在机器学习领域,将论文发布到 arXiv 是标准做法,但需要考虑时机和匿名性等重要因素。

时机决策树:

情况建议
投稿至双盲会议(NeurIPS、ICML、ACL)在投稿截止日期之后再发布到 arXiv,而不是之前。提前发布在技术上可能违反匿名政策,尽管执行力度因会议而异。
投稿至 ICLRICLR 明确允许在投稿前发布 arXiv 版本。但不要在投稿本身中放入作者姓名。
论文已在 arXiv 上,投稿至新会议大多数会议可以接受。审稿期间不要更新 arXiv 版本,加入引用审稿意见的修改。
研讨会论文随时可以发布 arXiv——研讨会通常不是双盲的。
希望确立优先权如果担心被抢先,立即发布——但接受匿名性方面的权衡。

arXiv 类别选择(机器学习/人工智能论文):

类别代码最适合
机器学习cs.LG通用机器学习方法
计算与语言cs.CL自然语言处理、语言模型
人工智能cs.AI推理、规划、Agent
计算机视觉cs.CV视觉模型
信息检索cs.IR搜索、推荐

列出主类别 + 1-2 个交叉列表类别。 类别越多 = 可见性越高,但只交叉列表到真正相关的类别。

版本策略:

  • v1:初始提交(与会议投稿版本一致)
  • v2:接收后,加入最终定稿修正(在摘要中添加“已接收于 [会议名称]”)
  • 审稿期间不要发布 v2 版本,尤其是包含明显回应审稿人意见的修改。
# 检查你的论文标题在 arXiv 上是否已被占用
# (在选定标题之前)
pip install arxiv
python -c "
import arxiv
results = list(arxiv.Search(query='ti:\"你的确切标题\"', max_results=5).results())
print(f'找到 {len(results)} 个匹配结果')
for r in results: print(f' {r.title} ({r.published.year})')
"

步骤 7.10:研究代码打包

发布干净、可运行的代码能显著提升引用量和审稿人信任度。请将代码与最终提交版本一同打包。

仓库结构:

your-method/
README.md # 环境搭建、使用说明、复现指南
requirements.txt # 或使用 environment.yml(conda 环境)
setup.py # 用于 pip 可安装的包
LICENSE # 研究推荐使用 MIT 或 Apache 2.0 许可证
configs/ # 实验配置
src/ # 核心方法实现
scripts/ # 训练、评估、分析脚本
train.py
evaluate.py
reproduce_table1.sh # 每个主要结果对应一个脚本
data/ # 小规模数据或下载脚本
download_data.sh
results/ # 用于验证的预期输出

研究代码的 README 模板:

# [论文标题]

"[论文标题]" 的官方实现(会议/期刊年份)。

## 环境搭建
[搭建环境的具体命令]

## 复现
复现表 1:`bash scripts/reproduce_table1.sh`
复现图 2:`python scripts/make_figure2.py`

## 引用
[BibTeX 条目]

预发布检查清单:

- [ ] 从干净的克隆中运行代码(在全新机器或 Docker 上测试)
- [ ] 所有依赖项固定到特定版本
- [ ] 没有硬编码的绝对路径
- [ ] 仓库中没有 API 密钥、凭据或个人数据
- [ ] README 涵盖设置、复现和引用
- [ ] LICENSE 文件存在(MIT 或 Apache 2.0 以获得最大复用性)
- [ ] 结果在预期方差内可复现
- [ ] .gitignore 排除数据文件、检查点、日志

用于投稿的匿名代码(录用前):

# 使用 Anonymous GitHub 进行双盲评审
# https://anonymous.4open.science/
# 上传你的仓库 → 获取匿名 URL → 放入论文中

阶段 8:录用后交付物

目标:通过演示材料和社区互动,最大化已录用论文的影响力。

步骤 8.1:会议海报

大多数会议要求海报展示环节。海报设计原则:

元素指南
尺寸查看会场要求(通常为 24"x36" 或 A0 纵向/横向)
内容标题、作者、一句话贡献、方法图、2-3 个关键结果、结论
阅读顺序左上到右下(Z 字形)或列式
文字标题在 3 米处可读,正文在 1 米处可读。不要整段文字——仅用要点。
图表复用论文中的图表,使用更高分辨率。放大关键结果。

工具:LaTeX(beamerposter 包)、PowerPoint/Keynote、Figma、Canva。

制作:在会议前 2 周以上下单。布质海报更轻便,便于携带。许多会议现在也支持虚拟/数字海报。

步骤 8.2:会议口头报告 / 亮点报告

如果获得口头或亮点展示机会:

报告类型时长内容
亮点报告5 分钟问题、方法、一个关键结果。排练到恰好 5 分钟。
口头报告15-20 分钟完整故事:问题、方法、关键结果、消融实验、局限性。
研讨会报告10-15 分钟根据研讨会听众调整——可能需要更多背景介绍。

幻灯片设计规则:

  • 每页只讲一个想法
  • 尽量减少文字——细节靠说,不要投在屏幕上
  • 对关键图表做动画,逐步构建理解
  • 在结尾放一张“要点总结”幻灯片(一句话概括贡献)
  • 准备备用幻灯片,应对可能被问到的问题

步骤 8.3:博客文章 / 社交媒体

一篇通俗易懂的总结能显著提升影响力:

  • Twitter/X 帖子串:5-8 条推文。用结果开头,而不是方法。包含图 1 和关键结果图。
  • 博客文章:800-1500 字。面向机器学习从业者,而非审稿人。省略形式化内容,强调直觉和实际意义。
  • 项目页面:包含摘要、图表、演示、代码链接、BibTeX 的 HTML 页面。使用 GitHub Pages。

发布时间:论文出现在会议论文集或 arXiv 定稿后的 1-2 天内发布。


研讨会与短文

研讨会论文和短文(例如 ACL 短文、Findings 论文)遵循相同的流程,但有不同的限制和期望。

研讨会论文

属性研讨会主会
页数限制4-6 页(通常)7-9 页
审稿标准完整性要求较低必须完整、彻底
审稿流程通常为单盲或轻度审稿双盲、严格
看重什么有趣的想法、初步结果、立场文章完整的实证故事,有强基线
arXiv随时可发布时机重要(参见 arXiv 策略)
贡献门槛新颖方向、有趣的负面结果、进行中的工作有强证据的重大进展
何时投稿 workshop:
  • 早期想法,希望在完整论文前获得反馈
  • 负面结果,不值得写 8 页以上
  • 针对热点话题的立场文章或观点
  • 复现研究或可重复性报告

ACL 短文与 Findings

ACL 会议有明确的投稿类型:

类型页数预期内容
长文8完整研究,强基线,消融实验
短文4聚焦贡献:一个清晰观点并附证据
Findings8扎实的工作,但略低于主会标准

短文策略:选择一个主张并充分支持。不要试图将长文压缩到 4 页——写一篇不同且更聚焦的论文。


经验 ML 之外的论文类型

上述主要流程针对经验 ML 论文。其他论文类型需要不同的结构和证据标准。关于每种类型的详细指导,请参见 references/paper-types.md

理论论文

结构:引言 → 预备知识(定义、符号)→ 主要结果(定理)→ 证明草图 → 讨论 → 完整证明(附录)

与经验论文的主要区别:

  • 贡献是定理、界或不可能性结果——而非实验数据
  • 方法部分替换为“预备知识”和“主要结果”
  • 证明是证据,而非实验(不过理论的经验验证也受欢迎)
  • 正文中放证明草图,附录中放完整证明是标准做法
  • 实验部分可选,但如果能验证理论预测,则能增强论文 证明写作原则:
  • 形式化陈述定理,明确所有假设
  • 在正式证明前提供直观理解(“关键洞察是……”)
  • 证明梗概应在 0.5–1 页内传达主要思想
  • 使用 \begin{proof}...\end{proof} 环境
  • 对假设进行编号,并在定理中引用:“在假设 1–3 下,……”

综述 / 教程论文

结构:引言 → 分类法 / 组织方式 → 详细覆盖 → 开放问题 → 结论

关键区别:

  • 贡献在于组织、综合和识别开放问题——而非新方法
  • 必须在范围内全面(审稿人会检查是否遗漏参考文献)
  • 需要清晰的分类法或组织框架
  • 价值来自单个论文未建立的作品之间的联系
  • 最佳发表场所:TMLR(综述轨道)、JMLR、Foundations and Trends in ML、ACM Computing Surveys

基准论文

结构:引言 → 任务定义 → 数据集构建 → 基线评估 → 分析 → 预期用途与局限性

关键区别:

  • 贡献在于基准本身——它必须填补真正的评估空白
  • 数据集文档是强制性的,而非可选的(参见 Datasheets,步骤 5.11)
  • 必须证明基准具有挑战性(基线未饱和)
  • 必须证明基准测量了你声称要测量的内容(构念效度)
  • 最佳发表场所:NeurIPS Datasets & Benchmarks 轨道、ACL(资源论文)、LREC-COLING

立场论文

结构:引言 → 背景 → 论点/论证 → 支撑证据 → 反驳观点 → 影响

关键区别

  • 贡献在于提出论点,而非呈现结果
  • 必须认真对待反驳观点
  • 证据可以是经验性的、理论性的或逻辑分析
  • 最佳发表场所:ICML(立场轨道)、研讨会、TMLR

Hermes Agent 集成

本技能专为 Hermes Agent 设计。它利用 Hermes 的工具、委派、调度和记忆功能,覆盖完整的研究生命周期。

将本技能与其他 Hermes 技能组合,用于特定阶段:

技能使用时机加载方式
arxiv阶段 1(文献综述):搜索 arXiv、生成 BibTeX、通过 Semantic Scholar 查找相关论文skill_view("arxiv")
subagent-driven-development阶段 5(草稿撰写):并行撰写章节,并经过两阶段审查(先检查规范符合性,再检查质量)skill_view("subagent-driven-development")
plan阶段 0(准备):在执行前创建结构化计划。写入 .hermes/plans/skill_view("plan")
qmd阶段 1(文献):通过混合 BM25+向量搜索,检索本地知识库(笔记、转录稿、文档)安装:skill_manage("install", "qmd")
diagramming阶段 4-5:创建基于 Excalidraw 的图形和架构图skill_view("diagramming")
data-science阶段 4(分析):使用 Jupyter 实时内核进行交互式分析和可视化skill_view("data-science")
此技能已取代 ml-paper-writing — 它包含了 ml-paper-writing 的全部内容,并新增了完整的实验/分析流程和自动推理方法。

Hermes 工具参考

工具在此流程中的用途
terminalLaTeX 编译(latexmk -pdf)、Git 操作、启动实验(nohup python run.py &)、进程检查
process后台实验管理:process("start", ...)process("poll", pid)process("log", pid)process("kill", pid)
execute_code运行 Python 进行引用验证、统计分析、数据聚合。通过 RPC 拥有工具访问权限。
read_file / write_file / patch论文编辑、实验脚本、结果文件。使用 patch 对大型 .tex 文件进行针对性编辑。
web_search文献发现:web_search("transformer attention mechanism 2024")
web_extract获取论文内容,验证引用:web_extract("https://arxiv.org/abs/2303.17651")
delegate_task并行章节起草 — 为每个章节生成独立的子 Agent。也用于并发引用验证。
todo跨会话的主要状态跟踪器。每次阶段转换后更新。
memory跨会话持久化关键决策:贡献框架、投稿场所、审稿人反馈。
cronjob安排实验监控、截止日期倒计时、自动 arXiv 检查。
clarify在遇到阻碍时向用户提出针对性问题(投稿场所、贡献框架)。
send_message实验完成或草稿就绪时通知用户,即使用户不在聊天中。

工具使用模式

实验监控(最常见):

terminal("ps aux | grep <pattern>")
→ terminal("tail -30 <logfile>")
→ terminal("ls results/")
→ execute_code("分析结果 JSON,计算指标")
→ terminal("git add -A && git commit -m '<描述性消息>' && git push")
→ send_message("实验完成:<摘要>")

并行章节起草(使用委托):

delegate_task("根据这些实验脚本和配置起草方法部分。内容包括:伪代码、所有超参数、足以复现的架构细节。使用 neurips2025 模板约定以 LaTeX 编写。")

delegate_task("起草相关工作部分。使用 web_search 和 web_extract 查找论文。通过 Semantic Scholar 验证每条引用。按方法论分组。")

delegate_task("起草实验部分。读取 results/ 中的所有结果文件。说明每个实验支持哪个主张。包含误差线和显著性。")

每个委托任务作为一个全新的子 Agent 运行,不共享上下文——在提示中提供所有必要信息。收集输出并进行整合。

引用验证(使用 execute_code):

# 在 execute_code 中:
from semanticscholar import SemanticScholar
import requests

sch = SemanticScholar()
results = sch.search_paper("attention mechanism transformers", limit=5)
for paper in results:
doi = paper.externalIds.get('DOI', 'N/A')
if doi != 'N/A':
bibtex = requests.get(f"https://doi.org/{doi}",
headers={"Accept": "application/x-bibtex"}).text
print(bibtex)

使用 memorytodo 进行状态管理

memory 工具 — 持久化关键决策(限制:MEMORY.md 约 2200 字符):

memory("add", "Paper: autoreason. Venue: NeurIPS 2025 (9 pages). 
Contribution: structured refinement works when generation-evaluation gap is wide.
Key results: Haiku 42/42, Sonnet 3/5, S4.6 constrained 2/3.
Status: Phase 5 — drafting Methods section.")

在重大决策或阶段转换后更新 memory。该信息会在会话之间持久保存。

todo 工具 — 跟踪细粒度进度:

todo("add", "Design constrained task experiments for Sonnet 4.6")
todo("add", "Run Haiku baseline comparison")
todo("add", "Draft Methods section")
todo("update", id=3, status="in_progress")
todo("update", id=1, status="completed")

会话启动协议:

1. todo("list")                           # 检查当前任务列表
2. memory("read") # 回忆关键决策
3. terminal("git log --oneline -10") # 检查最近提交
4. terminal("ps aux | grep python") # 检查正在运行的实验
5. terminal("ls results/ | tail -20") # 检查新结果
6. 向用户报告状态,请求下一步方向

使用 cronjob 进行定时监控

使用 cronjob 工具安排定期实验检查:

cronjob("create", {
"schedule": "*/30 * * * *", # 每30分钟
"prompt": "Check experiment status:
1. ps aux | grep run_experiment
2. tail -30 logs/experiment_haiku.log
3. ls results/haiku_baselines/
4. If complete: read results, compute Borda scores,
git add -A && git commit -m 'Add Haiku results' && git push
5. Report: table of results, key finding, next step
6. If nothing changed: respond with [SILENT]"
})

[SILENT] 协议:如果自上次检查以来没有任何变化,请仅回复 [SILENT]。这会抑制向用户发送通知。仅在存在值得了解的真正变化时才进行报告。

截止日期跟踪

cronjob("create", {
"schedule": "0 9 * * *", # Daily at 9am
"prompt": "NeurIPS 2025 deadline: May 22. Today is {date}.
Days remaining: {compute}.
Check todo list — are we on track?
If <7 days: warn user about remaining tasks."
})

通信模式

何时通知用户(通过 send_message 或直接回复):

  • 实验批次完成(附带结果表格)
  • 出现需要决策的意外发现或失败
  • 草稿章节准备就绪可供审阅
  • 截止日期临近且任务未完成

何时不通知

  • 实验仍在运行,没有新结果 → [SILENT]
  • 例行监控,无变化 → [SILENT]
  • 不需要关注的中间步骤

报告格式 — 始终包含结构化数据:

## Experiment: <name>
Status: Complete / Running / Failed

| Task | Method A | Method B | Method C |
|------|---------|---------|---------|
| Task 1 | 85.2 | 82.1 | **89.4** |

Key finding: <one sentence>
Next step: <what happens next>

需要人工输入的决策点

当确实遇到阻碍时,使用 clarify 提出针对性问题:

决策何时询问
目标会议开始写论文前(影响页数限制、框架)
贡献框架存在多个合理框架时
实验优先级待办列表中的实验超出时间允许范围时
提交就绪状态最终提交前
请勿询问(主动决策,做出选择,标记问题):
  • 措辞选择、章节排序
  • 具体突出哪些结果
  • 引用完整性(根据已有内容起草,标注缺失)

审稿人评估标准

了解审稿人的关注点有助于聚焦精力:

标准审稿人检查内容
质量技术可靠性、论点有充分依据、基线公平
清晰度写作清晰、专家可复现、符号一致
重要性社区影响力、推动认知进步
原创性新见解(不要求必须是新方法)

评分(NeurIPS 6 分制):

  • 6:强烈接收 — 开创性、无瑕疵
  • 5:接收 — 技术扎实、影响力高
  • 4:边缘接收 — 扎实但评估有限
  • 3:边缘拒稿 — 缺点大于优点
  • 2:拒稿 — 技术缺陷
  • 1:强烈拒稿 — 已知结果或伦理问题

详细指南、常见问题及反驳策略请参见 references/reviewer-guidelines.md


常见问题与解决方案

问题解决方案
摘要过于泛泛如果第一句话可以套用在任何机器学习论文上,就删掉它。从你的具体贡献开始。
引言超过 1.5 页将背景拆分到相关工作部分。把贡献要点前置。
实验缺乏明确主张在每个实验前添加:"本实验测试 [具体主张] 是否成立……"
审稿人认为论文难以理解增加路标指引,使用一致的术语,让图表标题自包含。
缺少统计显著性添加误差线、运行次数、统计检验、置信区间。
实验范围失控每个实验必须对应一个具体主张。砍掉不对应的实验。
论文被拒,需要重新提交参见阶段 7 的会议重新投稿。回应审稿人意见时不要提及之前的审稿。
缺少更广泛影响声明参见步骤 5.10。大多数会议要求此项。"没有负面影响"几乎不可信。
人工评估被认为薄弱参见步骤 2.5 和 references/human-evaluation.md。报告一致性指标、标注者详情、报酬。
审稿人质疑可复现性发布代码(步骤 7.9),记录所有超参数,包含随机种子和计算细节。
理论论文缺乏直觉在正式证明之前,用通俗语言添加证明草图。参见 references/paper-types.md
结果为负/无效参见阶段 4.3 关于处理负结果的内容。考虑投稿 workshop、TMLR,或重新框架化为分析性论文。

参考文档

文档内容
references/writing-guide.mdGopen & Swan 7 原则、Perez 微技巧、Lipton 用词选择、Steinhardt 精确性、图表设计
references/citation-workflow.md引用 API、Python 代码、CitationManager 类、BibTeX 管理
references/checklists.mdNeurIPS 16 项、ICML、ICLR、ACL 要求、通用投稿前检查清单
references/reviewer-guidelines.md评审标准、评分、常见问题、反驳模板
references/sources.md所有写作指南、会议指南、API 的完整参考文献
references/experiment-patterns.md实验设计模式、评估协议、监控、错误恢复
references/autoreason-methodology.mdAutoreason 循环、策略选择、模型指南、提示词、范围约束、Borda 评分
references/human-evaluation.md人工评估设计、标注指南、一致性指标、众包质量控制、IRB 指导
references/paper-types.md理论论文(证明写作、定理结构)、综述论文、基准论文、立场论文

LaTeX 模板

templates/ 目录下的模板适用于:NeurIPS 2025ICML 2026ICLR 2026ACLAAAI 2026COLM 2025

编译说明请参见 templates/README.md

关键外部资源

写作理念:

API: Semantic Scholar | CrossRef | arXiv

会议: NeurIPS | ICML | ICLR | ACL