当前位置: 首页 > news >正文

一文彻底搞懂Transformer - 总体架构

Transformer

一、RNN编码器-解码器架构

序列到序列模型(Seq2Seq):seq2seq模型的目标是将一个输入序列转换成另-个输出序列,这在多种应用中都具有广泛的实用价值,例如语言建模、机器翻译、对话生成等

Seq2Seq

RNN编码器-解码器架构 Transformer出来之前,主流的序列转换模型都基于复杂的循环神经网络(RNN),包含编码器和解码器两部分。当时表现最好的模型还通过注意力机制将编码器和解码器连接起来。

Transformer vs RNN

在Seq2Seq框架中,RNN的作用主要体现在两个方面:编码和解码。

****编码器:****RNN接收输入序列,并逐个处理序列中的元素(如单词、字符或时间步),同时更新其内部状态以捕获序列中的依赖关系和上下文信息。这种内部状态,通常被称为“隐藏状态”,能够存储并传递关于输入序列的重要信息。

RNN编码器-解码器架构

编码器:RNN接收输入序列,并逐个处理序列中的元素(如单词、字符或时间步),同时更新其内部状态以捕获序列中的依赖关系和上下文信息。这种内部状态,通常被称为“隐藏状态”,能够存储并传递关于输入序列的重要信息

因此,循环神经网络(RNN)、特别是长短时记忆网络(LSTM)和门控循环单元网络(GRU),已经在序列建模和转换问题中牢固确立了其作为最先进方法的地位。

RNN LSTM GRU

同时,RNN存在一个显著的缺陷:处理长序列时,会存在信息丢失。

编码器在转化序列**x1, x2, x3, x4**为单个向量**c**时,信息会丢失。因为所有信息被压缩到这一个向量中,处理长序列时,信息必然会丢失。

RNN编码器-解码器架构

二、Tansformer总体架构

Transformer起源:Google Brain 翻译团队通过论文《Attention is all you need》提出了一种全新的简单网络架构–Transformer,它完全基于注意力机制,摒弃了循环和卷积操作。

注意力机制是全部所需

注意力机制:-种允许模型在处理信息时专注于关键部分,忽略不相关信息,从而提高处理效率和准确性的机制。它模仿了人类视觉处理信息时选择性关注的特点。

注意力机制

当人类的视觉机制识别一个场景时,通常不会全面扫描整个场景,而是根据兴趣或需求集中关注特定的部分,如在这张图中,我们首先会注意到动物的脸部,正如注意力图所示,颜色更深的区域通常是我们最先注意到的部分,从而初步判断这可能是一只狼。

注意力机制

注意力计算Q、K、V: 注意力机制通过查询(Q)匹配键(K)计算注意力分数(向量点乘并调整),将分数转换为权重后加权值(V)矩阵,得到最终注意力向量。

注意力分数是量化注意力机制中信息被关注的程度,反映了信息在注意力机制中的重要性。

Q、K、V计算注意力分数

Transformer本质:Transformer是一种基于自注意力机制的深度学习模型,为了解决RNN无法处理长序列依赖问题而设计的。

Transformer vs RNN

Transformer总体架构:Transformer也遵循编码器-解码器总体架构,使用堆叠的自注意力机制和逐位置的全连接层,分别用于编码器和解码器,如图中的左半部分和右半部分所示。

Transformer的架构

  • **Encoder编码器:**T ransformer的编码器由6个相同的层组成,每个层包括两个子层:一个多头自注意力层和一个逐位置的前馈神经网络。在每个子层之后,都会使用残差连接和层归一化操作,这些操作统称为Add&Normalize。这样的结构帮助编码器捕获输入序列中所有位置的依赖关系。

Encoder(编码器)架构

  • **Decoder解码器:**Transformer的解码器由6个相同的层组成,每层包含三个子层:**掩蔽自注意力层、Encoder-Decoder注意力层和逐位置的前馈神经网络。**每个子层后都有残差连接和层归一化操作,简称Add&Normalize。这样的结构确保解码器在生成序列时,能够考虑到之前的输出,并避免未来信息的影响。

