跳到主要内容

研究论文写作

用于撰写机器学习/人工智能研究论文的端到端流水线——涵盖从实验设计到分析、起草、修订和提交的整个过程。涵盖 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) │
│ │
└─────────────────────────────────────────────────────────────┘

何时使用此技能

在以下情况下使用此技能:

  • 从头开始撰写新的研究论文,基于现有代码库或想法
  • 设计和运行实验以支持论文主张
  • 撰写或修订研究论文的任何部分
  • 准备向特定会议或研讨会投稿
  • 通过额外实验或修订回应评审意见
  • 在不同会议格式之间转换论文
  • 撰写非实证论文——理论、综述、基准测试或立场论文(参见超越实证机器学习的论文类型
  • 为自然语言处理、人机交互或对齐研究设计人工评估
  • 准备录用后的交付物——海报、演讲、代码发布

核心理念

  1. 积极主动。 提供完整的草稿,而不是提出问题。科学家都很忙——提供一些具体的内容供他们反应,然后进行迭代。
  2. 绝不虚构引文。 AI 生成的引文错误率约为 40%。务必以编程方式获取。将无法验证的引文标记为 [CITATION NEEDED]
  3. 论文是一个故事,而不是实验的集合。 每篇论文都需要用一句话陈述一个清晰的贡献。如果你做不到这一点,说明论文尚未准备好。
  4. 实验服务于主张。 每个实验都必须明确说明它支持哪个主张。切勿运行与论文叙事无关的实验。
  5. 尽早提交,频繁提交。 每完成一批实验,每次更新论文草稿——都要附带描述性信息进行提交。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"

加载 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 类。

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

:“有一系列工作使用了 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:汇总结果

编写执行以下操作的分析脚本:

  1. 从批次中加载所有结果文件
  2. 计算每个任务和聚合指标
  3. 生成摘要表格
# 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:确定故事线

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

  1. 主要发现是什么? 用一句话陈述。
  2. 什么让你感到惊讶? 意想不到的结果往往能成就最好的论文。
  3. 什么失败了? 失败的实验可能最具信息量。诚实地报告失败会增强论文的说服力。
  4. 需要哪些后续实验? 结果往往会引发新的问题。

处理负面或无效结果

当你的假设错误或结果不确定时,你有三个选项:

情况行动适合的发表场所
假设错误,但原因具有信息量围绕对原因的分析构建论文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)

  • 使用 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:撰写实验日志(通往写作的桥梁)

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

创建 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-revisesingle passAutoreason 排在最后。模型自我评估能力已足够好。
具体技术任务(系统设计)Critique-and-revise直接的查找并修复循环效率更高。
模板填充任务(唯一正确结构)Single passconservative决策空间最小。迭代不增加价值。
带有测试用例的代码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 循环(摘要)

每一轮由全新的、隔离的代理产生三个候选项:

  1. Critic → 找出当前 incumbent A 中的问题(不进行修复)
  2. Author B → 根据批评意见修订 A
  3. Synthesizer → 合并 A 和 B(标签随机化)
  4. Judge Panel → 3 位盲测思维链(CoT)评委通过博达计数法对 A、B、AB 进行排名
  5. 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聚焦单一贡献各类讲座

如需深入了解上述任何内容,请参阅:

时间分配

在以下各项上花费大致相等的时间

  1. 摘要
  2. 引言
  3. 图表
  4. 其余所有部分合计

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

写作工作流

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.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 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/ 目录中。请参阅 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 放在最后。
  • 检查会议模板是否已加载其中任何宏包(尤其是 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} → “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:修订周期

针对每个关键/高优先级问题:

  1. 确定受影响的具体章节
  2. 起草修复方案
  3. 验证修复不会破坏其他主张
  4. 更新论文
  5. 对照评审员的关切重新检查

步骤 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 → ICML9 → 8删减 1 页,添加更广泛影响声明
ICML → ICLR8 → 9扩展实验部分,添加 LLM 披露
NeurIPS → ACL9 → 8按照 NLP 惯例重构结构,添加局限性章节
ICLR → AAAI9 → 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,而非之前。提前发布可能在技术上违反匿名政策,尽管执行力度各异。
投稿至 ICLRICLR 明确允许在投稿前发布至 arXiv。但不要在投稿文件本身中包含作者姓名。
论文已在 arXiv 上,投稿至新会议大多数会议均接受。切勿在审稿期间更新 arXiv 版本以包含引用审稿意见的更改。
研讨会(Workshop)论文随时可发布至 arXiv——研讨会通常不采用双盲评审。
希望确立优先权如果担心被抢发(scooping),请立即发布——但需接受牺牲匿名性的代价。

arXiv 类别选择(ML/AI 论文):

类别代码适用领域
Machine Learningcs.LG通用机器学习方法
Computation and Languagecs.CL自然语言处理,语言模型
Artificial Intelligencecs.AI推理,规划,智能体
Computer Visioncs.CV视觉模型
Information Retrievalcs.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聚焦的贡献:一个有证据支持的清晰观点
Findings8扎实的工作,但略微未达到主会议标准

短论文策略:选择一个主张并 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 工具参考

工具在此流水线中的用法
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论文编辑、实验脚本、结果文件。对大型 .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)

使用 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")                           # 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.mdGopen & Swan 七项原则、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