智能AI
morning
你本可以发明Transformer?9年前论文就有线索?斯坦福博士这篇博客火了
摘要
机器之心编辑部 如果 2017 年那篇《Attention Is All You Need》从未发表,给你一个问题:「如何让机器记住尽可能多的东西,并且想取哪条就取哪条」,你能 从零开始,把 Transformer 一层一层地推导出来吗 ? 很多人可能觉得一头雾水。10 月 15 日,斯坦福大学计算机科学博士、前 Cartesia 研究科学家 Alex Wang 发表了一篇博客《 You coul...
Attention
Transformer
MLP
You
Alex
2017
All
Need
Wang
memory
2026-10-18
1 阅读
约10分钟阅读
机器之心
字号:
机器之心编辑部 如果 2017 年那篇《Attention Is All You Need》从未发表,给你一个问题:「如何让机器记住尽可能多的东西,并且想取哪条就取哪条」,你能 从零开始,把 Transformer 一层一层地推导出来吗 ? 很多人可能觉得一头雾水。10 月 15 日,斯坦福大学计算机科学博士、前 Cartesia 研究科学家 Alex Wang 发表了一篇博客《 You could have invented transformers from memory 》(你本可以凭「记忆」发明 Transformer),迅速在社交媒体引发关注。 正如标题所展示的,这篇文章做了一件很「野心勃勃」的事:它提出一个统一的理解视角 —— 我们熟悉的神经网络层,可以被看作不同形式的「联想记忆存储器」 。 线性层、MLP、自注意力,看似差异很大的三种结构,其实都可以从「存记忆、取记忆」的角度理解。衡量它们记忆能力的关键指标,是信息之间的干扰:存储的记忆越多,彼此干扰越严重。谁能在干扰淹没目标信号之前装下更多记忆,谁的「容量」就越大。 沿着这个思路,作者像搭积木一样完成了一次有趣的推导:从最朴素的外积记忆出发,引入非线性激活,就自然「长」出了 MLP;进一步提高非线性程度,又与 GLU 等门控结构建立了联系。 而当你想要「用上所有幂次」来压制干扰时,指数函数登场了。经过归一化处理,便得到了 Softmax,自注意力的数学形式也随之浮现。 效果差异是可以量化的。在作者设定的随机记忆实验中,同样使用 64 维的 Key,最简单的线性存储器容量约为 64 条,平方 ReLU 构成的 GLU 式 MLP 能存储约 2700 条,而采用固定缩放系数的 Self-Attention,理论容量达到约 120 万条。 从 64 到 120 万,容量差了近两万倍。当然,这里的容量对应的是理想化条件下的随机向量记忆任务,并不意味着真实的 Transformer 能记住比 MLP 多两万倍的知识。 更有意思的是,Transformer 中著名的 1/d_k 缩放因子,以及 Qwen 的 LogN-Scaling、YaRN 等长上下文扩展方法采用的注意力缩放策略,也能从记忆干扰的角度得到解释。 而这篇文章与 2017 年 Transformer 原始论文之间,还有一段鲜为人知的联系。Alex Wang 发现,《Attention Is All You Need》的早期 arXiv 版本中,研究者就曾将前馈网络描述为一种特殊的 Attention,甚至尝试用基于可学习 Key-Value 参数的 Attention 替换前馈层,取得了相近的机器翻译效果。但这段讨论后来从论文中消失了。 九年之后,Alex Wang 重新拾起了这条线索,将线性层、MLP 和 Self-Attention 串联到同一个数学框架中。如果说 2017 年的《Attention Is All You Need》让 Transformer 成为深度学习的主流架构,那么这篇博客则邀请读者换一个角度,重新理解这些核心组件为何有效。 从记忆这个古老的问题出发,那些看似各自独立的神经网络设计,原来可以沿着同一条思路被重新推导出来。 社区的反馈很能说明问题。一位 HN 读者感叹:「真希望 13 年前上那些枯燥的 MLP 课程时,就有人这样讲。」 另一位读者指出,softmax 通过压制弱激活来提升记忆容量的解释「极其清晰且有趣」。还有一位通信工程师发现了奇妙的呼应:干扰信噪比、信道容量,这些通信领域的老概念,原来可以直接用来理解 AI。 当然,也有严谨的讨论:有评论提醒,「注意力即记忆检索」只是一个有用的类比,并不能完全解释训练动态,作者本人也坦然承认这一点。但正如他所言,理解神经网络的「记忆」如何工作,可能是通向可解释性的一把钥匙(Alex 在此处转发了 OpenAI 可解释团队创建人 Nick Cammarata 前两天的一篇长文,参见《 神经网络可解释性被 AI 解决了?90% 神经元只有一个功能 》)。 那么,这篇文章具体是如何一步步从「记忆」推导出 Transformer 的?下面我们进入正文。 博客链接:https://alexwang.ai/posts/associative-memory/ 从记忆出发, 你本可以发明Transformer 从记忆中提取某个角色。记忆数量越多,回忆效果越差。 如今,大语言模型能够回忆起世界各个角落的冷门知识。最近有一次,我赶着参加朋友的桌游之夜,快要迟到了,于是请 Astra 帮我回顾《沙丘:帝国》的规则。它欣然在我开车前往的途中讲解规则,帮我回忆到足以再次上手的程度。我们已经习惯了什么都向模型询问,以至于把它们渊博的知识视为理所当然。 模型是如何记住这么多信息的?它们又能存储多少信息? 本文将介绍一种直观的视角,把线性映射、MLP 和自注意力看作不同类型的记忆存储器。从这种直觉出发,我们可以推导出一些启发式估计,判断每一层能存储多少记忆。 衡量一个记忆存储器是否「好」的关键,在于它能否回忆起所存储的内容。毕竟,即使我们能够存储无限多的事实,如果需要时无法回忆起来,也没有多大帮助。存储的记忆越多,在尝试回忆其中一条时,它们相互之间的干扰就越强。 因此,本文将始终关注一个量:干扰信号比,它衡量回忆过程中其他记忆造成的干扰有多大。在干扰增大到与信号同样强之前,存储器能够容纳的记忆数量,就是它的容量。 我们将逐步展开这一视角,展示如何从线性层出发,得到更好的结构 —— 同时改善容量和回忆效果的 MLP,再一路走向自注意力。自注意力的回忆效果非常好,能够存储的记忆数量还可能没有上限。对于 64 维的键,这意味着记忆数量从大约 64 条,跃升到大约 2700 条,再到超过一百万条。 下面是全文使用的术语。记忆存储器是一个函数 𝑓,其中保存了 𝑀 条记忆,编号为 𝑖 =1,…,𝑀。一条记忆就是一个键值对:键 用于根据相似度进行查找,值 则是我们希望检索的内容。使用 𝑓 时,我们以输入 𝑥 对其进行查询,它会回忆出输出 𝑓(𝑥)。好的记忆存储器在我们用 𝑘_𝑖 或与 𝑘_𝑖 相似的另一个向量查询时,能够回忆出 𝑣_𝑖。在本文中,这种基于相似度进行回忆的记忆存储器称为联想记忆。 外积记忆存储器 最基本的记忆存储器是线性的:它只是通过外积累积记忆, 其中, 和 的各行分别是键 和值 。 要存储一条新记忆 (𝑘,𝑣),只需将 加到已有权重上。 补充:一步梯度下降就是写入一条记忆 考虑一个具有标量损失 𝐿 的网络中的线性层 𝑦 =𝑊𝑥,令 为损失相对于该层输出的梯度。相对于 𝑊 的梯度是 ,因此,学习率为 𝜂 的一步更新为 这个递推式就是一次记忆更新:它用一条键为 𝑥、值为 的新记忆更新权重。关于这一视角的更多内容,参见 Irie、Csordás 与 Schmidhuber 的研究( https://arxiv.org/abs/2202.05798 );他们将经梯度下降训练的线性层表示为对其全部训练输入的注意力。 要用输入 𝑥 查询记忆存储器,我们将输入乘以该矩阵: 因此,回忆就是按照与已存储键的相似度进行查找:将查询与每一个
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