ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【老计带你懂AI算法】20:Transformer与注意力机制,撑起整个大模型时代的基石

【老计带你懂AI算法】20:Transformer与注意力机制,撑起整个大模型时代的基石 【老计带你懂AI算法】20Transformer与注意力机制撑起整个大模型时代的基石开头一篇论文开启一个时代如果要在这个系列里挑一个最重要的模型那一定是Transformer。ChatGPT、文心一言、Claude、你能叫得出名字的所有大语言模型还有大量图像、语音、多模态模型它们的心脏都是Transformer。可以说没有Transformer就没有今天这场轰轰烈烈的大模型革命。它出自2017年谷歌一篇名字很霸气的论文《Attention Is All You Need》注意力就是你所需要的一切这篇论文开启了一个时代。这一篇是整个系列的一个高潮。我会把Transformer最核心的东西注意力机制用大白话讲透。理解了它你就理解了大模型的地基。先回顾痛点RNN到底差在哪要理解Transformer为什么伟大得先记着第15篇讲的RNN的两个致命痛点不能并行训练太慢。RNN处理序列必须一个词一个词按顺序来因为后面依赖前面的记忆没法同时处理在大数据时代这个速度是硬伤。长距离依赖记不住。序列一长前面的信息传到后面就被稀释忘掉了尽管LSTM有所缓解但依然吃力。Transformer的横空出世就是用注意力机制一举干掉了这两个痛点既能并行、又能轻松抓住任意长距离的关系。这就是它碾压RNN的根本原因。核心中的核心注意力机制在干嘛注意力机制第15篇末尾已经埋了引子当时是为了帮RNN翻译时能回看原文。Transformer把它拎出来当绝对主角。用一句大白话讲注意力处理一句话里的每个词时让这个词去关注句子里所有其他的词并根据相关程度分配不同的注意力权重把相关词的信息重点吸收进来。举个经典例子。这句话那只动物没过马路因为它太累了。“这里的它指代谁是动物还是马路我们一看就知道指动物”。机器怎么知道注意力机制就是让它这个词去扫描句子里所有的词计算和每个词的相关度结果发现和动物相关度最高于是它就重点关注动物、把动物的信息吸收过来从而正确理解了它指代动物。打个比方你读一个句子理解某个词时眼睛和注意力其实会不自觉地在相关的词之间来回瞟把有关联的部分联系起来理解。注意力机制就是把人类这种理解一个词要联系上下文相关词的能力用数学精确地实现了。这种让句子里的词互相关注、互相理解的注意力叫自注意力是Transformer的灵魂。自注意力的三个角色查询、键、值再把自注意力讲深一点点不涉及公式你会更明白它怎么运作。每个词会生成三个东西用图书馆借书打比方最好懂查询你想找什么就像你带着一个问题去图书馆。键每本书的标签、目录用来和你的问题匹配看相不相关。值书里真正的内容。运作时一个词拿自己的查询去和句子里所有词的键逐一匹配算出和每个词的相关度匹配度相关度高的就多取一些那个词的值内容相关度低的就少取一点。最后把这些按相关度加权取来的内容汇总起来就是这个词吸收了全局上下文之后的新理解。关键在于句子里每一个词都同时干这件事而且它们互不依赖、可以一起算这就是Transformer能并行的原因也是它比RNN快的根本。同时无论两个词隔多远只要相关注意力就能一步把它们直接联系起来不像RNN要一步步传递、传远了就忘这就解决了长距离依赖。一个注意力机制两个痛点同时解决这就是它的精妙。我想在这里停一下讲讲为什么我觉得注意力这个思想如此了不起它其实揭示了理解的本质。所谓理解一个东西很大程度上就是理解它和其他东西的关系。一个词的含义不在它孤立的字形里而在它和上下文的关联里同一个苹果在我吃了个苹果和苹果发布了新手机里意思完全不同靠的正是它和周围词的关系来确定。注意力机制的伟大就在于它用一种简洁又可并行的方式让模型学会了动态地捕捉万物之间的关联谁和谁相关、相关多少全由数据自己算出来不用人预先规定。这种通过关联来理解的思想不仅统治了今天的AI某种程度上也和我们人类认知世界的方式暗合我们不也是在一张巨大的关系网里靠事物间的联系来理解这个世界的吗。想通这一层你对Transformer的敬意会更深一分它不只是个工程技巧更触及了智能的某种本质。Transformer的完整样子Transformer就是把自注意力作为核心再搭配一些其他部件堆叠而成。你不用记全知道几个关键点多头注意力不止用一套注意力而是同时用好几套多个头每套关注不同方面的关系有的关注语法、有的关注语义再综合起来理解更全面。位置编码注意力本身不管词的顺序并行处理嘛可语言里顺序很重要。于是额外给每个词加一个位置信息告诉模型这个词排在第几位补上顺序这一课。堆叠很多层像前面所有深度网络一样把这样的结构堆很多层逐层提取越来越抽象的语义。编码器和解码器原始Transformer有这两部分编码器负责理解输入解码器负责生成输出。后来的大模型很多只用其中一部分比如GPT系列主要用解码器结构来做生成。输入和输出长什么样输入一段文本先被切成一个个词元token每个词元转成向量又是那条万物变向量的主线再加上位置编码。输出看任务。做生成如GPT时它逐个预测下一个最可能的词一个接一个吐出来形成完整回答。做理解如BERT时输出每个词或整句的语义表示供下游任务用。上代码调用一个Transformer模型自己实现Transformer较复杂实际我们用Hugging Face直接调用。输入一段文本。输出模型的处理结果。这里演示用预训练模型做情感分析和文本生成。# 依赖pip install transformers torchfromtransformersimportpipeline# 例1:情感分析,底层是基于Transformer的模型(如BERT)classifierpipeline(sentiment-analysis)resultclassifier(这个产品真的太好用了强烈推荐)print(情感分析:,result)# 例2:文本生成,底层是Transformer的解码器(GPT类)generatorpipeline(text-generation,modelgpt2)outgenerator(Artificial intelligence is,max_length30,num_return_sequences1)print(文本续写:,out[0][generated_text])运行输出示例文本生成部分每次结果不同情感分析: [{label: POSITIVE, score: 0.9987}] 文本续写: Artificial intelligence is transforming the way we live and work, from...这段代码展示了用Transformer模型的常见方式通过Hugging Face的pipeline一行就能调用训练好的Transformer模型做情感分析、文本生成等任务底层都是Transformer架构在工作。你不用关心内部细节就能用上这个强大的架构。需要说明首次运行会下载模型且模型语言能力取决于所选模型作者未在本地实机运行读者按环境和库版本可能要微调。关键概念注意力Attention让每个词关注并吸收相关词的信息是Transformer的核心。自注意力Self-Attention句子内部词与词互相关注。多头多套注意力并行从不同角度理解。位置编码给并行处理的词补上顺序信息。token词元文本被切成的基本单位大模型按token处理和计费。为什么它这么重要再强调一下Transformer的历史地位帮你建立全局认知它是所有大模型的统一地基。GPT、BERT、文心、Claude、LLaMA架构核心都是它。学会它你就有了理解一切大模型的钥匙。它极其适合规模化。因为能大规模并行训练Transformer可以被造得非常非常大几百上千亿参数喂海量数据而且神奇的是越大越强这就是所谓的规模定律。这种可规模化是大模型能力爆发的前提。它不止用于文本。图像ViT、语音、多模态、甚至前面说的时序、扩散模型里都能看到Transformer的身影它成了一个近乎通用的架构。优缺点与适用场景优点能并行训练快、能抓任意长距离依赖、效果强、极其适合规模化、通用性强。缺点计算量大尤其吃显存注意力要算每个词和所有词的关系长文本时开销随长度快速增长、需要海量数据和算力、小数据上未必比简单模型强。适合场景几乎所有大规模的语言、图像、语音、多模态任务是当今AI的绝对主流。不适合数据量很小、算力受限、或者简单表格任务那还是树模型划算别为了赶时髦硬上。小结与承上启下Transformer2017年横空出世用注意力机制干掉RNN不能并行和记不住长距离两大痛点开启大模型时代。注意力核心处理每个词时让它关注句子里所有相关词、按相关度吸收信息查询键值三角色。能并行 抓长依赖每个词独立并行地做注意力无论多远只要相关就能一步联系。地位所有大模型的统一地基极适合规模化还是通用架构。我们已经知道了大模型的心脏是Transformer。可从这个架构到你用的ChatGPT那样一个博学、能聊、会干活的大模型中间还隔着一整套炼制工艺预训练、微调、对齐、还有让模型更大更省的MoE。下一篇也是原理部分的收官我们讲清楚一个大模型到底是怎么被炼成的。我们下一篇见。延伸阅读想深入了解Transformer下面几个是权威且经典的一手资料Transformer原始论文《Attention Is All You Need》Vaswani等2017https://arxiv.org/abs/1706.03762图解TransformerThe Illustrated TransformerJay Alammar图文并茂讲注意力很适合入门https://jalammar.github.io/illustrated-transformer/Hugging Face Transformers官方文档本篇代码用的库含大量模型和教程https://huggingface.co/docs/transformersPyTorch官方文档https://pytorch.org/docs说明以上为官方与经典公开资料的地址可能随站点调整如打不开可用标题搜索。
返回列表