设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
只需一步,快速开始
首页
BBS
剑灵怀旧服
Unity
美术资源
UE
全套源码
其他内容
奖励任务
分享
Share
每日任务中心
搜索
搜索
怀旧插件
怀旧脚本数据
怀旧攻略
公益服开服通知
AI工具分享
Unity插件
Unity问题答疑
Unity学习教程
Unity AI算法
Unity源码
其他美术文件
MAY文件
3D Max
FBX模型
UE技术讨论
UE学习视频
UE源码
网站源代码
手机游戏源代码
PC游戏
游戏捏脸
其他插件
OFFER摸吧
魔兽地图
单机游戏
本版
帖子
用户
爱开源网
»
首页
›
数字人
›
人工智能
›
Transformer [全网最详细的Transformer讲解]
返回列表
发新帖
Transformer [全网最详细的Transformer讲解]
[复制链接]
911
|
0
|
2023-8-23 11:54:13
|
显示全部楼层
|
阅读模式
Transformer
1. Transformer的结构
先看 Transformer 的团体框架:
大概看起来很复杂,但其实照旧 Encoder 和 Decoder {seq2seq}的框架。默认NX=6 ,6层 Encoder 和 6层 Decoder 嵌套中嵌套了前次讲的 Self-Attention ,再举行多次非线性变更。
上图的框架很复杂,由于 Transformer 最初是作为翻译模子,我们举例先带各人明白用途。
Transformer 相称于一个黑箱,左边输入 “Je suis etudiant”,右边会得到一个翻译结果 “I am a student”。
我们穿插形貌下 Encoder-Decoder 框架的模子是怎样举行文本翻译的:
Transformer 也是一个
Seq2Seq 模子(Encoder-Decoder 框架的模子)
,左边一个 Encoders 把输入读进去,右边一个 Decoders 得到输出,Encodes 和 Decoders 默认是有 6 层的,如下图所示:
从上图可以看到,Encoders 的输出,会和每一层的 Decoder 进行结合
复制代码
缘故起因是
: Encoder 向每层的 Decoder 输入 KV ,Decoder 产生的Q 从Encoder KV 里 查询信息(下文会讲)
我们取其中一层展示:
2. Seq2seq 从 RNN 到 transformer (举例明白)
例 1:Seq2seq——语音辨认,呆板翻译
例 2:Seq2seq——输入电视剧的 音频与字幕, 练习一个语音辨认模子
例 3:Seq2seq——输入文本,输出语音
例 4:Seq2seq——输入对话模版,练习聊天呆板人
例 4:Seq2seq——图像特性提取
例 4:Seq2seq——Transformer
3. Encoder
Encoder 编码器在干嘛?
词向量、图片向量,总而言之,编码器就是通过
词向量
让盘算性能够更公道地(不确定性的)认识人类天下客观存在的一些东西
。
Encoder 从而言之一句话,变更出更良好的词向量(K、V)!
有了上述那么多知识的铺垫,我们知道 Eecoders 是 N=6 层,通过上图我们可以看到每层 Encoder 包罗两个 sub-layers:
第一个 sub-layer 是
multi-head self-attention
,用来盘算输入的 self-attention;
第二个 sub-layer 是简朴的
前馈神经网络层 Feed Forward
;
注意:在每个 sub-layer 我们都模仿了
残差网络
(下文细讲),每个sub-layer的输出都是 LayerNorm (x + Sub_layer(x)),其中 sub_layer 表现的是该层的上一层的输出;
现在我们一步步分析 Encoder 的数据流表示图:
深绿色的 x1 表现 Embedding 层的输出,加上 Positional Embedding 的向量后,得到末了输入 Encoder 中的特性向量,也就是
浅绿色向量 x1
;
浅绿色向量 x1 表现单词 “Thinking” 的
特性向量
,其中 x1 颠末
Self-Attention
层,变成
浅粉色向量 z1
;
x1 作为残差结构的直连向量,直接和 z1 相加,即【w3(w2(w1x+b1)+b2)+b3+x】,然后举行 Layer Norm 操纵,得到
粉色向量 z1
;
残差结构的作用
:制止出现梯度消散的环境,w3(w2(w1x+b1)+b2)+b3,如果 w1,w2,w3 特殊小,0.0000000……1,x 趋近于0,
Layer Norm的作用
:为了包管数据特性分布的稳定性,并且可以加速模子的收敛
z1 颠末前馈神经网络(Feed Forward)层,再颠末残差结构与自身相加,之后又颠末 Layer Norm 层,得到一个输出向量 r1;该前馈神经网络包罗两个线性变更和一个ReLU激活函数: FFN(x) = max(0, xW1 + b1)W2 + b2 ;
前馈神经网络(Feed Forward) 的作用
:前面每一步都在做线性变更,wx+b,线性厘革的叠加永远都是线性厘革(线性厘革就是空间中平移和扩大缩小),通过 Feed Forward中的 Relu 做一次非线性变更,如许的空间变更可以无穷拟合任何一种状态了
由于Transformer 的 Encoders 具有 6 个 Encoder,
r1 也将会作为下一层 Encoder 的输入,代替 x1 的角色
,如此循环,直至末了一层 Encoder;
听不懂没关系,上面全部操纵都是在做词向量,只不过这个词向量更加良好,更能够精准的表现这个单词、这句话(source)
4. Decoder
Decoder 解码器会接收编码器天生的词向量(K、V),然后通过这个 “词向量” 去天生翻译的结果。
Decoders 也是 N=6 层,通过上图我们可以看到每层 Decoder 包罗 3 个 sub-layers:
第一个 sub-layer 是 Masked multi-head self-attention,也是盘算输入的 self-attention;
这里先不解释为什么要做 Masked,在 “Transformer 动态流程展示” 这一末节会解释。
第二个 sub-layer 是 Encoder-Decoder Attention 盘算,对 Encoder 的输入和 Decoder的Masked multi-head self-attention 的输出举行 attention 盘算;
这里也不解释为什么要对 Encoder 和 Decoder 的输出一同做 Cross attention 盘算,在 “Transformer 动态流程展示” 这一末节会解释
第三个 sub-layer 是前馈神经网络层,与 Encoder 相同;
Decoder 的输入:
Decoder 把自己的
前一个时间点的输出
(即,
查询向量 Q
)又与 Encode 输出的
特性向量
(
K、V
)点积成为新的输入;
即
Encoder 提供了 Ke、Ve 矩阵,Decoder 提供了 Qd 矩阵;
为什么 Encoder 给予 Decoders 的是 K、V 矩阵?
Q 泉源 Decoder (解码器),K=V 泉源于 Encoder (编码器);
Q 是查询变量,Q 是已经天生的词; K=V 是源语句
当我们天生这个词的时间,通过 Decoder 已经天生的词作为 Q 和源语句提供的 K、V
做Self-Attention,就是确定源语句中哪些词对接下来的词的天生更有作用,进而天生下个词继续作为Q。
举个例子:“我爱中国” 翻译为 “I love China”
当我们翻译 “I” 的时间,由于 Decoder 提供了 Q矩阵,通过与 Ke、Ve 矩阵的盘算,它可以在 “我爱中国”这四个字中找到对 “I” 翻译最有用的单词是哪几个,并以此为依据翻译出 “I” 这个单词,这就很好的表现了注意力机制想要到达的目标,
把核心放在对自己而言更为紧张的信息上
。
5. Transformer 输出结果
以上讲完了 Transformer 编码息争码两大模块,那么我们回归最初的标题,将 “呆板学习” 翻译成 “machine learing”,解码器的输出是一个浮点型的向量,怎么转化成 “machine learing” 这两个词呢?让我们来看看 Encoders 和 Decoders 交互的过程探求答案:
从上图可以看出,Transformer 末了的工作是让解码器的输出通过线性层 Linear 后接上一个 softmax
其中线性层是一个简朴的全毗连神经网络,它将解码器产生的向量 A 投影到一个更高维度的向量 B 上,假设我们模子的词汇表是10000个词,那么向量 B 就有10000个维度,每个维度对应一个惟一的词的得分。
然后 softmax 层将这些分数转换为概率。选择概率最大的维度,并对应地天生与之关联的单词作为此时间步的输出就是终极的输出啦!
6. Transformer 动态流程演示
假设上图是练习模子的某一个阶段,我们来联合 Transformer 的完整框架形貌下这个动态的流程图:
现在我们来解释为什么 Decoder 需要做 Mask:
答案:
为了办理练习阶段和测试阶段的 gap(不匹配)
举例1:呆板翻译
: 源语句(我爱中国),目标语句(I love China)
练习阶段
:解码器会有输入,这个输入是目标语句,就是 I love China,通过已经天生的词,去让解码器更好的天生(每一次都会把全部信息告诉解码器)
work阶段
:解码器也会有输入,但是此时,测试的时间是不知道目标语句是什么的,这个时间,你天天生一个词,就会有多一个词放入目标语句中,每次天生的时间,都是已经天生的词(测试阶段只会把已经天生的词告诉解码器)
为了匹配,为了办理这个 gap,masked Self-Attention 就登场了,我在练习阶段,我就做一个 masked,当你天生第一个词,我啥也不告诉你,当你天生第二个词,我告诉第一个词
举例2:
输出的答案和精确答案的交错熵越小越好:
但又有一个标题:
练习的时间有精确答案,work的时间没有精确答案。测试的时 Decoder 接收的是自己的输出,大概有错误的;练习时,Decoder接收的是完全精确的; 测试和练习差别等的征象叫 “exposure bias”。
假设 Decoder 在练习时看到的都是精确的信息,那在测试时 它如果收到了错误的信息,它会一步错步步错,放大错误。
所以在练习的时间,给 Decoder 一些错误的信息,反倒会提拔模子精确度。
至此,Transformer 的全部讲解到此竣事,参考资料如下:
台大李宏毅自注意力机制和Transformer详解
预练习语言模子的宿世此生
来源:
https://blog.csdn.net/weixin_68191319/article/details/129228502
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
还有那片绿色的春天吗
19
主题
0
回帖
57
积分
注册会员
注册会员, 积分 57, 距离下一级还需 293 积分
注册会员, 积分 57, 距离下一级还需 293 积分
积分
57
加好友
发消息
回复楼主
返回列表
Omniverse
人工智能
其他
图文推荐
非绿色-黑鳍自动换角色组队吃药自动没疲劳刷金
2024-09-21
绿色-剑灵怀旧完整主线(10月更新)有韩服
2024-09-12
非绿色-定制AI全自动黑鳍V1.2
2024-09-14
剑灵三系精修端 星术咒3鬼3 T2 饰品属性外观
2023-08-16
Unity 超级马里奥
2023-08-22
热门排行
1
非绿色-黑鳍自动换角色组队吃药自动没疲劳
2
非绿色-定制AI全自动黑鳍V1.2
3
绿色-剑灵怀旧完整主线(10月更新)有韩服
4
剑灵三系精修端 星术咒3鬼3 T2 饰品属性外
5
Unity 超级马里奥
6
AI绘画stable-diffusion-webui指定GPU运行
7
非绿色-武神塔合集
8
非绿色-使用教程攻略
9
非绿色 3号自动切线 黑骑 钓鱼 蓝蛙
10
绿色-黑鳍脚本合集