Anthropic 工程博客 · 中文学习笔记Anthropic 工程笔记

    顺序很重要:把序列到序列模型扩展到集合

    Order Matters: Sequence to sequence for sets

    Day 16 · 补完 原论文发布:2015-11-19 发表:ICLR 2016 阅读约 8 分钟 原论文链接 ↗ 30u30 单元 ↗
    作者
    Oriol Vinyals, Samy Bengio, Manjunath Kudlur
    依据版本
    arXiv v4
    30u30 单元
    16_order_matters(讲解、实现与练习请到原仓库查看,本站不翻译、不改编,见导读)
    ⚠️ arXiv 首版 2015-11-19,现行为第 4 版(2016-02-23)。PDF 页眉写明“Published as a conference paper at ICLR 2016”,arXiv 页面的备注却写“ICLR 2015”,此处以 PDF 为准。本笔记依据现行版本撰写。
    本页目录(17)
    1. 一句话总结
    2. 解决什么问题
    3. 核心思想
    4. 1. 输入顺序会影响结果
    5. 2. 读取—处理—写出(Read-Process-and-Write)
    6. 3. 输出顺序也会影响结果
    7. 4. 训练时搜索输出顺序
    8. 关键公式或机制
    9. 处理块的注意力(论文式 3–7)
    10. 排序实验(论文表 1)
    11. 5-gram 顺序搜索(论文表 2)
    12. 图解
    13. 关键原话
    14. 和 Anthropic 笔记的对应
    15. 读的时候要注意
    16. 30u30 对应单元
    17. 延伸阅读

    一句话总结#

    数据没有天然顺序时,喂给模型和让模型输出的顺序依然会影响学习效果;输入集合可以用“反复注意力读取”来得到与顺序无关的编码,输出集合可以让模型在训练中自己挑一个好学的顺序。

    解决什么问题#

    seq2seq 框架用链式法则把输出序列的联合概率拆成逐个生成:

    P(Y | X) = ∏_t P(y_t | y_1, …, y_{t−1}, X)

    编码器 RNN 逐个读入 x,解码器 RNN 逐个生成 y。数据本身是序列(比如句子)时,这样做很自然。但很多问题的输入或输出其实是集合:

    • 排序任务的输入是一组数字,应该按什么顺序读进去?
    • 图片里检测到的物体没有固定顺序,应该按什么顺序输出?
    • 一组随机变量的联合分布,应该按什么顺序套用链式法则?

    论文有两个目标:先用实验说明“即使没有天然顺序,也可能存在一个效果更好的顺序”,即顺序很重要;再分别给出处理输入集合和输出集合的方法。

    核心思想#

    1. 输入顺序会影响结果#

    论文先汇总了此前的观察:

    • 机器翻译中把英文源句倒过来输入,Sutskever 等人(2014)得到 5.0 BLEU 的提升。
    • 成分句法分析中同样倒序输入,F1 绝对提升 0.5%。
    • 凸包任务中先把点按角度排序,问题从 O(n log n) 变成 O(n),模型训练更快、更准,最难的情况下准确率最多提高 10 个百分点。

    RNN 理论上是通用逼近器,顺序不该有影响。作者认为原因在于非凸优化,以及某些顺序提供了更合适的先验。

    2. 读取—处理—写出(Read-Process-and-Write)#

    输入是集合时,编码必须满足:交换任意两个元素,表示不变。最简单的做法是把各元素的嵌入相加(词袋),但作者认为这样不论集合多大都只用固定维度的向量,表示能力有限:编码长度为 T 的集合所需的记忆应该随 T 增长。

    论文的结构分三块:

    • 读取:同一个小网络把每个元素 x_i 嵌入成记忆向量 m_i。
    • 处理:一个没有输入也没有输出的 LSTM,做 T 步计算,每步用基于内容的注意力读一遍全部记忆。因为注意力读出的是加权和,打乱记忆的顺序不改变读出结果,所以最终状态与输入顺序无关。
    • 写出:一个指针网络(见 Day 18),每步指向一个输入元素。作者还在每次指向之前加了一次额外的注意力读取,称为 glimpse。

    作者指出这个结构可以看成神经图灵机或记忆网络的一个特例。

    3. 输出顺序也会影响结果#

    • 语言建模(PTB):按自然顺序和完全倒序训练,验证集困惑度都是 86;把每 3 个词倒过来这种打乱结构的顺序,困惑度升到 96,训练困惑度也高 10 点。
    • 句法分析:把句法树按深度优先线性化,F1 89.5%;按广度优先,F1 只有 81.5%,而且解码器常常生成不合法的树。
    • 组合问题:排序的输出如果允许任意 n! 种排列,模型就得把概率平均分给所有等价答案,统计效率很低;n 只有 5 时也达不到固定顺序的效果。
    • 图模型:构造“星形”随机变量组(一个中心变量,其余都依赖它)。训练数据足够多(20000)或分布几乎确定时,哪种顺序都学得会;其余情况下,先输出中心变量总是更容易学。

    4. 训练时搜索输出顺序#

    既然存在更好学的顺序,就让模型在训练中自己选:

    θ* = argmax_θ Σ_i max_{π(X_i)} log p(Y_{π(X_i)} | X_i; θ)

    直接取最大值有两个问题:n! 太大;而且模型会锁死在初始化时偶然偏好的顺序上,因为训练会不断强化它。作者的办法:

    • 先用均匀分布的顺序预训练 1000 步(把 max 换成对所有顺序求和);
    • 之后按与 p(Y_π | X) 成正比的概率采样一个顺序,用祖先采样只需评估一次模型,代价从 O(n!) 降到 O(1)。

    关键公式或机制#

    处理块的注意力(论文式 3–7)#

    • q_t = LSTM(q*_{t−1})
    • e_{i,t} = f(m_i, q_t)(如点积)
    • a_{i,t} = softmax_i(e_{i,t})
    • r_t = Σ_i a_{i,t} m_i
    • q*_t = [q_t, r_t]

    排序实验(论文表 1)#

    任务:给 N 个 0 到 1 之间的随机浮点数,输出排好序的索引;按整体是否全部排对计算准确率。

    • 不做处理步骤(P = 0)时,基线(LSTM 编码 + 指针网络)比新结构好;只要允许至少 1 步处理,新结构就反超,且步数越多越好。
    • N = 5、带 glimpse 时:基线 90%,P = 10 步 94%。N = 10 时分别是 28% 和 50%(P = 5 步时最高,57%)。N = 15 时所有模型都在 10% 以下。
    • glimpse 对基线和新结构都有明显帮助,最难的情况下准确率翻倍不止。

    5-gram 顺序搜索(论文表 2)#

    把 5 个词带上位置编号变成集合。固定用自然顺序训练,验证困惑度 225;固定用 (5, 1, 3, 4, 2),困惑度 280。让模型在两种顺序中自己选(Easy)或在全部 5! 种中选(Hard),最后困惑度都是 225,Hard 情况下模型停在自然顺序、完全倒序及其小变体上。

    图解#

    flowchart LR
        X["输入集合 x_1 … x_n"] --> R["读取:同一个小网络嵌入成记忆 m_i"]
        R --> P["处理:无输入 LSTM,T 步注意力读取全部记忆"]
        P --> Q["与顺序无关的表示 q*_T"]
        Q --> W["写出:指针网络 + glimpse"]
        W --> Y["逐步指向输入元素"]

    图解:读取块把每个元素嵌入成记忆,处理块用注意力反复读取记忆得到与顺序无关的表示,写出块用指针网络逐个指向输入元素。

    关键原话#

    “we show that order matters to obtain the best performance.”

    和 Anthropic 笔记的对应#

    Anthropic 笔记对得上的地方
    面向 AI 智能体的上下文工程本文说明,即使信息内容相同,呈现的顺序也会影响模型学得好不好。上下文工程同样关心把什么信息、以什么结构放进上下文,而不只是放进去多少。只是类比:本文讨论训练时的数据顺序,那篇讨论推理时的上下文。
    为智能体编写工具本文发现约束输出的等价类(比如固定从编号最小的城市出发)能显著加快学习。那篇也建议工具的返回格式要清晰、少歧义,让模型更容易用对。

    读的时候要注意#

    • “顺序很重要”主要是经验结论:作者把原因归于非凸优化和参数化方式,没有给出理论证明。
    • 论文中的措辞小问题:5-gram 实验里,困惑度从 225 变成 280 是变差,原文却写成“drops”,读的时候以表 2 的数字为准。
    • 实现细节当时未公开:论文说读取—处理—写出的精确公式和实现会在附录中给出,arXiv 现行版本中没有找到这个附录(待核实)。
    • 排序实验规模很小:N = 15 时所有模型几乎都失败,说明这个结构还远不能真正“学会排序”。
    • 后续发展:与顺序无关的集合编码后来在 Transformer 等结构中更常见(待核实:本笔记未打开相关论文,只作提示)。

    30u30 对应单元#

    • 30u30 的 Day 16 单元↗(仓库采用 CC BY-NC-ND 4.0,本笔记没有使用其内容)。
    • 路线位置:30u30 导读 的补完段,单元 3(建议在 P2 之后读)。

    延伸阅读#


    本笔记依据 2026-10-18 抓取的在线原文撰写,仅为导读与总结。原文:Oriol Vinyals, Samy Bengio, Manjunath Kudlur,《Order Matters: Sequence to sequence for sets》, ICLR 2016。

    本页目录