机器学习论文写作理念与最佳实践
本指南汇集了Neel Nanda、Andrej Karpathy、Sebastian Farquhar、Zachary Lipton和Jacob Steinhardt等知名机器学习研究者的写作建议。
目录
叙事原则
来自Neel Nanda的观点
“论文是一个简短、严谨、基于证据的技术性故事,其中必须包含读者关心的核心结论。”
在引言部分结束时,这一叙事应建立在三个明确的支柱之上:
“是什么”:1到3个符合统一主题的具体创新观点。诸如“我们研究了X”这类模糊的贡献会立即被否定——审稿人需要的是具体且可验证的论点。
“为什么”:能够有力支撑这些论点的严谨实证证据,包括经过认真调整的强基线方法,以及能够区分不同假设的实验结果,而不仅仅是展示“不错的效果”。
“那又怎样”:为何读者应该关注你的工作,即如何将你的贡献与学术界公认的重要问题联系起来。
来自Andrej Karpathy的观点
“论文并非你报告的实验结果的随意集合。它要传达的是某种此前并不明显或不存在的新事物。整篇论文都应以这种核心贡献为轴心,以极高的精准度进行组织。”
无论你是提出一种新架构、一个理论成果,还是对现有方法的更深入理解,这一原则都适用——NeurIPS明确指出,“创新性并不一定要求完全全新的方法”。
实际意义:如果你无法用一句话概括你的贡献,那就说明你还没有形成一篇完整的论文。其余所有内容——实验、相关研究、讨论——都只是为了支撑那个核心论点而存在。
时间分配
来自Neel Nanda的观点
建议在以下各部分投入大致相等的时间:
- 摘要
- 引言
- 图表
- 其余所有内容之和
这并非夸张——大多数审稿人在阅读到方法部分之前就已经形成了初步判断。读者阅读论文的顺序通常是固定的:标题 → 摘要 → 引言 → 图表 → 可能再阅读其余部分。
审稿人的阅读习惯
对审稿人行为的研究表明:
- 100%的审稿人会阅读摘要
- 90%以上的审稿人只会粗略浏览引言
- 大多数审稿人会在阅读方法部分之前先查看图表
- 只有在产生兴趣后,才会完整阅读方法部分的内容
启示:将论文的核心价值放在前面。不要把最重要的贡献藏在后面。
摘要写作公式
Sebastian Farquhar的5句公式
- 你的成果是什么:“我们提出了……”、“我们证明了……”、“我们展示了……”
- 为何这项工作既困难又重要
- 你是如何实现这一目标的(使用相关专业术语以提高可被发现性)
- 你拥有哪些证据
- 最引人注目的数据或结果
示例(优秀摘要)
We prove that gradient descent on overparameterized neural networks
converges to global minima at a linear rate. [What]
This resolves a fundamental question about why deep learning works
despite non-convex optimization landscapes. [Why hard/important]
Our proof relies on showing that the Neural Tangent Kernel remains
approximately constant during training, reducing the problem to
kernel regression. [How with keywords]
We validate our theory on CIFAR-10 and ImageNet, showing that
predicted convergence rates match experiments within 5%. [Evidence]
This is the first polynomial-time convergence guarantee for
networks with practical depth and width. [Remarkable result]
应避免的内容
摘自 Zachary Lipton 的建议:“如果某句话可以加在所有机器学习论文的开头,那就把它删掉。”
请删除以下这类开头句:
- “大型语言模型已取得了令人瞩目的成就……”
- “深度学习彻底改变了……”
- “近年来,神经网络已经……”
直接从你具体的贡献内容写起即可。
引言结构
要求
- 最多1-1.5页(采用双栏格式)
- 方法部分应从第2-3页开始
- 必须包含2-4个以项目符号列出的贡献点(每个点最多1-2行)
结构模板
1. Opening Hook (2-3 sentences)
- State the problem your paper addresses
- Why it matters RIGHT NOW
2. Background/Challenge (1 paragraph)
- What makes this problem hard?
- What have others tried? Why is it insufficient?
3. Your Approach (1 paragraph)
- What do you do differently?
- Key insight that enables your contribution
4. Contribution Bullets (2-4 items)
- Be specific and falsifiable
- Each bullet: 1-2 lines maximum
5. Results Preview (2-3 sentences)
- Most impressive numbers
- Scope of evaluation
6. Paper Organization (optional, 1-2 sentences)
- "Section 2 presents... Section 3 describes..."
贡献要点:优秀与糟糕的差异
优秀表现:
- 我们在假设Y的前提下,证明了X能在O(n log n)时间内收敛
- 我们提出了Z这种三层架构,使内存占用降低了40%
- 我们证明在基准测试C中,A的性能比B高出15%
糟糕表现:
- 我们研究了X问题(但这并非实质性贡献)
- 我们提供了大量实验数据(但描述过于模糊)
- 我们为该领域做出了多项贡献(却未具体说明)
句子层面的清晰度表达
源自George Gopen与Judith Swan的《科学写作的科学》
George Gopen和Judith Swan在1990年发表的这篇开创性论文指出,读者对散文中信息的呈现位置有固定的结构预期。若违背这些预期,读者就会将精力花费在结构梳理上,而非内容理解上。
“如果读者要理解作者的意图,作者就必须明白读者的需求。”
读者预期的7项原则
原则1:主谓靠近
将语法上的主语和谓语放得尽可能接近。介于两者之间的内容会被视为次要干扰信息。
表达不佳:“该模型在1亿个标记上进行了训练,并使用秩为16的LoRA技术在领域特定数据上进行了微调,最终取得了最先进的性能。”
表达优化:“该模型在1亿个标记上训练完毕,并通过秩为16的LoRA技术进行微调后,便达到了最先进的性能水平。”
原则2:重音位置(重要信息放最后)
读者会自然而然地强调句子的最后一个词。因此应将最重要的信息放在此处。
表达不佳:“使用注意力机制时,准确率能提升15%。” 表达优化:“使用注意力机制时,准确率可提升15%。”
原则3:主题位置(重要内容置首)
句子的开头决定了论述视角。应首先说明“谁的故事”,因为读者预期句子内容会围绕最先出现的人物展开。
表达不佳:“我们提出了一种用于计算对齐分数的新型注意力机制。” 表达优化:“为了解决对齐问题,我们引入了一种新型的注意力机制。”
原则4:旧信息在前,新信息在后
将熟悉的信息(旧信息)放在主题位置,以便建立前后关联;将新信息放在重音位置,以突出其重要性。
表达不佳:“Child等人提出了稀疏注意力机制。标准注意力的二次复杂度促使他们开展了这项工作。” 表达优化:“标准注意力的复杂度为二次方。为了解决这一问题,Child等人提出了稀疏注意力机制。”
原则5:一个单元,一个功能
每个论述单元(句子、段落、章节)都应承担单一功能。如果有两个观点,就使用两个独立的单元。
原则6:用动词表达动作
应在句子的动词中体现动作,而非使用名词化表达。
表达不佳:“我们对结果进行了分析。”(名词化表达) 表达优化:“我们分析了这些结果。”(动词直接表达动作)
原则7:新信息前先提供背景
在要求读者理解新内容之前,必须先给出相关背景。这一原则适用于所有层面——句子、段落、章节。
表达不佳:“方程3表明,当学习率满足……条件时,收敛性是有保障的。” 表达优化:“为确保收敛性,学习率必须满足方程3中的条件……”
总结表
| 原则 | 规则 | 记忆口诀 |
|---|---|---|
| 主谓靠近 | 保持主语与谓语相邻 | “别打断自己” |
| 重音位置 | 重要信息放在句尾 | “好东西留到最后” |
| 主题位置 | 句首先给出背景 | “重要的事先说” |
| 旧信息在前 | 先讲熟悉内容,再讲新内容 | “在已知基础上构建” |
| 一个单元,一个功能 | 每个段落表达一个观点 | “每个容器只装一个想法” |
| 动词表达动作 | 使用动词,避免名词化 | “动词负责行动,名词仅作描述” |
| 新信息前先提供背景 | 先解释,再引入新内容 | “先铺垫,再呈现” |
微观层面的写作技巧
源自Anthropic的Ethan Perez
这些实用的微观技巧有助于提升句子和单词层面的清晰度。
代词的使用管理
尽量减少代词(如“this”、“it”、“these”、“that”)。若必须使用代词,应将其作为形容词与名词搭配使用:
表达不佳:“这表明模型能够收敛。” 表达优化:“这一结果表明模型能够收敛。”
表达不佳:“它能提升性能。” 表达优化:“这种修改能够提升性能。”
动词的位置安排
将动词放在句子的开头,有助于提高文本的可解析性:
表达不佳:“在计算并归一化梯度之后,该梯度会更新权重。” 表达优化:“梯度在计算并归一化之后,会用于更新权重。”
括号内所有格的展开
为提升清晰度,可将所有格结构展开:
原形式:“X’s Y” → 展开形式:“The Y of X”
修改前:“该模型在测试集上的准确率” 修改后:“该模型在测试集上的准确率”
虽然并非总是更好,但当句子读起来别扭时,可以尝试展开表达。
应删除的词汇
在几乎所有情况下都应删除以下填充词:
- “actually”(实际上)
- “a bit”(有点)
- “fortunately” / “unfortunately”(幸运的是/不幸的是)
- “very” / “really”(非常/真的)
- “quite”(相当)
- “basically”(基本上)
- “essentially”(本质上)
- 过多的连接词(如非必要情况下的“however”、“moreover”、“furthermore”)
句子构建规则
- 每个句子表达一个想法——如果难以用一句话表达某个观点,那就分成两句。
- 避免重复发音——同一句子中不要出现发音相似的单词。
- 每句话都要提供新信息——删除那些仅重复已有内容的句子。
- 始终使用主动语态——明确指出执行动作的主体(“我们发现……”而非“它被发现……”)。
- 展开缩写形式——为体现正式性,将“don’t”改为“do not”。
段落结构
- 第一句:清晰阐述段落核心观点。
- 中间句子:用证据支持该观点。
- 最后一句:强化观点或实现过渡。
切勿将关键信息藏在段落的中间部分。
用词精准度
源自Zachary Lipton
除非确实存在不确定性,否则应避免使用模糊表述:
- 除非必要,否则删除“may”和“can”这类词。
- “提供非常精确的近似值”会显得缺乏自信。
- “提供精确的近似值”则显得十分笃定。
避免使用空洞的强化词:
- 删除:very、extremely、highly、significantly(除非用于统计语境)。
- 这些词传达的是不确定感,而非优势。
源自Jacob Steinhardt
追求精准而非简洁:用具体词汇替代模糊表述。
| 模糊表达 | 具体表达 |
|---|---|
| performance | accuracy(准确率)、latency(延迟)、throughput(吞吐量) |
| improves | accuracy提升X%,延迟降低Y% |
| large | 10亿个参数、1亿个标记 |
| fast | 速度提升3倍、延迟为50毫秒 |
| good results | 准确率为92%,F1值为0.85 |
术语一致性:对同一概念使用不同术语会造成混淆。
选定一个并始终如一地使用:
- “model”(模型)、“network”(网络)、“architecture”(架构)
- “training”(训练)、“learning”(学习)、“optimization”(优化)
- “sample”(样本)、“example”(示例)、“instance”(实例)
词汇的表意功能
避免使用暗示只是微小改进的词汇:
- 绝对不要使用:“combine”(结合)、“modify”(修改)、“expand”(扩展)、“extend”(延伸)。
- 应改为:“develop”(开发)、“propose”(提出)、“introduce”(引入)。
原因:“我们结合了X和Y”听起来像是把两个现有想法简单拼凑在一起。而“我们开发了一种利用X来实现Y的方法”则体现出真正的贡献价值。
数学写作规范
源自Ethan Perez
为提升清晰度,应展开括号内的所有格结构:
- 表达不佳:“X’s Y”
- 表达优化:“The Y of X”
例如:“the model’s accuracy”可改为“the accuracy of the model”。
通用原则
- 在定理之前,正式列出所有假设条件。
- 在证明的同时,提供直观的解释。
- 在整篇论文中保持符号使用的一致性。
- 首次出现符号时即给出定义。
符号规范惯例
% Scalars: lowercase italic
$x$, $y$, $\alpha$, $\beta$
% Vectors: lowercase bold
$\mathbf{x}$, $\mathbf{v}$
% Matrices: uppercase bold
$\mathbf{W}$, $\mathbf{X}$
% Sets: uppercase calligraphic
$\mathcal{X}$, $\mathcal{D}$
% Functions: roman for named functions
$\mathrm{softmax}$, $\mathrm{ReLU}$
图表设计
作者:Neel Nanda
即便读者跳过文字内容,图表也应能够传达连贯的故事。事实上,许多读者在开始时确实会直接跳过文字。
设计原则
- 图表1至关重要:它通常是读者在阅读摘要后首先查看的内容
- 独立的图注:即使没有正文,读者也应能理解图表含义
- 图表内不得出现标题:该功能由图注承担(ICML/NeurIPS规范)
- 矢量图形格式:曲线图应使用PDF/EPS格式,照片则仅可使用PNG格式且分辨率需达到600 DPI
无障碍要求
8%的男性存在色觉缺陷。您的图表必须能够满足他们的阅读需求。
解决方案:
- 使用适合色盲人群的配色方案:Okabe-Ito或Paul Tol方案
- 避免使用红绿组合色
- 确认图表在灰度模式下仍能正常显示
- 除颜色外,还可使用不同的线条样式(实线、虚线、点线)
工具
# SciencePlots: Publication-ready styles
import matplotlib.pyplot as plt
plt.style.use(['science', 'ieee'])
# Or for Nature-style
plt.style.use(['science', 'nature'])
需避免的常见错误
结构方面的错误
| 错误 | 解决方案 |
|---|---|
| 引言过长(超过1.5页) | 将背景内容移至“相关研究”部分 |
| 方法描述过晚(出现在第3页之后) | 将核心贡献放在开头,精简引言 |
| 缺少具体的贡献说明 | 添加2-4条具体且可验证的论点 |
| 实验部分未明确说明测试目标 | 明确指出每个实验要验证的内容 |
撰写方面的错误
| 错误 | 解决方案 |
|---|---|
| 摘要开头过于笼统 | 从具体的贡献内容入手 |
| 术语使用不一致 | 每个概念统一使用一个术语 |
| 过度使用被动语态 | 使用主动语态,例如用“我们证明了”而非“有研究证明了” |
| 到处使用含糊表述 | 除非确实不确定,否则应表达自信 |
图表方面的错误
| 错误 | 解决方案 |
|---|---|
| 图表使用光栅图形 | 改用矢量格式(PDF/EPS) |
| 颜色方案为红绿对比 | 使用对色盲友好的配色方案 |
| 图表内直接标注标题 | 将标题放在图注中 |
| 图注依赖正文内容 | 确保图注能够独立成文 |
引用方面的错误
| 错误 | 解决方案 |
|---|---|
| “相关研究”部分逐篇列举论文 | 按方法论维度进行分类 |
| 缺少相关引用 | 参考审稿人发表的论文,广泛引用 |
| 使用AI生成的引用信息 | 必须通过API进行核实 |
| 引用格式不一致 | 使用BibLaTeX并保持引文键的一致性 |
提交前的检查清单
在提交之前,请确认以下内容:
内容表述:
- 能够用一句话概括核心贡献
- 引言部分清晰体现“做什么/为什么做/有何意义”这三个要点
- 每个实验都对应一个具体的论点
结构安排:
- 摘要遵循5句话的结构
- 引言长度不超过1.5页
- 方法部分从第2-3页开始
- 包含2-4条具体的贡献说明
- 有专门的局限性分析章节
写作风格:
- 全文术语使用一致
- 没有笼统的开场句
- 除非必要,否则去掉含糊表述
- 所有图表都配有独立的图注
技术细节:
- 所有引用信息均通过API核实
- [ | 方法部分包含误差范围说明
- 记录了计算资源的使用情况
- 明确说明了代码和数据的获取方式