研究论文写作
用于撰写机器学习/人工智能研究论文的端到端流水线——涵盖从实验设计到分析、起草、修订和提交的整个过程。涵盖 NeurIPS、ICML、ICLR、ACL、AAAI、COLM 等会议。集成自动化实验监控、统计分析、迭代式写作和引文验证功能。
技能元数据
| 来源 | 捆绑(默认安装) |
| 路径 | skills/research/research-paper-writing |
| 版本 | 1.1.0 |
| 作者 | Orchestra Research |
| 许可证 | MIT |
| 依赖项 | semanticscholar, arxiv, habanero, requests, scipy, numpy, matplotlib, SciencePlots |
| 平台 | linux, macos |
| 标签 | Research, Paper Writing, Experiments, ML, AI, NeurIPS, ICML, ICLR, ACL, AAAI, COLM, LaTeX, Citations, Statistical Analysis |
| 相关技能 | arxiv, ml-paper-writing, subagent-driven-development, plan |
参考:完整 SKILL.md
以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理看到的指令。
研究论文写作流水线
用于生成面向 NeurIPS、ICML、ICLR、ACL、AAAI 和 COLM 的可供出版的机器学习/人工智能研究论文的端到端流水线。此技能涵盖完整的研究生命周期:实验设计、执行、监控、分析、论文写作、评审、修订和提交。
这不是一个线性流水线——而是一个迭代循环。结果会触发新的实验。评审意见会触发新的分析。代理必须处理这些反馈循环。
┌─────────────────────────────────────────────────────────────┐
│ RESEARCH PAPER PIPELINE │
│ │
│ Phase 0: Project Setup ──► Phase 1: Literature Review │
│ │ │ │
│ ▼ ▼ │
│ Phase 2: Experiment Phase 5: Paper Drafting ◄──┐ │
│ Design │ │ │
│ │ ▼ │ │
│ ▼ Phase 6: Self-Review │ │
│ Phase 3: Execution & & Revision ──────────┘ │
│ Monitoring │ │
│ │ ▼ │
│ ▼ Phase 7: Submission │
│ Phase 4: Analysis ─────► (feeds back to Phase 2 or 5) │
│ │
└─────────────────────────────────────────────────────────────┘
何时使用此技能
在以下情况下使用此技能:
- 从头开始撰写新的研究论文,基于现有代码库或想法
- 设计和运行实验以支持论文主张
- 撰写或修订研究论文的任何部分
- 准备向特定会议或研讨会投稿
- 通过额外实验或修订回应评审意见
- 在不同会议格式之间转换论文
- 撰写非实证论文——理论、综述、基准测试或立场论文(参见超越实证机器学习的论文类型)
- 为自然语言处理、人机交互或对齐研究设计人工评估
- 准备录用后的交付物——海报、演讲、代码发布
核心理念
- 积极主动。 提供完整的草稿,而不是提出问题。科学家都很忙——提供一些具体的内容供他们反应,然后进行迭代。
- 绝不虚构引文。 AI 生成的引文错误率约为 40%。务必以编程方式获取。将无法验证的引文标记为
[CITATION NEEDED]。 - 论文是一个故事,而不是实验的集合。 每篇论文都需要用一句话陈述一个清晰的贡献。如果你做不到这一点,说明论文尚未准备好。
- 实验服务于主张。 每个实验都必须明确说明它支持哪个主张。切勿运行与论文叙事无关的实验。
- 尽早提交,频繁提交。 每完成一批实验,每次更新论文草稿——都要附带描述性信息进行提交。Git 日志就是实验历史。
主动性与协作
默认行为:积极主动。先起草,带着草稿提问。
| 置信度级别 | 操作 |
|---|---|
| 高(清晰的仓库,明显的贡献) | 撰写完整草稿,交付,根据反馈迭代 |
| 中(存在一些歧义) | 撰写草稿并标记不确定之处,继续推进 |
| 低(存在重大未知因素) | 通过 clarify 提出 1-2 个针对性问题,然后起草 |
| 章节 | 自主起草? | 随草稿标记 |
|---|---|---|
| 摘要 | 是 | “将贡献框架化为 X——如有需要请调整” |
| 引言 | 是 | “强调了问题 Y——如有错误请纠正” |
| 方法 | 是 | “包含了细节 A、B、C——补充缺失部分” |
| 实验 | 是 | “突出了结果 1、2、3——如有需要请重新排序” |
| 相关工作 | 是 | “引用了论文 X、Y、Z——补充我遗漏的内容” |
仅在以下情况下阻止并等待输入:目标 venue 不明确、存在多种相互矛盾的框架、结果似乎不完整、明确要求先审查。
阶段 0:项目设置
目标:建立工作空间,理解现有工作,确定贡献点。
步骤 0.1:探索仓库
# Understand project structure
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 source, figures, compiled PDFs
experiments/ # Experiment runner scripts
code/ # Core method implementation
results/ # Raw experiment results (auto-generated)
tasks/ # Task/benchmark definitions
human_eval/ # Human evaluation materials (if needed)
步骤 0.3:设置版本控制
git init # if not already
git remote add origin <repo-url>
git checkout -b paper-draft # or 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:明确贡献点
在开始写作之前,请阐明:
- 是什么 (The What):这篇论文的唯一核心贡献是什么?
- 为什么 (The Why):有哪些证据支持这一贡献?
- 那又怎样 (The So What):读者为什么要关心这一点?
向科学家提议:“根据我的理解,主要贡献是:[一句话]。关键结果显示 [Y]。这是您想要的表述框架吗?”
步骤 0.5:创建待办事项列表
使用 todo 工具创建结构化的项目计划:
Research Paper TODO:
- [ ] Define one-sentence contribution
- [ ] Literature review (related work + baselines)
- [ ] Design core experiments
- [ ] Run experiments
- [ ] Analyze results
- [ ] Write first draft
- [ ] Self-review (simulate reviewers)
- [ ] Revise based on review
- [ ] Submission prep
在整个项目过程中更新此列表。它作为跨会话的持久状态。
步骤 0.6:估算计算预算
在运行实验之前,估算总成本和时间:
Compute Budget Checklist:
- [ ] API costs: (model price per token) × (estimated tokens per run) × (number of runs)
- [ ] GPU hours: (time per experiment) × (number of experiments) × (number of seeds)
- [ ] Human evaluation costs: (annotators) × (hours) × (hourly rate)
- [ ] Total budget ceiling and contingency (add 30-50% for reruns)
在实验运行时跟踪实际支出:
# Simple cost tracker pattern
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 | 使用 .gitignore 忽略辅助文件的 git | 技术团队,需要基于分支的审查 |
| Overleaf + Git 同步 | Overleaf 高级版 | 兼具两者优势——实时协作与版本历史 |
章节归属:将每个章节分配给一位主要作者。其他人可以评论,但不要直接编辑。这可以防止合并冲突和风格不一致。
Author Coordination Checklist:
- [ ] Agree on section ownership (who writes what)
- [ ] Set up shared workspace (Overleaf or git repo)
- [ ] Establish notation conventions (before anyone writes)
- [ ] Schedule internal review rounds (not just at the end)
- [ ] Designate one person for final formatting pass
- [ ] Agree on figure style (colors, fonts, sizes) before creating figures
需尽早达成一致的 LaTeX 约定:
- 使用
\method{}宏以保持方法命名一致 - 引用风格:
\citet{}与\citep{}的使用 - 数学符号:向量使用小写粗体,矩阵使用大写粗体等
- 英式拼写与美式拼写的选择
第一阶段:文献综述
目标:查找相关工作,确定基线,收集引用。
步骤 1.1:确定种子论文
从代码库中已引用的论文开始:
# Via terminal:
grep -r "arxiv\|doi\|cite" --include="*.md" --include="*.bib" --include="*.py"
find . -name "*.bib"
步骤 1.2:搜索相关工作
加载 arxiv 技能以进行结构化的论文发现:skill_view("arxiv")。它提供 arXiv REST API 搜索、Semantic Scholar 引用图谱、作者档案和 BibTeX 生成。
使用 web_search 进行广泛发现,使用 web_extract 获取特定论文:
# Via web_search:
web_search("[main technique] + [application domain] site:arxiv.org")
web_search("[baseline method] comparison ICML NeurIPS 2024")
# Via web_extract (for specific papers):
web_extract("https://arxiv.org/abs/2303.17651")
其他可尝试的搜索查询:
Search queries:
- "[main technique] + [application domain]"
- "[baseline method] comparison"
- "[problem name] state-of-the-art"
- Author names from existing citations
推荐:安装 **Exa MCP以进行实时学术搜索:
claude mcp add exa -- npx -y mcp-remote "https://mcp.exa.ai/mcp"
步骤 1.2b:深化搜索(先广度后深度)
扁平化搜索(一轮查询)通常会遗漏重要的相关工作。采用受深度研究管道启发的迭代式先广度后深度模式:
Iterative Literature Search:
Round 1 (Breadth): 4-6 parallel queries covering different angles
- "[method] + [domain]"
- "[problem name] state-of-the-art 2024 2025"
- "[baseline method] comparison"
- "[alternative approach] vs [your approach]"
→ Collect papers, extract key concepts and terminology
Round 2 (Depth): Generate follow-up queries from Round 1 learnings
- New terminology discovered in Round 1 papers
- Papers cited by the most relevant Round 1 results
- Contradictory findings that need investigation
→ Collect papers, identify remaining gaps
Round 3 (Targeted): Fill specific gaps
- Missing baselines identified in Rounds 1-2
- Concurrent work (last 6 months, same problem)
- Key negative results or failed approaches
→ Stop when new queries return mostly papers you've already seen
何时停止:如果一轮返回的论文中超过 80% 已在您的收藏中,则搜索已饱和。通常 2-3 轮即可满足需求。对于综述论文,预计需要 4-5 轮。
对于基于代理的工作流:通过 delegate_task 并行委托每轮的查询。收集结果,去重,然后根据综合学到的知识生成下一轮的查询。
步骤 1.3:验证每条引用
绝不要凭记忆生成 BibTeX。务必以编程方式获取。
对于每条引用,遵循强制性的 5 步流程:
Citation Verification (MANDATORY per citation):
1. SEARCH → Query Semantic Scholar or Exa MCP with specific keywords
2. VERIFY → Confirm paper exists in 2+ sources (Semantic Scholar + arXiv/CrossRef)
3. RETRIEVE → Get BibTeX via DOI content negotiation (programmatically, not from memory)
4. VALIDATE → Confirm the claim you're citing actually appears in the paper
5. ADD → Add verified BibTeX to bibliography
If ANY step fails → mark as [CITATION NEEDED], inform scientist
# Fetch BibTeX via DOI
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: Verify this citation exists
务必告知科学家:“我已将 [X] 条引用标记为需要验证的占位符。”
请参阅 references/citation-workflow.md 以获取完整的 API 文档和完整的 CitationManager 类。
步骤 1.4:组织相关工作
按方法论对论文进行分组,而不是逐篇罗列:
好:“有一系列工作使用了 X 的假设 [refs],而我们使用 Y 的假设,因为...” 坏:“Smith 等人引入了 X。Jones 等人引入了 Y。我们将两者结合。”
第二阶段:实验设计
目标:设计直接支持论文主张的实验。每个实验必须回答一个具体问题。
步骤 2.1:将主张映射到实验
创建显式映射:
| 主张 | 实验 | 预期证据 |
|---|---|---|
| “我们的方法优于基线” | 主要对比(表 1) | 胜率,统计显著性 |
| “较弱模型的效果更明显” | 模型缩放研究 | 单调改进曲线 |
| “收敛需要范围约束” | 有约束 vs 无约束 | 收敛速率对比 |
规则:如果实验不对应任何主张,则不要运行它。
步骤 2.2:设计基线
强大的基线是区分录用论文与被拒论文的关键。审稿人会问:“他们是否与 X 进行了对比?”
标准基线类别:
- 朴素基线 (Naive baseline):尽可能简单的方法
- 强基线 (Strong baseline):已知的最佳现有方法
- 消融基线 (Ablation baselines):你的方法减去一个组件
- 计算量匹配基线 (Compute-matched baselines):相同的计算预算,不同的分配方式
步骤 2.3:定义评估协议
在运行任何实验之前,请指定:
- 指标 (Metrics):你要测量的内容,方向符号(越高越好/越低越好)
- 聚合 (Aggregation):如何跨运行/任务组合结果
- 统计检验 (Statistical tests):使用哪些检验来确定显著性
- 样本量 (Sample sizes):运行次数/问题数量/任务数量
步骤 2.4:编写实验脚本
遵循成功研究流水线中的这些模式:
增量保存 — 在每个步骤后保存结果以便从崩溃中恢复:
# Save after each problem/task
result_path = f"results/{task}/{strategy}/result.json"
if os.path.exists(result_path):
continue # Skip already-completed work
# ... run experiment ...
with open(result_path, 'w') as f:
json.dump(result, f, indent=2)
** artifacts 保留** — 保存所有中间输出:
results/<experiment>/
<task>/
<strategy>/
final_output.md # Final result
history.json # Full trajectory
pass_01/ # Per-iteration artifacts
version_a.md
version_b.md
critic.md
关注点分离 — 保持生成、评估和可视化相互独立:
run_experiment.py # Core experiment runner
run_baselines.py # Baseline comparison
run_comparison_judge.py # Blind evaluation
analyze_results.py # Statistical analysis
make_charts.py # Visualization
请参阅 references/experiment-patterns.md 以获取完整的设计模式、cron 监控和错误恢复指南。
步骤 2.5:设计人工评估(如适用)
许多 NLP、HCI 和对齐论文需要人工评估作为主要或补充证据。在运行自动化实验之前设计此环节——人工评估通常具有更长的准备时间(IRB 批准、标注者招募)。
何时需要人工评估:
- 自动化指标无法捕捉你关心的内容(流畅度、有用性、安全性)
- 你的贡献涉及面向人类的特质(可读性、偏好、信任度)
- NLP 会议(ACL, EMNLP)的审稿人期望在生成任务中看到它
关键设计决策:
| 决策 | 选项 | 指导 |
|---|---|---|
| 标注者类型 | 专家、众包工人、最终用户 | 与你的主张所需相匹配 |
| 量表 | Likert 量表 (1-5)、成对比较、排名 | 对于 LLM 输出,成对比较比 Likert 量表更可靠 |
| 样本量 | 每个标注者和总项目数 | 功效分析或至少 100 个项目,3+ 名标注者 |
| 一致性指标 | Cohen's kappa, Krippendorff's alpha, ICC | >2 名标注者使用 Krippendorff's alpha;同时也报告原始一致性 |
| 平台 | Prolific, MTurk, 内部团队 | Prolific 保证质量;MTurk 保证规模;内部团队提供领域专业知识 |
标注指南检查清单:
- [ ] Clear task description with examples (good AND bad)
- [ ] Decision criteria for ambiguous cases
- [ ] At least 2 worked examples per category
- [ ] Attention checks / gold standard items (10-15% of total)
- [ ] Qualification task or screening round
- [ ] Estimated time per item and fair compensation (>= local minimum wage)
- [ ] IRB/ethics review if required by your institution
报告要求(审稿人会检查所有这些内容):
- 标注者人数及其资质
- 标注者间一致性,包括具体指标和数值
- 薪酬详情(金额、预估时薪)
- 标注界面描述或截图(附录)
- 总标注时间
请参阅 references/human-evaluation.md 以获取完整指南,包括人工评估数据的统计检验、众包质量控制模式和 IRB 指导。
阶段 3:实验执行与监控
目标:可靠地运行实验,监控进度,从故障中恢复。
步骤 3.1:启动实验
对长时间运行的实验使用 nohup:
nohup python run_experiment.py --config config.yaml > logs/experiment_01.log 2>&1 &
echo $! # Record the PID
并行执行:同时运行独立的实验,但要注意 API 速率限制。在同一 API 上并发运行 4+ 个实验会相互拖慢速度。
步骤 3.2:设置监控(Cron 模式)
对于长时间运行的实验,设置定期状态检查。cron 提示应遵循以下模板:
Monitor Prompt Template:
1. Check if process is still running: ps aux | grep <pattern>
2. Read last 30 lines of log: tail -30 <logfile>
3. Check for completed results: ls <result_dir>
4. If results exist, read and report: cat <result_file>
5. If all done, commit: git add -A && git commit -m "<descriptive message>" && git push
6. Report in structured format (tables with key metrics)
7. Answer the key analytical question for this experiment
静默模式:如果自上次检查以来没有任何变化,回复 [SILENT] 以抑制向用户发送通知。仅在有新情况时才报告。
步骤 3.3:处理故障
常见故障模式及恢复方法:
| 故障 | 检测 | 恢复 |
|---|---|---|
| API 速率限制 / 额度耗尽 | 日志中出现 402/429 错误 | 等待,然后重新运行(脚本会跳过已完成的工作) |
| 进程崩溃 | PID 消失,结果不完整 | 从最后一个检查点重新运行 |
| 困难问题超时 | 进程卡住,日志无进展 | 终止并跳过,在结果中注明 |
| 错误的模型 ID | 引用模型名称的错误 | 修正 ID 并重新运行 |
关键:脚本应始终检查现有结果并跳过已完成的工作。这使得重新运行既安全又高效。
步骤 3.4:提交已完成的结果
每批实验完成后:
git add -A
git commit -m "Add <experiment name>: <key finding in 1 line>"
git push
步骤 3.5:维护实验日志
Git 提交跟踪发生了什么,但不跟踪 探索树 (exploration tree) —— 即基于所学内容决定接下来尝试什么的决策过程。维护一个结构化的实验日志来捕捉这棵树:
// experiment_journal.jsonl — append one entry per experiment attempt
{
"id": "exp_003",
"parent": "exp_001",
"timestamp": "2025-05-10T14:30:00Z",
"hypothesis": "Adding scope constraints will fix convergence failure from exp_001",
"plan": "Re-run autoreason with max_tokens=2000 and fixed structure template",
"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": "Scope constraints fixed convergence. Win rate jumped from 0.42 to 0.85.",
"next_steps": ["Try same constraints on Sonnet", "Test without structure template"],
"figures": ["figures/exp003_convergence.pdf"]
}
为什么需要日志而不仅仅是 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:汇总结果
编写执行以下操作的分析脚本:
- 从批次中加载所有结果文件
- 计算每个任务和聚合指标
- 生成摘要表格
# Standard analysis pattern
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
# Compute aggregate metrics
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% CI
- 成对检验:用于比较两种方法的 McNemar 检验
- 效应量:Cohen's d 或 h,用于衡量实际显著性
请参阅 references/experiment-patterns.md 以获取 McNemar 检验、bootstrap 置信区间和 Cohen's h 的完整实现。
步骤 4.3:确定故事线
分析后,明确回答以下问题:
- 主要发现是什么? 用一句话陈述。
- 什么让你感到惊讶? 意想不到的结果往往能成就最好的论文。
- 什么失败了? 失败的实验可能最具信息量。诚实地报告失败会增强论文的说服力。
- 需要哪些后续实验? 结果往往会引发新的问题。
处理负面或无效结果
当你的假设错误或结果不确定时,你有三个选项:
| 情况 | 行动 | 适合的发表场所 |
|---|---|---|
| 假设错误,但原因具有信息量 | 围绕对原因的分析构建论文 | NeurIPS, ICML(如果分析严谨) |
| 方法未超越基线,但揭示了新内容 | 将贡献重新框架为理解/分析 | ICLR(重视理解),研讨会论文 |
| 针对流行主张的清晰负面结果 | 撰写出来——领域内需要知晓 | NeurIPS Datasets & Benchmarks, TMLR, 研讨会 |
| 结果不确定,没有清晰的故事线 | 转向——运行不同的实验或重新框架 | 不要强行拼凑一篇不存在的论文 |
如何撰写负面结果论文:
- 开篇介绍社区普遍相信的观点以及测试它的重要性
- 描述你严谨的方法论(必须无懈可击——审稿人会更严格地审查)
- 清晰地呈现带有统计证据的无效结果
- 分析为什么预期的结果没有出现
- 讨论对该领域的影响
明确欢迎负面结果的发表场所:NeurIPS(Datasets & Benchmarks 轨道)、TMLR、ML 可复现性挑战、主要会议的研讨会。一些研讨会特别征集负面结果。
步骤 4.4:创建图表和表格
图形 (Figures):
- 所有绘图使用矢量图形 (PDF):
plt.savefig('fig.pdf') - 使用色盲友好调色板(Okabe-Ito 或 Paul Tol)
- 自包含的标题——读者无需阅读正文即可理解
- 图形内部无标题——标题由图注承担此功能
表格 (Tables):
- 使用
booktabsLaTeX 包 - 加粗每个指标的最佳值
- 包含方向符号(越高/越低越好)
- 保持一致的小数精度
\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:撰写实验日志(通往写作的桥梁)
在开始撰写论文之前,创建一个结构化的实验日志,将结果与散文连接起来。这是实验与写作之间最重要的连接纽带——如果没有它,写作代理必须从原始结果文件中重新推导故事线。
创建 experiment_log.md,结构如下:
# Experiment Log
## Contribution (one sentence)
[The paper's main claim]
## Experiments Run
### Experiment 1: [Name]
- **Claim tested**: [Which paper claim this supports]
- **Setup**: [Model, dataset, config, number of runs]
- **Key result**: [One sentence with the number]
- **Result files**: results/exp1/final_info.json
- **Figures generated**: figures/exp1_comparison.pdf
- **Surprising findings**: [Anything unexpected]
### Experiment 2: [Name]
...
## Figures
| Filename | Description | Which section it belongs in |
|----------|-------------|---------------------------|
| figures/main_comparison.pdf | Bar chart comparing all methods on benchmark X | Results, Figure 2 |
| figures/ablation.pdf | Ablation removing components A, B, C | Results, Figure 3 |
...
## Failed Experiments (document for honesty)
- [What was tried, why it failed, what it tells us]
## Open Questions
- [Anything the results raised that the paper should address]
为何这很重要:在起草时,代理(或委托的子代理)可以加载 experiment_log.md 以及 LaTeX 模板,并生成基于实际结果的初稿。如果没有这个桥梁,写作代理必须解析原始 JSON/CSV 文件并推断故事线——这是产生幻觉或错误报告数据的常见来源。
Git 规范:将此日志与其描述的结果一起提交。
迭代优化:策略选择
此管道中的任何输出——论文草稿、实验脚本、分析——都可以进行迭代优化。autoreason 研究提供了每种优化策略何时有效、何时失效的经验证据。使用本节来选择正确的方法。
快速决策表
| 您的场景 | 策略 | 原因 |
|---|---|---|
| 中等模型 + 受限任务 | Autoreason | 最佳甜点区。生成与评估之间的差距最大。基线方法会主动破坏弱模型的输出。 |
| 中等模型 + 开放任务 | 添加范围约束的 Autoreason | 添加固定事实、结构或交付物,以限定改进空间。 |
| 前沿模型 + 受限任务 | Autoreason | 即使在前沿模型上,也能在 2/3 的受限任务中胜出。 |
| 前沿模型 + 无约束任务 | Critique-and-revise 或 single pass | Autoreason 排在最后。模型自我评估能力已足够好。 |
| 具体技术任务(系统设计) | Critique-and-revise | 直接的查找并修复循环效率更高。 |
| 模板填充任务(唯一正确结构) | Single pass 或 conservative | 决策空间最小。迭代不增加价值。 |
| 带有测试用例的代码 | Autoreason(代码变体) | 在修复之前结构化分析失败原因。恢复率 62% 对比 43%。 |
| 非常弱的模型(Llama 8B 级别) | Single pass | 模型太弱,无法生成多样化的候选项。应投资于生成质量。 |
生成-评估差距
核心洞察:Autoreason 的价值取决于模型的生成能力与其自我评估能力之间的差距。
Model Tier │ Generation │ Self-Eval │ Gap │ Autoreason Value
──────────────────┼────────────┼───────────┼────────┼─────────────────
Weak (Llama 8B) │ Poor │ Poor │ Small │ None — can't generate diverse candidates
Mid (Haiku 3.5) │ Decent │ Poor │ LARGE │ MAXIMUM — 42/42 perfect Borda
Mid (Gemini Flash)│ Decent │ Moderate │ Large │ High — wins 2/3
Strong (Sonnet 4) │ Good │ Decent │ Medium │ Moderate — wins 3/5
Frontier (S4.6) │ Excellent │ Good │ Small │ Only with constraints
这种差距是结构性的,而非暂时性的。随着成本下降,今天的前沿模型将成为明天的中等模型。最佳甜点区会移动,但永远不会消失。
Autoreason 循环(摘要)
每一轮由全新的、隔离的代理产生三个候选项:
- Critic → 找出当前 incumbent A 中的问题(不进行修复)
- Author B → 根据批评意见修订 A
- Synthesizer → 合并 A 和 B(标签随机化)
- Judge Panel → 3 位盲测思维链(CoT)评委通过博达计数法对 A、B、AB 进行排名
- Convergence → A 连续赢得 k=2 轮 → 完成
关键参数:
- k=2 收敛(k=1 过早,k=3 成本过高且无质量提升)
- 始终使用 CoT 评委(收敛速度快 3 倍)
- 作者温度设为 0.8,评委温度设为 0.3
- 保守平局打破规则:平局时 incumbent 胜出
- 每个角色都是拥有独立上下文的全新代理
应用于论文草稿
当通过 autoreason 优化论文本身时:
- 向 Critic 提供真实数据:实际的实验数据、结果 JSON、统计输出。如果没有这些,模型会产生捏造的消融实验和虚假的置信区间。
- 至少使用 3 位有效的评委:损坏的评委解析器不仅会增加噪声,还会完全阻止均衡状态的达成。
- 限制修订范围:“解决这些具体弱点”,而不是“改进论文”。
失败模式
| 失败类型 | 检测方法 | 修复方法 |
|---|---|---|
| 未收敛(A 从未获胜) | 在 20+ 轮中 A 胜率 <15% | 为任务添加范围约束 |
| 合成漂移 | 字数无限增长 | 约束结构和交付物 |
| 效果低于单次传递 | 基线得分高于迭代输出 | 切换到 single pass;模型可能太弱 |
| 过拟合(代码) | 公共测试通过率高,私有测试通过率低 | 使用结构化分析,而不仅仅是测试反馈 |
| 评委失效 | 解析失败导致评委小组少于 3 人 | 在继续之前修复解析器 |
完整提示词、博达评分细节、模型选择指南、范围约束设计模式和计算预算参考,请参阅 references/autoreason-methodology.md。
第 5 阶段:论文起草
目标:撰写一篇完整、可发表的论文。
大型项目的上下文管理
一个包含 50+ 个实验文件、多个结果目录和大量文献笔记的论文项目,很容易超出代理的上下文窗口。需要主动管理:
每个起草任务加载到上下文中的内容:
| 起草任务 | 加载到上下文 | 不要加载 |
|---|---|---|
| 撰写引言 | experiment_log.md、贡献陈述、5-10 篇最相关的论文摘要 | 原始结果 JSON、完整实验脚本、所有文献笔记 |
| 撰写方法 | 实验配置、伪代码、架构描述 | 原始日志、其他实验的结果 |
| 撰写结果 | experiment_log.md、结果汇总表、图表列表 | 完整分析脚本、中间数据 |
| 撰写相关工作 | 整理好的引用笔记(步骤 1.4 的输出)、.bib 文件 | 实验文件、原始 PDF |
| 修订轮次 | 完整论文草稿、具体的审稿人关切点 | 其他所有内容 |
原则:
experiment_log.md是主要的上下文桥梁 —— 它总结了写作所需的一切,而无需加载原始数据文件(参见步骤 4.6)- 委托任务时,一次只加载一个部分的上下文。 起草“方法”部分的子代理不需要文献综述笔记。
- 进行总结,不要包含原始文件。 对于 200 行的结果 JSON,加载一个 10 行的摘要表。对于一篇 50 页的相关论文,加载 5 句话的摘要 + 你关于其相关性的 2 行笔记。
- 对于非常大型的项目:创建一个
context/目录,其中包含预压缩的摘要:
context/
contribution.md # 1 sentence
experiment_summary.md # Key results table (from experiment_log.md)
literature_map.md # Organized citation notes
figure_inventory.md # List of figures with descriptions
叙事原则
最关键的见解:你的论文不是实验的集合——它是一个由证据支持的、具有单一清晰贡献的故事。
每一篇成功的机器学习论文都围绕着 Neel Nanda 所称的“叙事”:一个简短、严谨、基于证据的技术故事,并带有读者关心的核心观点。
三大支柱(在引言结束时必须清晰明确):
| 支柱 | 描述 | 测试 |
|---|---|---|
| 是什么 (The What) | 1-3 个具体的新颖主张 | 你能用一句话陈述它们吗? |
| 为什么 (The Why) | 严谨的经验证据 | 实验能否将你的假设与替代方案区分开来? |
| 那又怎样 (The So What) | 读者为何要关心 | 这是否与公认社区问题相关联? |
如果你不能用一句话陈述你的贡献,那么你还没有形成一篇论文。
本指南的来源
这项技能综合了曾在顶级会议发表大量论文的研究人员的写作哲学。写作哲学层最初由 Orchestra Research 编译为 ml-paper-writing 技能。
| 来源 | 关键贡献 | 链接 |
|---|---|---|
| Neel Nanda (Google DeepMind) | 叙事原则,是什么/为什么/那又怎样框架 | 如何撰写机器学习论文 |
| Sebastian Farquhar (DeepMind) | 5 句话摘要公式 | 如何撰写机器学习论文 |
| Gopen & Swan | 读者期望的 7 项原则 | 科学写作的科学 |
| Zachary Lipton | 措辞选择,消除模糊用语 | 科学写作的启发式方法 |
| Jacob Steinhardt (UC Berkeley) | 精确性,术语一致性 | 写作建议 |
| Ethan Perez (Anthropic) | 微观层面的清晰度技巧 | 简单的论文写作技巧 |
| Andrej Karpathy | 聚焦单一贡献 | 各类讲座 |
如需深入了解上述任何内容,请参阅:
- references/writing-guide.md — 带有示例的完整解释
- references/sources.md — 完整参考文献列表
时间分配
在以下各项上花费大致相等的时间:
- 摘要
- 引言
- 图表
- 其余所有部分合计
为什么? 大多数审稿人在读到你的方法之前就已经形成了判断。读者接触你论文的顺序是:标题 → 摘要 → 引言 → 图表 → 也许还有其余部分。
写作工作流
Paper Writing Checklist:
- [ ] Step 1: Define the one-sentence contribution
- [ ] Step 2: Draft Figure 1 (core idea or most compelling result)
- [ ] Step 3: Draft abstract (5-sentence formula)
- [ ] Step 4: Draft introduction (1-1.5 pages max)
- [ ] Step 5: Draft methods
- [ ] Step 6: Draft experiments & results
- [ ] Step 7: Draft related work
- [ ] Step 8: Draft conclusion & discussion
- [ ] Step 9: Draft limitations (REQUIRED by all venues)
- [ ] Step 10: Plan appendix (proofs, extra experiments, details)
- [ ] Step 11: Complete paper checklist
- [ ] Step 12: Final review
两轮优化模式
当使用 AI 代理进行起草时,采用两轮方法(在 SakanaAI 的 AI-Scientist 管道中被证明有效):
第一轮 — 写作 + 立即针对每个部分进行优化: 对于每个部分,撰写完整的初稿,然后在同一上下文中立即对其进行优化。这能在该部分内容尚新鲜时捕捉局部问题(清晰度、流畅性、完整性)。
第二轮 — 基于全文上下文的全局优化: 在所有部分起草完成后,带着对整篇论文的了解重新审视每个部分。这能捕捉跨部分的问题:冗余、术语不一致、叙事流畅性,以及某个部分承诺了但另一个部分未交付的缺口。
Second-pass refinement prompt (per section):
"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 错误检查清单
将此检查清单附加到每个优化提示中。这些是大语言模型编写 LaTeX 时最常见的错误:
LaTeX Quality Checklist (verify after every edit):
- [ ] No unenclosed math symbols ($ signs balanced)
- [ ] Only reference figures/tables that exist (\ref matches \label)
- [ ] No fabricated citations (\cite matches entries in .bib)
- [ ] Every \begin{env} has matching \end{env} (especially figure, table, algorithm)
- [ ] No HTML contamination (</end{figure}> instead of \end{figure})
- [ ] No unescaped underscores outside math mode (use \_ in text)
- [ ] No duplicate \label definitions
- [ ] No duplicate section headers
- [ ] Numbers in text match actual experimental results
- [ ] All figures have captions and labels
- [ ] No overly long lines that cause overfull hbox warnings
步骤 5.0:标题
标题是论文中被阅读次数最多的元素。它决定了是否有人会点击进入摘要。
好的标题:
- 陈述贡献或发现:“Autoreason:迭代大语言模型优化何时有效及其失败原因”
- 强调令人惊讶的结果:“扩展数据受限的语言模型”(暗示你可以做到)
- 命名方法 + 其功能:“DPO:语言模型的直接偏好优化”
糟糕的标题:
- 过于泛泛:“一种改进语言模型输出的方法”
- 过长:超过约 15 个词的任何内容
- 仅含术语:“迭代随机策略细化的渐近收敛性”(这是写给谁看的?)
规则:
- 如果有方法名称,请包含在内(以便引用)
- 包含 1-2 个审稿人会搜索的关键词
- 避免使用冒号,除非前后两部分都承载实质意义
- 测试:审稿人能否仅从标题中得知研究领域和贡献?
步骤 5.1:摘要(5 句话公式)
来自 Sebastian Farquhar (DeepMind):
1. What you achieved: "We introduce...", "We prove...", "We demonstrate..."
2. Why this is hard and important
3. How you do it (with specialist keywords for discoverability)
4. What evidence you have
5. Your most remarkable number/result
删除诸如“大型语言模型取得了显著成功……”之类的通用开场白。
步骤 5.2:图 1
图 1 是大多数读者继摘要之后查看的第二部分内容。在撰写引言之前先起草它——这迫使你厘清核心思想。
| 图 1 类型 | 何时使用 | 示例 |
|---|---|---|
| 方法示意图 | 新架构或流程 | 展示你系统的 TikZ 流程图 |
| 结果预览 | 一个引人注目的结果就能说明全部故事 | 柱状图:“ ours vs baselines”,差距清晰 |
| 问题图示 | 问题不直观 | 展示你所修复的失败模式的前后对比 |
| 概念图 | 抽象贡献需要视觉化支撑 | 方法属性的 2x2 矩阵 |
规则:图 1 必须在不阅读任何文本的情况下也能被理解。仅凭图注就应能传达核心思想。有目的地使用颜色——不要仅仅为了装饰。
步骤 5.3:引言(最多 1-1.5 页)
必须包含:
- 清晰的问题陈述
- 简要的方法概述
- 2-4 条贡献列表(在双栏格式中每条最多 1-2 行)
- 方法部分应从第 2-3 页开始
步骤 5.4:方法
确保可复现:
- 概念大纲或伪代码
- 列出所有超参数
- 提供足以复现的架构细节
- 展示最终的设计决策;消融实验放在实验部分
步骤 5.5:实验与结果
对于每个实验,明确陈述:
- 它支持什么主张
- 它如何与主要贡献相关联
- 观察要点:“蓝线显示 X,这证明了 Y”
要求:
- 带有方法论说明的误差棒(标准差 vs 标准误)
- 超参数搜索范围
- 计算基础设施(GPU 类型、总小时数)
- 随机种子设置方法
步骤 5.6:相关工作
按方法论组织,而不是逐篇论文罗列。广泛引用——审稿人很可能撰写过相关论文。
步骤 5.7:局限性(必需)
所有主要会议都要求此部分。诚实有益:
- 审稿人被指示不因诚实地承认局限性而惩罚作者
- 通过首先识别弱点来先发制人地应对批评
- 解释为何这些局限性不会削弱核心主张
步骤 5.8:结论与讨论
结论(必需,0.5-1 页):
- 用一句话重述贡献(措辞应与摘要不同)
- 总结关键发现(2-3 句话,而非列表形式)
- 影响:这对该领域意味着什么?
- 未来工作:2-3 个具体的下一步计划(而非模糊的“我们将 X 留待未来研究”)
讨论(可选,有时与结论合并):
- 超出直接结果的更广泛影响
- 与其他子领域的联系
- 诚实地评估该方法有效和无效的情况
- 实际部署考量
切勿在结论中引入新的结果或主张。
步骤 5.9:附录策略
在所有主要 venues 中,附录篇幅不限,且对于可复现性至关重要。结构如下:
| 附录部分 | 内容 |
|---|---|
| 证明与推导 | 正文中篇幅过长的完整证明。正文可以陈述定理并注明“证明见附录 A”。 |
| 额外实验 | 消融实验、缩放曲线、每个数据集的详细分解、超参数敏感性分析 |
| 实现细节 | 完整的超参数表、训练细节、硬件规格、随机种子 |
| 数据集文档 | 数据收集过程、标注指南、许可协议、预处理步骤 |
| 提示词与模板 | 使用的确切提示词(针对基于 LLM 的方法)、评估模板 |
| 人工评估 | 标注界面截图、给标注员的指令、IRB(机构审查委员会)详情 |
| 额外图表 | 每个任务的详细分解、轨迹可视化、失败案例示例 |
规则:
- 主论文必须是自包含的——审稿人没有义务阅读附录
- 绝不要将关键证据仅放在附录中
- 交叉引用:“完整结果见表 5(附录 B)”,而不仅仅是“见附录”
- 使用
\appendix命令,然后使用\section{A: Proofs}等
页面预算管理
当超出页数限制时:
| 删减策略 | 节省页数 | 风险 |
|---|---|---|
| 将证明移至附录 | 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*{Broader Impact Statement}
% NeurIPS/ICML: after conclusion, does not count toward page limit
% 1. Positive applications (1-2 sentences)
This work enables [specific application] which may benefit [specific group].
% 2. Risks and mitigations (1-3 sentences, be specific)
[Method/model] could potentially be misused for [specific risk]. We mitigate
this by [specific mitigation, e.g., releasing only model weights above size X,
including safety filters, documenting failure modes].
% 3. Limitations of impact claims (1 sentence)
Our evaluation is limited to [specific domain]; broader deployment would
require [specific additional work].
常见错误:
- 写道“我们预见不到任何负面影响”(几乎从不属实 — 审稿人不信任这种说法)
- 表述模糊:“这可能会被滥用”,但未具体说明如何被滥用
- 忽略大规模工作的算力成本
- 忘记在要求披露的会议上声明 LLM 的使用情况
算力碳足迹(针对训练密集型论文):
# Estimate using ML CO2 Impact tool methodology
gpu_hours = 1000 # total GPU hours
gpu_tdp_watts = 400 # e.g., A100 = 400W
pue = 1.1 # Power Usage Effectiveness (data center overhead)
carbon_intensity = 0.429 # kg CO2/kWh (US average; varies by region)
energy_kwh = (gpu_hours * gpu_tdp_watts * pue) / 1000
carbon_kg = energy_kwh * carbon_intensity
print(f"Energy: {energy_kwh:.0f} kWh, Carbon: {carbon_kg:.0f} kg CO2eq")
步骤 5.11:数据说明书与模型卡片(如适用)
如果你的论文引入了新数据集或发布了模型,请包含结构化文档。审稿人越来越期望看到这一点,且 NeurIPS Datasets & Benchmarks 轨道强制要求提供。
数据集说明书 (Datasheets for Datasets) (Gebru et al., 2021) — 包含在附录中:
Dataset Documentation (Appendix):
- Motivation: Why was this dataset created? What task does it support?
- Composition: What are the instances? How many? What data types?
- Collection: How was data collected? What was the source?
- Preprocessing: What cleaning/filtering was applied?
- Distribution: How is the dataset distributed? Under what license?
- Maintenance: Who maintains it? How to report issues?
- Ethical considerations: Contains personal data? Consent obtained?
Potential for harm? Known biases?
模型卡片 (Model Cards) (Mitchell et al., 2019) — 发布模型时包含在附录中:
Model Card (Appendix):
- Model details: Architecture, training data, training procedure
- Intended use: Primary use cases, out-of-scope uses
- Metrics: Evaluation metrics and results on benchmarks
- Ethical considerations: Known biases, fairness evaluations
- Limitations: Known failure modes, domains where model underperforms
写作风格
句子层面的清晰度(Gopen & Swan 的 7 项原则):
| 原则 | 规则 |
|---|---|
| 主谓邻近 | 保持主语和谓语靠近 |
| 强调位置 | 将重点放在句尾 |
| 主题位置 | 先放背景信息,后放新信息 |
| 旧信息在前 | 熟悉的信息 → 不熟悉的信息 |
| 一个单元,一个功能 | 每个段落阐述一个观点 |
| 动词体现动作 | 使用动词,而非名词化结构 |
| 背景在新信息之前 | 在呈现内容前先铺垫背景 |
用词选择(Lipton, Steinhardt):
- 具体明确:使用“准确率 (accuracy)”而非“性能 (performance)”
- 消除含糊其辞:除非真正不确定,否则去掉“可能 (may)”
- 全文术语保持一致
- 避免增量式词汇:使用“开发 (develop)”,而非“结合 (combine)”
包含示例的完整写作指南:参见 references/writing-guide.md
使用 LaTeX 模板
务必先复制整个模板目录,然后在其中进行写作。
Template Setup Checklist:
- [ ] Step 1: Copy entire template directory to new project
- [ ] Step 2: Verify template compiles as-is (before any changes)
- [ ] Step 3: Read the template's example content to understand structure
- [ ] Step 4: Replace example content section by section
- [ ] Step 5: Use template macros (check preamble for \newcommand definitions)
- [ ] Step 6: Clean up template artifacts only at the end
步骤 1:复制完整模板
cp -r templates/neurips2025/ ~/papers/my-paper/
cd ~/papers/my-paper/
ls -la # Should see: main.tex, neurips.sty, Makefile, etc.
复制整个目录,而不仅仅是 .tex 文件。模板包括样式文件 (.sty)、参考文献样式 (.bst)、示例内容和 Makefiles。
步骤 2:首先验证模板能否编译
在进行任何更改之前:
latexmk -pdf main.tex
# Or manual: pdflatex main.tex && bibtex main && pdflatex main.tex && pdflatex main.tex
如果未修改的模板无法编译,请先修复该问题(通常是缺少 TeX 包 — 通过 tlmgr install <package> 安装)。
步骤 3:保留模板内容作为参考
不要立即删除示例内容。将其注释掉,并用作格式参考:
% Template example (keep for reference):
% \begin{figure}[t]
% \centering
% \includegraphics[width=0.8\linewidth]{example-image}
% \caption{Template shows caption style}
% \end{figure}
% Your actual figure:
\begin{figure}[t]
\centering
\includegraphics[width=0.8\linewidth]{your-figure.pdf}
\caption{Your caption following the same style.}
\end{figure}
步骤 4:逐节替换内容
系统性地处理:标题/作者 → 摘要 → 引言 → 方法 → 实验 → 相关工作 → 结论 → 参考文献 → 附录。每完成一节就编译一次。
步骤 5:使用模板宏
\newcommand{\method}{YourMethodName} % Consistent method naming
\newcommand{\eg}{e.g.,\xspace} % Proper abbreviations
\newcommand{\ie}{i.e.,\xspace}
模板陷阱
| 陷阱 | 问题 | 解决方案 |
|---|---|---|
仅复制 .tex 文件 | 缺少 .sty,无法编译 | 复制整个目录 |
修改 .sty 文件 | 破坏会议格式要求 | 切勿编辑样式文件 |
| 添加随机包 | 冲突,破坏模板 | 仅在必要时添加 |
| 过早删除模板内容 | 丢失格式参考 | 保留为注释直到完成 |
| 不频繁编译 | 错误累积 | 每节之后编译 |
| 图片使用栅格 PNG | 论文中模糊 | 始终通过 savefig('fig.pdf') 使用矢量 PDF |
快速模板参考
| 会议 | 主文件 | 样式文件 | 页数限制 |
|---|---|---|---|
| NeurIPS 2025 | main.tex | neurips.sty | 9 页 |
| ICML 2026 | example_paper.tex | icml2026.sty | 8 页 |
| ICLR 2026 | iclr2026_conference.tex | iclr2026_conference.sty | 9 页 |
| ACL 2025 | acl_latex.tex | acl.sty | 8 页(长文) |
| AAAI 2026 | aaai2026-unified-template.tex | aaai2026.sty | 7 页 |
| COLM 2025 | colm2025_conference.tex | colm2025_conference.sty | 9 页 |
通用要求:双盲评审,参考文献不计入页数,附录篇幅不限,必须使用 LaTeX。
模板位于 templates/ 目录中。请参阅 templates/README.md 了解编译设置(VS Code、CLI、Overleaf、其他 IDE)。
表格与图形
表格 — 使用 booktabs 进行专业格式化:
\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}
规则:
- 每个指标的最佳值加粗
- 包含方向符号($\uparrow$ 表示越高越好,$\downarrow$ 表示越低越好)
- 数值列右对齐
- 保持小数精度一致
图形:
- 所有绘图和图表使用矢量图形(PDF、EPS)—
plt.savefig('fig.pdf') - 仅照片使用栅格图像(PNG 600 DPI)
- 使用色盲友好调色板(Okabe-Ito 或 Paul Tol)
- 验证灰度可读性(8% 的男性患有色觉缺陷)
- 图形内部无标题 — 标题由图注承担此功能
- 自包含图注 — 读者无需阅读正文即可理解
会议重投
若需在不同会议间转换稿件,请参阅第 7 阶段(投稿准备)— 其中涵盖了完整的转换工作流程、页数变化表以及被拒后的指导建议。
专业 LaTeX 导言区
将以下宏包添加到任何论文中以提升专业质量。它们与所有主要会议的样式文件兼容:
% --- Professional Packages (add after conference style file) ---
% Typography
\usepackage{microtype} % Microtypographic improvements (protrusion, expansion)
% Makes text noticeably more polished — always include
% Tables
\usepackage{booktabs} % Professional table rules (\toprule, \midrule, \bottomrule)
\usepackage{siunitx} % Consistent number formatting, decimal alignment
% Usage: \num{12345} → 12,345; \SI{3.5}{GHz} → 3.5 GHz
% Table alignment: S column type for decimal-aligned numbers
% Figures
\usepackage{graphicx} % Include graphics (\includegraphics)
\usepackage{subcaption} % Subfigures with (a), (b), (c) labels
% Usage: \begin{subfigure}{0.48\textwidth} ... \end{subfigure}
% Diagrams and Algorithms
\usepackage{tikz} % Programmable vector diagrams
\usetikzlibrary{arrows.meta, positioning, shapes.geometric, calc, fit, backgrounds}
\usepackage[ruled,vlined]{algorithm2e} % Professional pseudocode
% Alternative: \usepackage{algorithmicx} if template bundles it
% Cross-references
\usepackage{cleveref} % Smart references: \cref{fig:x} → "Figure 1"
% MUST be loaded AFTER hyperref
% Handles: figures, tables, sections, equations, algorithms
% Math (usually included by conference .sty, but verify)
\usepackage{amsmath,amssymb} % AMS math environments and symbols
\usepackage{mathtools} % Extends amsmath (dcases, coloneqq, etc.)
% Colors (for figures and diagrams)
\usepackage{xcolor} % Color management
% Okabe-Ito colorblind-safe palette:
\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 放在最后。- 检查会议模板是否已加载其中任何宏包(尤其是
algorithm、amsmath、graphicx)。避免重复加载。
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} → “Figure 1”,\cref{fig:results-a} → “Figure 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},
]
% Headers
\node[header] at (0, 0) {Method};
\node[header] at (3, 0) {Converges?};
\node[header] at (6, 0) {Quality?};
% Rows
\node[cell] at (0, -1) {Single Pass};
\node[cell, fill=okgreen!15] at (3, -1) {N/A};
\node[cell, fill=okorange!15] at (6, -1) {Baseline};
\node[cell] at (0, -2) {Critique+Revise};
\node[cell, fill=okred!15] at (3, -2) {No};
\node[cell, fill=okred!15] at (6, -2) {Degrades};
\node[cell] at (0, -3) {Ours};
\node[cell, fill=okgreen!15] at (3, -3) {Yes ($k$=2)};
\node[cell, fill=okgreen!15] at (6, -3) {Improves};
\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) {Generator};
\node[box, fill=okred!20, right=2.5cm of gen] (critic) {Critic};
\node[box, fill=okgreen!20, below=1.5cm of $(gen)!0.5!(critic)$] (judge) {Judge Panel};
\draw[arrow] (gen) -- node[label] {output $A$} (critic);
\draw[arrow] (critic) -- node[label, right] {critique $C$} (judge);
\draw[arrow] (judge) -| node[label, left, pos=0.3] {winner} (gen);
\end{tikzpicture}
使用 latexdiff 跟踪修订
对于反驳至关重要 — 生成标记版的 PDF,显示版本间的更改:
# Install
# macOS: brew install latexdiff (or comes with TeX Live)
# Linux: sudo apt install latexdiff
# Generate diff
latexdiff paper_v1.tex paper_v2.tex > paper_diff.tex
pdflatex paper_diff.tex
# For multi-file projects (with \input{} or \include{})
latexdiff --flatten paper_v1.tex paper_v2.tex > paper_diff.tex
这将生成一个 PDF,删除内容以红色删除线显示,新增内容以蓝色显示 — 这是反驳补充材料的标准格式。
用于 matplotlib 的 SciencePlots
安装并使用它以生成出版质量的图表:
pip install SciencePlots
import matplotlib.pyplot as plt
import scienceplots # registers styles
# Use science style (IEEE-like, clean)
with plt.style.context(['science', 'no-latex']):
fig, ax = plt.subplots(figsize=(3.5, 2.5)) # Single-column width
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')
# Available styles: 'science', 'ieee', 'nature', 'science+ieee'
# Add 'no-latex' if LaTeX is not installed on the machine generating plots
标准图形尺寸(双栏格式):
- 单栏:
figsize=(3.5, 2.5)— 适应单栏宽度 - 双栏:
figsize=(7.0, 3.0)— 跨越双栏宽度 - 正方形:
figsize=(3.5, 3.5)— 适用于热力图、混淆矩阵
第 6 阶段:自我审查与修订
目标:在投稿前模拟评审过程。尽早发现弱点。
步骤 6.1:模拟评审(集成模式)
从多个角度生成评审意见。自动化研究流水线(特别是 SakanaAI 的 AI-Scientist)的关键见解:使用元评审者进行集成评审,比单次评审能产生校准程度高得多的反馈。
步骤 1:生成 N 份独立评审(N=3-5)
使用不同的模型或温度设置。每位评审者仅看到论文,看不到其他评审意见。默认采用负面偏差 — LLM 在评估中存在记录良好的正面偏差。
You are an expert reviewer for [VENUE]. You are critical and thorough.
If a paper has weaknesses or you are unsure about a claim, flag it clearly
and reflect that in your scores. Do not give the benefit of the doubt.
Review this paper according to the official reviewer guidelines. Evaluate:
1. Soundness (are claims well-supported? are baselines fair and strong?)
2. Clarity (is the paper well-written? could an expert reproduce it?)
3. Significance (does this matter to the community?)
4. Originality (new insights, not just incremental combination?)
Provide your review as structured JSON:
{
"summary": "2-3 sentence summary",
"strengths": ["strength 1", "strength 2", ...],
"weaknesses": ["weakness 1 (most critical)", "weakness 2", ...],
"questions": ["question for authors 1", ...],
"missing_references": ["paper that should be cited", ...],
"soundness": 1-4,
"presentation": 1-4,
"contribution": 1-4,
"overall": 1-10,
"confidence": 1-5
}
步骤 2:元评审(领域主席聚合)
将所有 N 份评审输入给元评审者:
You are an Area Chair at [VENUE]. You have received [N] independent reviews
of a paper. Your job is to:
1. Identify consensus strengths and weaknesses across reviewers
2. Resolve disagreements by examining the paper directly
3. Produce a meta-review that represents the aggregate judgment
4. Use AVERAGED numerical scores across all reviews
Be conservative: if reviewers disagree on whether a weakness is serious,
treat it as serious until the authors address it.
Reviews:
[review_1]
[review_2]
...
步骤 3:反思循环(可选,2-3 轮)
每位评审者在看到元评审后可以完善其评审意见。使用早期终止哨兵:如果评审者回应“我已完成”(无更改),则停止迭代。
评审用的模型选择:评审工作最好使用可用的最强模型完成,即使你是用较便宜的模型撰写论文的。评审模型的选择应独立于写作模型。
少样本校准:如果可能,包含 1-2 篇来自目标 venues 的真实已发表评审作为示例。这能显著改善评分校准。参见 references/reviewer-guidelines.md 获取评审示例。
步骤 6.1b:视觉审查阶段(VLM)
仅基于文本的审查会遗漏一整类问题:图表质量、布局问题、视觉一致性。如果你可以使用具备视觉能力的模型,请在编译后的 PDF 上运行单独的视觉审查:
You are reviewing the visual presentation of this research paper PDF.
Check for:
1. Figure quality: Are plots readable? Labels legible? Colors distinguishable?
2. Figure-caption alignment: Does each caption accurately describe its figure?
3. Layout issues: Orphaned section headers, awkward page breaks, figures far from their references
4. Table formatting: Aligned columns, consistent decimal precision, bold for best results
5. Visual consistency: Same color scheme across all figures, consistent font sizes
6. Grayscale readability: Would the figures be understandable if printed in B&W?
For each issue, specify the page number and exact location.
这能捕捉到基于文本的审查无法发现的问题:坐标轴标签难以辨认的绘图、图表与其首次引用相隔 3 页、图 2 和图 5 之间的调色板不一致,或者明显超出列宽的表格。
步骤 6.1c:主张验证阶段
在模拟评审之后,运行单独的验证阶段。这能捕捉评审员可能遗漏的事实性错误:
Claim Verification Protocol:
1. Extract every factual claim from the paper (numbers, comparisons, trends)
2. For each claim, trace it to the specific experiment/result that supports it
3. Verify the number in the paper matches the actual result file
4. Flag any claim without a traceable source as [VERIFY]
对于基于代理的工作流:将验证任务委托给一个全新的子代理,该代理仅接收论文文本和原始结果文件。全新的上下文可防止确认偏误——验证者不会“记得”结果原本应该是什么。
步骤 6.2:优先处理反馈
收集评审意见后,进行分类:
| 优先级 | 行动 |
|---|---|
| 关键(技术缺陷、缺少基线) | 必须修复。可能需要新实验 → 返回阶段 2 |
| 高(清晰度问题、缺少消融实验) | 应在本次修订中修复 |
| 中(次要写作问题、额外实验) | 如有时间则修复 |
| 低(风格偏好、边缘建议) | 记录以备将来工作 |
步骤 6.3:修订周期
针对每个关键/高优先级问题:
- 确定受影响的具体章节
- 起草修复方案
- 验证修复不会破坏其他主张
- 更新论文
- 对照评审员的关切重新检查
步骤 6.4:撰写反驳信
在回应实际评审意见(提交后)时,撰写反驳信是一项不同于修订的独立技能:
格式:逐点回应。针对每位评审员的关切:
> R1-W1: "The paper lacks comparison with Method X."
We thank the reviewer for this suggestion. We have added a comparison with
Method X in Table 3 (revised). Our method outperforms X by 3.2pp on [metric]
(p<0.05). We note that X requires 2x our compute budget.
规则:
- 回应每一个关切——评审员会注意到你是否跳过某一点
- 以最有力的回应开头
- 简洁直接——评审员要阅读数十封反驳信
- 如果在反驳期间运行了实验,请包含新结果
- 即使面对薄弱的批评,也切勿采取防御性或轻视态度
- 使用
latexdiff生成显示更改的标记 PDF(参见专业 LaTeX 工具部分) - 感谢评审员提供具体、可操作的反馈(而非泛泛的赞扬)
不要做的事:在没有证据的情况下说“我们恭敬地不同意”。在没有解释的情况下说“这超出了范围”。只回应优点而忽略弱点。
步骤 6.5:论文演变跟踪
在关键里程碑保存快照:
paper/
paper.tex # Current working version
paper_v1_first_draft.tex # First complete draft
paper_v2_post_review.tex # After simulated review
paper_v3_pre_submission.tex # Final before submission
paper_v4_camera_ready.tex # Post-acceptance final
阶段 7:提交准备
目标:最终检查、格式调整和提交。
步骤 7.1:会议检查清单
每个 venue 都有强制性的检查清单。仔细完成它们——不完整的检查清单可能导致直接拒稿。
参见 references/checklists.md 获取:
- NeurIPS 16 项论文检查清单
- ICML 更广泛影响 + 可复现性
- ICLR LLM 披露政策
- ACL 强制性局限性部分
- 通用提交前检查清单
步骤 7.2:匿名化检查清单
双盲评审意味着评审员无法知道谁写了这篇论文。检查以下所有事项:
Anonymization Checklist:
- [ ] No author names or affiliations anywhere in the PDF
- [ ] No acknowledgments section (add after acceptance)
- [ ] Self-citations written in third person: "Smith et al. [1] showed..." not "We previously showed [1]..."
- [ ] No GitHub/GitLab URLs pointing to your personal repos
- [ ] Use Anonymous GitHub (https://anonymous.4open.science/) for code links
- [ ] No institutional logos or identifiers in figures
- [ ] No file metadata containing author names (check PDF properties)
- [ ] No "our previous work" or "in our earlier paper" phrasing
- [ ] Dataset names don't reveal institution (rename if needed)
- [ ] Supplementary materials don't contain identifying information
常见错误:补充代码中可见的 Git 提交消息、来自机构工具的水印图表、从前一版草稿中遗留的致谢、在匿名期之前发布的 arXiv 预印本。
步骤 7.3:格式验证
Pre-Submission Format Check:
- [ ] Page limit respected (excluding references and appendix)
- [ ] All figures are vector (PDF) or high-res raster (600 DPI PNG)
- [ ] All figures readable in grayscale
- [ ] All tables use booktabs
- [ ] References compile correctly (no "?" in citations)
- [ ] No overfull hboxes in critical areas
- [ ] Appendix clearly labeled and separated
- [ ] Required sections present (limitations, broader impact, etc.)
步骤 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)')
"
在继续之前修复任何警告。对于基于代理的工作流:将 chktex 输出反馈给代理,并指示其进行最小限度的修复。
步骤 7.5:最终编译
# Clean build
rm -f *.aux *.bbl *.blg *.log *.out *.pdf
latexmk -pdf main.tex
# Or manual (triple pdflatex + bibtex for cross-references)
pdflatex -interaction=nonstopmode main.tex
bibtex main
pdflatex -interaction=nonstopmode main.tex
pdflatex -interaction=nonstopmode main.tex
# Verify output exists and has content
ls -la main.pdf
如果编译失败:解析 .log 文件以查找第一个错误。常见修复方法:
- “Undefined control sequence” → 缺少包或命令名称拼写错误
- “Missing $ inserted” → 数学模式外的数学符号
- “File not found” → 图片路径错误或缺少 .sty 文件
- “Citation undefined” → 缺少 .bib 条目或未运行 bibtex
步骤 7.6:特定会议要求
| 会议 | 特殊要求 |
|---|---|
| NeurIPS | 附录中需包含论文检查清单,若被录用需提供通俗摘要 |
| ICML | 更广泛影响声明(置于结论之后,不计入页数限制) |
| ICLR | 必须披露大语言模型(LLM)使用情况,签署互惠审稿协议 |
| ACL | 必须包含局限性(Limitations)章节,提供负责任的 NLP 检查清单 |
| AAAI | 严格的样式文件——严禁任何修改 |
| COLM | 针对语言模型社区重构贡献陈述 |
步骤 7.7:会议重投与格式转换
在不同会议间转换时,切勿在不同模板间复制 LaTeX 导言区(preambles):
# 1. Start fresh with target template
cp -r templates/icml2026/ new_submission/
# 2. Copy ONLY content sections (not preamble)
# - Abstract text, section content, figures, tables, bib entries
# 3. Adjust for page limits
# 4. Add venue-specific required sections
# 5. Update references
| 从 → 到 | 页数变化 | 关键调整 |
|---|---|---|
| NeurIPS → ICML | 9 → 8 | 删减 1 页,添加更广泛影响声明 |
| ICML → ICLR | 8 → 9 | 扩展实验部分,添加 LLM 披露 |
| NeurIPS → ACL | 9 → 8 | 按照 NLP 惯例重构结构,添加局限性章节 |
| ICLR → AAAI | 9 → 7 | 大幅删减,严格遵守样式规范 |
| 任意 → COLM | 可变 → 9 | 重新构建以聚焦语言模型 |
删减页数时:将证明移至附录,精简相关工作,合并表格,使用子图。 扩展内容时:添加消融实验,扩展局限性讨论,包含额外的基线方法,添加定性示例。
被拒稿后:在新版本中解决审稿人的关切,但不要包含“变更”章节或提及之前的投稿(盲审要求)。
步骤 7.8:终稿准备(录用后)
录用后,准备终稿(camera-ready version):
Camera-Ready Checklist:
- [ ] De-anonymize: add author names, affiliations, email addresses
- [ ] Add Acknowledgments section (funding, compute grants, helpful reviewers)
- [ ] Add public code/data URL (real GitHub, not anonymous)
- [ ] Address any mandatory revisions from meta-reviewer
- [ ] Switch template to camera-ready mode (if applicable — e.g., AAAI \anon → \camera)
- [ ] Add copyright notice if required by venue
- [ ] Update any "anonymous" placeholders in text
- [ ] Verify final PDF compiles cleanly
- [ ] Check page limit for camera-ready (sometimes differs from submission)
- [ ] Upload supplementary materials (code, data, appendix) to venue portal
步骤 7.9:arXiv 与预印本策略
在 arXiv 上发布是机器学习领域的常规做法,但需要注意时机和匿名性考量。
时机决策树:
| 情况 | 建议 |
|---|---|
| 投稿至双盲会议(NeurIPS, ICML, ACL) | 在投稿截止日期之后发布至 arXiv,而非之前。提前发布可能在技术上违反匿名政策,尽管执行力度各异。 |
| 投稿至 ICLR | ICLR 明确允许在投稿前发布至 arXiv。但不要在投稿文件本身中包含作者姓名。 |
| 论文已在 arXiv 上,投稿至新会议 | 大多数会议均接受。切勿在审稿期间更新 arXiv 版本以包含引用审稿意见的更改。 |
| 研讨会(Workshop)论文 | 随时可发布至 arXiv——研讨会通常不采用双盲评审。 |
| 希望确立优先权 | 如果担心被抢发(scooping),请立即发布——但需接受牺牲匿名性的代价。 |
arXiv 类别选择(ML/AI 论文):
| 类别 | 代码 | 适用领域 |
|---|---|---|
| Machine Learning | cs.LG | 通用机器学习方法 |
| Computation and Language | cs.CL | 自然语言处理,语言模型 |
| Artificial Intelligence | cs.AI | 推理,规划,智能体 |
| Computer Vision | cs.CV | 视觉模型 |
| Information Retrieval | cs.IR | 搜索,推荐系统 |
列出主要类别 + 1-2 个交叉列表类别。 类别越多 = 曝光率越高,但仅在与内容真正相关时才进行交叉列表。
版本控制策略:
- v1:初始提交(与会议投稿版本一致)
- v2:录用后包含终稿修正的版本(在摘要中添加“accepted at [Venue]”)
- 不要在审稿期间发布包含明显回应审稿人反馈的更改的 v2 版本
# Check if your paper's title is already taken on arXiv
# (before choosing a title)
pip install arxiv
python -c "
import arxiv
results = list(arxiv.Search(query='ti:\"Your Exact Title\"', max_results=5).results())
print(f'Found {len(results)} matches')
for r in results: print(f' {r.title} ({r.published.year})')
"
步骤 7.10:研究代码打包
发布干净、可运行的代码能显著增加引用量和审稿人的信任度。将代码与终稿提交一并打包。
仓库结构:
your-method/
README.md # Setup, usage, reproduction instructions
requirements.txt # Or environment.yml for conda
setup.py # For pip-installable packages
LICENSE # MIT or Apache 2.0 recommended for research
configs/ # Experiment configurations
src/ # Core method implementation
scripts/ # Training, evaluation, analysis scripts
train.py
evaluate.py
reproduce_table1.sh # One script per main result
data/ # Small data or download scripts
download_data.sh
results/ # Expected outputs for verification
研究代码 README 模板:
# [Paper Title]
Official implementation of "[Paper Title]" (Venue Year).
## Setup
[Exact commands to set up environment]
## Reproduction
To reproduce Table 1: `bash scripts/reproduce_table1.sh`
To reproduce Figure 2: `python scripts/make_figure2.py`
## Citation
[BibTeX entry]
发布前检查清单:
- [ ] Code runs from a clean clone (test on fresh machine or Docker)
- [ ] All dependencies pinned to specific versions
- [ ] No hardcoded absolute paths
- [ ] No API keys, credentials, or personal data in repo
- [ ] README covers setup, reproduction, and citation
- [ ] LICENSE file present (MIT or Apache 2.0 for max reuse)
- [ ] Results are reproducible within expected variance
- [ ] .gitignore excludes data files, checkpoints, logs
投稿用的匿名代码(录用前):
# Use Anonymous GitHub for double-blind review
# https://anonymous.4open.science/
# Upload your repo → get an anonymous URL → put in paper
阶段 8:录用后的交付物
目标:通过演示材料和社区参与,最大化已录用论文的影响力。
步骤 8.1:会议海报
大多数会议都要求海报展示环节。海报设计原则:
| 元素 | 指南 |
|---|---|
| 尺寸 | 检查会议要求(通常为 24"x36" 或 A0 纵向/横向) |
| 内容 | 标题,作者,一句话贡献,方法图示,2-3 个关键结果,结论 |
| 流程 | 从左上到右下(Z 型模式)或分栏布局 |
| 文本 | 标题在 3 米处可读,正文在 1 米处可读。不要使用完整段落——仅使用要点。 |
| 图表 | 以更高分辨率重用论文中的图表。放大关键结果。 |
工具:LaTeX(beamerposter 包),PowerPoint/Keynote,Figma,Canva。
制作:在会议开始前 2 周以上订购。布质海报更轻便,适合旅行携带。许多会议现在也支持虚拟/数字海报。
步骤 8.2:会议演讲 / 焦点报告
如果获得口头报告或焦点报告(spotlight presentation机会:
| 演讲类型 | 时长 | 内容 |
|---|---|---|
| Spotlight(焦点演讲) | 5 分钟 | 问题、方法、一个关键结果。排练至精确的 5 分钟。 |
| Oral(口头报告) | 15-20 分钟 | 完整故事:问题、方法、关键结果、消融实验、局限性。 |
| Workshop talk(研讨会演讲) | 10-15 分钟 | 根据研讨会受众进行调整——可能需要更多背景介绍。 |
幻灯片设计规则:
- 每页幻灯片只表达一个观点
- 最小化文本——口述细节,不要投影出来
- 对关键图表进行动画处理,逐步构建理解
- 在末尾包含一张“要点”幻灯片(用一句话概括贡献)
- 为预期问题准备备用幻灯片
步骤 8.3:博客文章 / 社交媒体
易于理解的摘要能显著增加影响力:
- Twitter/X 线程:5-8 条推文。以结果而非方法作为开头。包含图 1 和关键结果图。
- 博客文章:800-1500 字。面向机器学习从业者撰写,而非审稿人。跳过形式化描述,强调直觉和实际意义。
- 项目页面:包含摘要、图表、演示、代码链接、BibTeX 的 HTML 页面。使用 GitHub Pages。
时机:在论文出现在会议论文集或 arXiv camera-ready 版本后的 1-2 天内发布。
研讨会与短论文
研讨会论文和短论文(例如 ACL 短论文、Findings 论文)遵循相同的流程,但具有不同的约束和期望。
研讨会论文
| 属性 | 研讨会 | 主会议 |
|---|---|---|
| 页数限制 | 通常为 4-6 页 | 7-9 页 |
| 评审标准 | 对完整性的要求较低 | 必须完整、详尽 |
| 评审流程 | 通常为单盲或轻量级评审 | 双盲,严格评审 |
| 重视内容 | 有趣的想法、初步结果、立场文章 | 具有强基线的完整实证故事 |
| arXiv | 随时发布 | 时机很重要(参见 arXiv 策略) |
| 贡献门槛 | 新方向、有趣的负面结果、进行中工作 | 具有有力证据的显著进展 |
何时目标定位为研讨会:
- 希望在撰写完整论文之前获得反馈的早期阶段想法
- 不足以证明需要 8 页以上篇幅的负面结果
- 关于热点话题的立场文章或观点
- 复现研究或可复现性报告
ACL 短论文与 Findings
ACL 系列会议有不同的投稿类型:
| 类型 | 页数 | 期望内容 |
|---|---|---|
| 长论文 | 8 | 完整研究、强基线、消融实验 |
| 短论文 | 4 | 聚焦的贡献:一个有证据支持的清晰观点 |
| Findings | 8 | 扎实的工作,但略微未达到主会议标准 |
短论文策略:选择一个主张并 thoroughly 支持它。不要试图将长论文压缩到 4 页——写一篇不同且更聚焦的论文。
实证机器学习之外的论文类型
上述主要流程针对实证机器学习论文。其他类型的论文需要不同的结构和证据标准。请参阅 references/paper-types.md 获取每种类型的详细指南。
理论论文
结构:引言 → 预备知识(定义、符号) → 主要结果(定理) → 证明概要 → 讨论 → 完整证明(附录)
与实证论文的关键区别:
- 贡献是定理、界或不可能性结果——而非实验数据
- “方法”部分被“预备知识”和“主要结果”取代
- 证明是证据,而非实验(尽管对理论的实证验证是受欢迎的)
- 正文中包含证明概要,附录中包含完整证明是标准做法
- 实验部分是可选的,但如果能验证理论预测,则会增强论文说服力
证明写作原则:
- 正式陈述定理,明确所有假设
- 在形式化证明之前提供直觉解释(“关键洞察是……”)
- 证明概要用 0.5-1 页传达主要思想
- 使用
\begin{proof}...\end{proof}环境 - 对假设进行编号并在定理中引用:“在假设 1-3 下,……”
综述 / 教程论文
结构:引言 → 分类法 / 组织结构 → 详细覆盖 → 开放问题 → 结论
关键区别:
- 贡献是组织、综合以及识别开放问题——而非新方法
- 必须在范围内全面(审稿人会检查是否遗漏参考文献)
- 需要清晰的分类法或组织框架
- 价值来自于建立单个论文未建立的各项工作之间的联系
- 最佳投稿 venue:TMLR(综述轨道)、JMLR、Foundations and Trends in ML、ACM Computing Surveys
基准测试论文
结构:引言 → 任务定义 → 数据集构建 → 基线评估 → 分析 → 预期用途与局限性
关键区别:
- 贡献本身就是基准——它必须填补真正的评估空白
- 数据集文档是强制性的,而非可选的(参见 Datasheets,步骤 5.11)
- 必须证明该基准具有挑战性(基线模型无法在其上达到饱和性能)
- 必须证明该基准测量了你所声称的内容(构念效度)
- 最佳投稿 venue:NeurIPS Datasets & Benchmarks track、ACL(资源论文)、LREC-COLING
立场论文 (Position Papers)
结构:引言 → 背景 → 论点 / 论证 → 支持证据 → 反驳论点 → 启示
关键区别:
- 贡献是一个论点,而非结果
- 必须认真回应反驳论点
- 证据可以是实证的、理论的或逻辑分析
- 最佳投稿 venue:ICML(position track)、研讨会、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 的所有内容,以及完整的实验/分析流水线和 autoreason 方法论。
Hermes 工具参考
| 工具 | 在此流水线中的用法 |
|---|---|
terminal | LaTeX 编译 (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 | 论文编辑、实验脚本、结果文件。对大型 .tex 文件使用 patch 进行针对性编辑。 |
web_search | 文献发现:web_search("transformer attention mechanism 2024") |
web_extract | 获取论文内容、验证引用:web_extract("https://arxiv.org/abs/2303.17651") |
delegate_task | 并行章节起草 —— 为每个章节 spawn 隔离的子 agent。也用于并发引用验证。 |
todo | 跨会话的主要状态跟踪器。在每个阶段转换后更新。 |
memory | 跨会话持久化关键决策:贡献框架、venue 选择、审稿人反馈。 |
cronjob | 调度实验监控、截止日期倒计时、自动 arXiv 检查。 |
clarify | 当受阻时向用户提出针对性问题(venue 选择、贡献框架)。 |
send_message | 当实验完成或草稿准备就绪时通知用户,即使用户不在聊天中。 |
工具使用模式
实验监控(最常见):
terminal("ps aux | grep <pattern>")
→ terminal("tail -30 <logfile>")
→ terminal("ls results/")
→ execute_code("analyze results JSON, compute metrics")
→ terminal("git add -A && git commit -m '<descriptive message>' && git push")
→ send_message("Experiment complete: <summary>")
并行章节起草(使用委托):
delegate_task("Draft the Methods section based on these experiment scripts and configs.
Include: pseudocode, all hyperparameters, architectural details sufficient for
reproduction. Write in LaTeX using the neurips2025 template conventions.")
delegate_task("Draft the Related Work section. Use web_search and web_extract to
find papers. Verify every citation via Semantic Scholar. Group by methodology.")
delegate_task("Draft the Experiments section. Read all result files in results/.
State which claim each experiment supports. Include error bars and significance.")
每个 delegate 作为全新的子 agent 运行,没有共享上下文——在 prompt 中提供所有必要信息。收集输出并整合。
引用验证(使用 execute_code):
# In 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)
使用 memory 和 todo 进行状态管理
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") # Check current task list
2. memory("read") # Recall key decisions
3. terminal("git log --oneline -10") # Check recent commits
4. terminal("ps aux | grep python") # Check running experiments
5. terminal("ls results/ | tail -20") # Check for new results
6. Report status to user, ask for direction
使用 cronjob 进行 Cron 监控
使用 cronjob 工具调度定期实验检查:
cronjob("create", {
"schedule": "*/30 * * * *", # Every 30 minutes
"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 提出针对性问题:
| 决策 | 何时询问 |
|---|---|
| 目标 venue(会议/期刊) | 开始撰写论文之前(影响页数限制、论述框架) |
| 贡献点的论述框架 | 当存在多种有效的论述框架时 |
| 实验优先级 | 当 TODO 列表中的实验数量超过时间允许范围时 |
| 提交准备情况 | 最终提交之前 |
不要询问以下内容(要主动,做出选择并标记):
- 用词选择、章节顺序
- 具体突出哪些结果
- 引用的完整性(根据找到的内容起草,注明缺失部分)
审稿人评估标准
了解审稿人关注的内容有助于集中精力:
| 标准 | 他们检查的内容 |
|---|---|
| 质量 | 技术合理性、有充分支持的论点、公平的基线对比 |
| 清晰度 | 写作清晰、专家可复现、符号一致 |
| 重要性 | 社区影响力、增进理解 |
| 原创性 | 新见解(不需要新方法) |
评分(NeurIPS 6 分制):
- 6: Strong Accept(强烈接收)— 突破性,完美无瑕
- 5: Accept(接收)— 技术扎实,高影响力
- 4: Borderline Accept(边缘接收)— 扎实,但评估有限
- 3: Borderline Reject(边缘拒绝)— 缺点大于优点
- 2: Reject(拒绝)— 技术缺陷
- 1: Strong Reject(强烈拒绝)— 已知结果或伦理问题
详见 references/reviewer-guidelines.md 以获取详细指南、常见担忧及反驳策略。
常见问题及解决方案
| 问题 | 解决方案 |
|---|---|
| 摘要过于泛泛 | 删除首句(如果它可以放在任何机器学习论文开头)。以你的具体贡献开篇。 |
| 引言超过 1.5 页 | 将背景部分拆分到相关工作(Related Work)中。前置贡献要点。 |
| 实验缺乏明确的主张 | 在每个实验前添加:“本实验测试是否[具体主张]...” |
| 审稿人认为论文难以跟进 | 添加路标指引,使用一致的术语,使图片标题自包含(self-contained)。 |
| 缺少统计显著性 | 添加误差线、运行次数、统计检验、置信区间。 |
| 实验范围蔓延 | 每个实验必须对应一个具体主张。删除不对应的实验。 |
| 论文被拒,需要重新提交 | 参见第 7 阶段的会议重新提交(Conference Resubmission)。解决审稿人的担忧,但不要引用审稿意见。 |
| 缺少更广泛的影响陈述 | 参见步骤 5.10。大多数 venue 都需要它。“无负面影响”几乎不可信。 |
| 人工评估被批评为薄弱 | 参见步骤 2.5 和 references/human-evaluation.md。报告一致性指标、标注者详情、薪酬。 |
| 审稿人质疑可复现性 | 发布代码(步骤 7.9),记录所有超参数,包括随机种子和计算细节。 |
| 理论论文缺乏直观理解 | 在形式化证明之前,添加带有通俗语言解释的证明概要。参见 references/paper-types.md。 |
| 结果为负面/无效 | 参见第 4.3 阶段关于处理负面结果的内容。考虑研讨会、TMLR,或重新构建为分析文章。 |
参考文档
| 文档 | 内容 |
|---|---|
| references/writing-guide.md | Gopen & Swan 七项原则、Perez 微技巧、Lipton 用词选择、Steinhardt 精确性、图表设计 |
| references/citation-workflow.md | 引用 API、Python 代码、CitationManager 类、BibTeX 管理 |
| references/checklists.md | NeurIPS 16 项检查表、ICML、ICLR、ACL 要求、通用提交前检查表 |
| references/reviewer-guidelines.md | 评估标准、评分、常见关切点、反驳模板 |
| references/sources.md | 所有写作指南、会议指南、API 的完整参考文献列表 |
| references/experiment-patterns.md | 实验设计模式、评估协议、监控、错误恢复 |
| references/autoreason-methodology.md | Autoreason 循环、策略选择、模型指南、提示词、范围约束、Borda 评分 |
| references/human-evaluation.md | 人工评估设计、标注指南、一致性指标、众包质量控制、IRB 指导 |
| references/paper-types.md | 理论论文(证明写作、定理结构)、综述论文、基准论文、立场论文 |
LaTeX 模板
templates/ 中的模板适用于:NeurIPS 2025、ICML 2026、ICLR 2026、ACL、AAAI 2026、COLM 2025。
请参阅 templates/README.md 获取编译说明。
关键外部来源
写作哲学:
- Neel Nanda: How to Write ML Papers
- Sebastian Farquhar: How to Write ML Papers
- Gopen & Swan: Science of Scientific Writing
- Lipton: Heuristics for Scientific Writing
- Perez: Easy Paper Writing Tips
API: Semantic Scholar | CrossRef | arXiv