Decoder(解码器)架构

Transformer核心组件:Transformer模型包含输入嵌入、位置编码、多头注意力、残差连接和层归一化、带掩码的多头注意力以及前馈网络等组件。

Transformer的核心组件


  • 输入嵌入:将输入的文本转换为向量,便于模型处理。

  • 位置编码:给输入向量添加位置信息,因为Transformer并行处理数据而不依赖顺序。

  • 多头注意力:让模型同时关注输入序列的不同部分,捕获复杂的依赖关系。

  • 残差连接与层归一化:通过添加跨层连接和标准化输出,帮助模型更好地训练,防止梯度问题。

  • 带掩码的多头注意力:在生成文本时,确保模型只依赖已知的信息,而不是未来的内容。

  • 前馈网络:对输入进行非线性变换,提取更高级别的特征。

Transformer的核心组件

Transformer数据流转:可以概括为四个阶段,Embedding(嵌入)、Attention(注意力机制)、MLPS(多层感知机)和Unembedding(从模型表示到最终输出)D

Embedding -> Attention -> MLPs -> Unembedding


Transformer注意力层:在Transformer架构中,有3种不同的注意力层(Self Attention自注意力、Cross Attention 交叉注意力、Causal Attention因果注意力)


  • 编码器中的自注意力层(Self Attention layer): 编码器输入序列通过Multi-Head Self Attention(多头自注意力)计算注意力权重。

  • 解码器中的交叉注意力层(Cross Attention layer): 编码器-解码器两个序列通过Multi-Head Cross Attention(多头交叉注意力)进行注意力转移。

  • 解码器中的因果自注意力层(Causal Attention layer): 解码器的单个序列通过Multi-Head Causal Self Attention(多头因果自注意力)进行注意力计算

Transformer注意力层

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 后端开发学习路线
  • 蜂鸣器(51单片机)
  • 苹果微信不小心卸载了怎么恢复聊天记录?4招轻松解决
  • GPT-5:未来已来,你准备好了吗
  • Midjourney应用-用AI帮你做广告视频(动物走秀视频制作)
  • 第七节 流编辑器sed(stream editor)(7.2)
  • 三十六、【人工智能】【机器学习】【监督学习】- Bagging算法模型
  • 解决NLP任务的Transformer为什么可以应用于计算机视觉?
  • 16. 数值的整数次方
  • 论文分享|MLLMs中多种模态(图像/视频/音频/语音)的tokenizer梳理
  • 【Java-一些常见键值对集合面试问题】
  • 学习笔记 韩顺平 零基础30天学会Java(2024.8.8)
  • 2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)
  • 【计算机网络】LVS四层负载均衡器
  • Leetcode JAVA刷刷站(27)移除元素
  • 30秒的PHP代码片段(1)数组 - Array
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Centos6.8 使用rpm安装mysql5.7
  • ES10 特性的完整指南
  • Gradle 5.0 正式版发布
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java第三方包学习之lombok
  • JSONP原理
  • LintCode 31. partitionArray 数组划分
  • Promise面试题2实现异步串行执行
  • Python3爬取英雄联盟英雄皮肤大图
  • Python连接Oracle
  • React16时代,该用什么姿势写 React ?
  • vagrant 添加本地 box 安装 laravel homestead
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 阿里云应用高可用服务公测发布
  • 技术:超级实用的电脑小技巧
  • 简单易用的leetcode开发测试工具(npm)
  • 目录与文件属性:编写ls
  • 强力优化Rancher k8s中国区的使用体验
  • 通过git安装npm私有模块
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​MySQL主从复制一致性检测
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ​字​节​一​面​
  • # centos7下FFmpeg环境部署记录
  • (007)XHTML文档之标题——h1~h6
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (4)(4.6) Triducer
  • (C语言)字符分类函数
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (一)RocketMQ初步认识
  • (一)SvelteKit教程:hello world
  • ***利用Ms05002溢出找“肉鸡
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例