Attention Is All You Need:一篇论文,改变了整个世界
先讲一个场景。2017年谷歌大脑的一间办公室。八个研究员围坐在一起。他们在讨论一个问题现有的翻译模型为什么总是翻译得不够好长句子翻译到后面前面的意思就丢了。复杂的语法结构翻译出来总是别扭。有没有更好的办法其中一个研究员阿希什·瓦斯瓦尼提出了一个想法“我们能不能完全抛弃现有的架构从头开始”其他人面面相觑。这个想法太激进了。但他们决定试一试。几个月后他们写出了一篇论文。题目叫《Attention Is All You Need》注意力就是你需要的一切。这篇论文只有15页。但它改变了人工智能的历史。改变了程序员的工作方式。甚至改变了整个世界。在这篇论文之前世界是什么样的翻译是一个古老的难题机器翻译是人工智能最早的研究方向之一。1954年IBM 和乔治城大学做了一个演示。用计算机把60个俄语句子翻译成英语。研究者们信心满满地预测三到五年内机器翻译问题将被彻底解决。结果他们又错了。这个问题比任何人想象的都要难得多。语言不是简单的词对词的替换。“我吃了一个苹果。”不是把每个词换成对应的英文词就完事了。语法结构不同词序不同文化背景不同。翻译需要理解整个句子的意思然后用另一种语言重新表达这个意思。这对机器来说极其困难。RNN序列处理的主流方案在 Transformer 出现之前处理语言这种序列数据主流方案是 RNN。循环神经网络。RNN 的工作方式很像人类阅读。一个词一个词地读读每个词的时候把前面读过的内容存在记忆里。句子我 今天 去 了 超市 买 了 苹果 RNN 处理过程 读我 → 记忆[我] 读今天 → 记忆[我, 今天] 读去 → 记忆[我, 今天, 去] 读了 → 记忆[我, 今天, 去, 了] ...以此类推这个方法有效但有一个致命的问题记忆会衰减。句子越长前面的信息越容易被遗忘。就像你读一本很厚的书读到第500页第1页说了什么已经记不清了。这个问题有一个专业的名字长程依赖问题。LSTM打了补丁但问题依然存在为了解决长程依赖问题研究者们发明了 LSTM。长短期记忆网络。LSTM在 RNN 的基础上加了一个记忆门。它能选择性地记住重要的信息遗忘不重要的信息。就像你读书会在重要的地方折一个角做个标记。LSTM比 RNN 好多了。但它还是没有从根本上解决问题。而且LSTM 有另一个问题无法并行计算。因为它是一个词一个词地处理必须等前一个词处理完才能处理下一个词。就像流水线上只有一个工人一件一件地做效率极低。这意味着训练速度很慢无法处理超大规模的数据。这限制了模型的规模也限制了模型的能力。注意力机制一个古老的想法注意力机制不是 Transformer 发明的。它早就存在了。人类的注意力人类的注意力是有选择性的。你在看这篇文章的时候你的眼睛不是均匀地扫描每一个字。你会自动地把注意力集中在重要的词上。“这篇论文改变了人工智能的历史。”你的注意力会集中在改变、“人工智能”、历史这几个词上。“了”、的这些词你几乎不会注意。这种选择性的注意力让人类能高效地处理信息。机器的注意力2014年研究者们把这个想法引入了机器翻译。他们发现在翻译一个词的时候不需要平等地对待源语言的每一个词。应该把更多的注意力放在相关的词上。翻译我喜欢吃苹果 → I like eating apples 翻译apples的时候 苹果 → 高注意力直接对应 吃 → 中等注意力动作对象 喜欢 → 低注意力 我 → 低注意力这个想法让翻译质量大幅提升。但当时注意力机制只是 RNN 的一个附加组件。RNN 还是主体注意力只是辅助。直到2017年那八个谷歌研究员提出了一个更激进的想法把 RNN 完全扔掉只用注意力机制。这就是 Transformer。Transformer注意力就是一切核心思想Transformer 的核心思想用一句话概括处理每一个词的时候同时关注句子里所有其他的词根据相关性决定给予多少注意力。听起来简单但这个想法有多深刻让我们用一个例子来感受。句子银行的利率上涨了我去河边的银行钓鱼。 处理第一个银行时 关注利率 → 高注意力金融相关 关注上涨 → 中等注意力 关注河边 → 低注意力 关注钓鱼 → 低注意力 → 判断这个银行是金融机构 处理第二个银行时 关注利率 → 低注意力 关注河边 → 高注意力地理相关 关注钓鱼 → 高注意力活动相关 → 判断这个银行是河岸同一个词在不同的语境下通过注意力机制得到了不同的理解。这解决了词向量无法区分语境的问题。自注意力句子理解自己Transformer 里最关键的机制叫自注意力。Self-Attention。句子关注自己。每一个词同时关注句子里的所有词包括自己。通过这种方式每个词都能获得整个句子的上下文信息。具体怎么做每个词被转化成三个向量Query查询我想找什么Key键我有什么Value值我的内容是什么计算注意力的过程 1. 用当前词的 Query和所有词的 Key计算相似度。 相似度越高说明这两个词越相关。 2. 把相似度转化成注意力权重用 Softmax 函数。 权重之和为1相关的词权重高不相关的词权重低。 3. 用注意力权重对所有词的 Value 加权求和。 得到当前词的新表示融合了整个句子的信息。这个过程对句子里的每一个词同时进行。不需要一个词一个词地处理。可以并行计算。这解决了 RNN 无法并行的问题。多头注意力从多个角度看Transformer 还有一个创新多头注意力。Multi-Head Attention。不只用一组注意力而是用多组。每一组从不同的角度关注不同的信息。第1个注意力头关注语法关系 猫和追的关系主谓关系 第2个注意力头关注语义关系 猫和老鼠的关系捕食关系 第3个注意力头关注位置关系 猫在句子里的位置 ...多个头同时工作从不同角度理解句子就像一个团队每个人负责不同的方面。最后把所有人的分析综合起来。得到更全面、更深刻的理解。位置编码告诉模型词的顺序RNN 天然地按顺序处理词知道词的位置。但 Transformer 是并行处理的它不知道哪个词在前哪个词在后。“猫追老鼠和老鼠追猫”意思完全不同。但如果不知道顺序Transformer 会认为它们是一样的。怎么解决位置编码。给每个词加上一个表示位置的向量。猫在位置1 → 猫的向量 位置1的编码 追在位置2 → 追的向量 位置2的编码 老鼠在位置3 → 老鼠的向量 位置3的编码这样模型就知道了每个词的位置。顺序信息被保留了下来。编码器和解码器Transformer由两部分组成。编码器Encoder读入源语言的句子通过多层自注意力把句子转化成一个富含语义信息的向量表示。就像把句子压缩成一个意思。解码器Decoder读入编码器的输出一个词一个词地生成目标语言的句子。生成每个词的时候既关注已经生成的词自注意力又关注编码器的输出交叉注意力。就像翻译员一边看原文一边写译文。为什么这篇论文改变了一切改变一并行计算规模爆炸RNN 无法并行训练速度慢模型规模受限。Transformer 可以并行训练速度快模型规模可以无限扩大。这一个改变带来了连锁反应。模型可以更大数据可以更多能力可以更强。模型规模的爆炸 BERT2018年3.4亿参数 GPT-22019年15亿参数 GPT-32020年1750亿参数 GPT-42023年估计超过1万亿参数每一次规模的扩大都带来了能力的质变。这种规模的扩大没有 Transformer 的并行计算是不可能实现的。改变二长程依赖彻底解决RNN 处理长句子前面的信息会丢失。Transformer 的自注意力让每个词都能直接关注句子里的任何其他词。不管距离多远都能直接建立联系。句子那个我在十年前在巴黎的一家小咖啡馆里 第一次见到的穿着红色连衣裙的女孩 今天成了我的妻子。 RNN读到妻子的时候那个女孩的信息可能已经衰减了。 Transformer读到妻子的时候 直接关注那个女孩注意力权重很高。 长程依赖完美解决。改变三迁移学习一次训练到处使用Transformer 带来了一种新的训练范式预训练 微调。先在海量数据上预训练一个大模型。这个模型学到了语言的通用规律。然后针对具体任务用少量数据微调这个模型。就像一个人先接受通识教育学会了阅读、写作、思考。然后再学习具体的专业知识。通识教育的积累让专业学习事半功倍。这种范式彻底改变了自然语言处理的格局。不再需要为每个任务从头训练一个模型。一个预训练模型可以用于翻译、问答、摘要、分类几乎所有任务。改变四能力的涌现当模型规模足够大一些没有被明确训练的能力自动涌现出来了。这叫做涌现能力Emergent Abilities。没有人教 GPT-3 做数学题 但它能做简单的数学题。 没有人教 GPT-3 写代码 但它能写出可运行的代码。 没有人教 GPT-3 做逻辑推理 但它能做一定程度的逻辑推理。这些能力是从哪里来的没有人完全理解。但它们真实地存在着。这种涌现是 Transformer 规模效应的神奇产物。从论文到 ChatGPT五年的旅程2017年论文发表。2018年谷歌发布 BERT基于 Transformer 的编码器。在11个自然语言处理任务上刷新了最好成绩。研究者们第一次感受到了 Transformer 的威力。2018年OpenAI 发布 GPT-1基于 Transformer 的解码器。证明了预训练 微调的范式行得通。2019年GPT-2 发布。生成的文本质量之高让 OpenAI 一度不敢公开发布。2020年GPT-3 发布。1750亿参数少样本学习能力质变。程序员们开始认真对待这个技术。2022年InstructGPT 发布。RLHF 技术让模型学会了听话。2022年11月ChatGPT 发布。世界变了。对程序员的冲击代码也是一种语言Transformer 最初是为自然语言设计的。但研究者们很快发现代码也是一种语言。代码有语法有语义有结构。代码也是序列数据。Transformer同样可以处理代码。而且处理得非常好。因为代码比自然语言更加规范更加结构化。Transformer 在代码上如鱼得水。GitHub Copilot第一个冲击波2021年GitHub 和 OpenAI 合作基于 Codex 模型GPT-3 在代码上微调的版本发布了 GitHub Copilot。程序员第一次感受到了AI 可以真正地帮你写代码。不是简单的代码补全而是理解你的意图生成完整的函数完整的模块。你写一行注释 # 读取CSV文件过滤年龄小于18的行保存到新文件 Copilot 自动生成 import pandas as pd def filter_underage(input_file: str, output_file: str) - None: 读取CSV文件过滤年龄小于18的行保存到新文件 Args: input_file: 输入文件路径 output_file: 输出文件路径 df pd.read_csv(input_file) filtered_df df[df[age] 18] filtered_df.to_csv(output_file, indexFalse)这不是魔法。这是 Transformer 的力量。ChatGPT第二个冲击波更猛烈Copilot只是在编辑器里帮你补全代码。ChatGPT是一个全能的编程助手。你可以用自然语言和它对话。描述需求它写代码。粘贴报错它找 Bug。给它代码它解释逻辑。让它重构它优化代码。这种交互方式彻底改变了程序员的工作流程。以前的工作流程 遇到问题 → Google → Stack Overflow → 看文档 → 理解 → 适配 → 解决 平均耗时30分钟到几小时 现在的工作流程 遇到问题 → 问 ChatGPT → 得到针对性答案 → 解决 平均耗时5分钟这不是效率的提升这是工作方式的革命。Transformer 之后世界还在变Transformer不只改变了自然语言处理。它的影响蔓延到了几乎所有领域。图像识别Vision TransformerViT把图像切成小块当成序列用 Transformer 处理。效果超过了之前所有的卷积神经网络。语音识别WhisperOpenAI 的语音识别模型基于 Transformer。识别准确率达到了人类水平。蛋白质结构预测AlphaFold2DeepMind 的蛋白质结构预测模型用了 Transformer 的注意力机制。解决了困扰生物学家50年的难题。自动驾驶Tesla 的自动驾驶系统引入了 Transformer处理多个摄像头的图像理解复杂的交通场景。一篇论文改变了人工智能的几乎所有方向。最后说一句2017年那八个谷歌研究员可能没有想到他们的论文会改变世界。他们只是想解决一个翻译的问题。但他们提出的想法注意力就是你需要的一切这句话比他们想象的深刻得多。注意力机制让机器第一次能够真正地理解语言。理解上下文理解语义理解意图。这种理解能力让 ChatGPT 成为可能。让程序员的工作方式发生了革命性的改变。让人工智能从实验室里的玩具变成了改变世界的工具。那八个研究员写了15页纸。这15页纸撬动了整个世界。这就是一个好想法的力量。它不需要很复杂。它只需要足够深刻。足够深刻就足以改变一切。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2618141.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!