位置: IT常识 - 正文

Transformer中解码器decoder的详细讲解(图文解释)(transformer的解码器)

编辑:rootadmin
Transformer中解码器decoder的详细讲解(图文解释)

推荐整理分享Transformer中解码器decoder的详细讲解(图文解释)(transformer的解码器),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:transformer解析,transformer编码器和解码器,transformer 解码过程,transformer encoder mask,transformer中解码器的输入output来自哪里,transformer中解码器的输入output来自哪里,transformer中解码器的输入output来自哪里,transformer 解码过程,内容如对您有帮助,希望把文章链接给更多的朋友!

假设我们想把英语句子i am good翻译成法语句子 Je Vais bein,首先将原句送入编码器,使编码器学习原句,并计算特征值,在上一篇博客中已经讲解了编码器是如何计算原句的特征值的,然后我们把从编码器求得的特征值送入解码器,解码器将特征值作为输入,并生成目标据,流程如下

 在编码器部分,我们了解到可以叠加N个解码器,同理,解码器也可以有N个叠加在一起,编码器将原句的所有特征值作为输入传给所有解码器,而非只给第一个解码器,因此一个解码器将有两个输入,一个是来自前一个解码器的输出,另一个是编码器输出的特征值

接下来我们学习解码器是如何生成目标句子的,当t=1时(t表示时间步)解码器开始工作,生成目标为句子中的第一个词,当t=2时,解码器使用当前的输入和在上一步生成的单词,来预测句子中的下一个单词,以此类推,在每一步中解码器都将上一步生成的单词与输入的词结合起来,并预测下一个单词

一个解码器模块及其所有的组件如下图所示

 从上图中可以看到,解码器内部有三个子层,分别是

1:带掩码的多头注意力层

2:多头注意力层

3:前馈网络层

与编码器模块相似,解码器模块也有多头注意力层和前馈网络层,但多了带掩码的多头注意力层,下面对它们一一进行讲解

一、带掩码的多头注意力层

 以英法翻译任务为例,假设训练数据集样本如下

解码器将输入的<sos>作为第一个标记,并在每一步中将下一个预测词与输入结合起来,以预测目标句子,直到遇到<eos>为止 

带掩码的多头注意力层就是预测与<sos>相邻的单词时,模型应该只看到<sos>,所有我们掩盖<sos>后边的所有词,因此在使用softmax函数进行归一化之前,我们需要对数值进行掩码转换,可以用负无穷去掩盖

二、多头注意力层Transformer中解码器decoder的详细讲解(图文解释)(transformer的解码器)

由下图可以看出,每个解码器中的多头注意力层都有两个输入:一个来自带掩码的多头注意力层,另一个是编码器输出的特征值 

多头注意力机制的第一步是创建三个矩阵,我们使用从上一个子层获得的注意力矩阵M创建查询矩阵Q,使用编码器输出的特征值R创建键矩阵和值矩阵,因为查询矩阵是从M求得的,所以本质上包含了目标句子的特征,键矩阵和值矩阵则含有原句的特征,因为它们是用R计算的

三、前馈网络层

 解码器的下一个子层是前馈网络层,它的工作原理与我们在编码器中用到的完全相同,此处不再赘述

四、叠加和归一组件

和在编码器部分讲到的一样,叠加和归一组件连接子层的输入和输出

五、线性层和softmax层

一旦解码器学习了目标句子的特征,我们就将顶层解码器的输出送入线性层和softmax层

线性层将生成一个logit向量,其大小等于原句中的词汇量,接下来使用softmax函数将logit向量转换成概率,然后解码器将输出具有高概率值的词的索引值

六、解码器总览

通过上图,我们可以总结出以下几点

1:首先,我们将解码器的输入转换为嵌入矩阵,然后将位置编码加入其中,并将其作为输入送入底层的解码器

2:解码器收到输入,并将其发送给带掩码的多头注意力层,生成注意力矩阵M

3:然后将注意力矩阵M和编码器输出的特征值R作为多头注意力层的输入,并再次输出新的注意力矩阵

4:把从多头注意力层得到的注意力矩阵作为输入,送入前馈网络层,前馈网络层将注意力矩阵作为输入,并将解码后的特征作为输出

5:最后我们把从解码器1得到的输出作为输入,将其送入解码器2

6:解码器2进行同样的处理,并输出目标句子的特征 

七、训练Transformer 

我们可以退哦那个过最小化损失函数来训练Transformer网络,但是应该如何选择损失函数呢,我们已经知道,解码器预测的是词汇的概率分布,并选择概率最高的词作为输出,所有我们需要让预测的概率分布和实际的概率分布之间的差异最小化,要做到这一点,可以将损失函数定义为交叉熵定义函数,我们通过最小化损失函数来训练网络,并使用Adam算法来优化训练过程

另外需要注意,为了防止过拟合,我们可以将dropout方法应用于每个子层的输入以及嵌入和位置编码的总和

创作不易 觉得有帮助请点赞关注收藏~~~

本文链接地址:https://www.jiuchutong.com/zhishi/297286.html 转载请保留说明!

上一篇:DOM(操作)(jQuery dom操作)

下一篇:vue中使用百度地图(vue使用百度地图三方标准地图清空后卡死)

  • 材料采购成本是主营业务成本吗
  • 委托加工应税消费品收回后直接销售
  • 税务师考试咨询电话
  • 进项税额在贷方怎么登明细账
  • 季度申报所得税费用怎么做
  • 企业所得税季度申报填写示例
  • 利润分配未分配利润借贷方表示什么
  • 专票手工认证
  • 多项固定资产能否合并入账
  • 有哪些发票可以开成餐饮服务
  • 发票失控怎么处罚
  • 支付利息的诉讼请求
  • 购进原材料发生非正常损失,账面成本10万元 该原材料
  • 库存现金日记账和库存现金总账都应逐日逐笔
  • 房屋租赁合同税率怎么算
  • 全资子公司向母公司划转资产 土地增值税
  • 收到样品费计入什么科目
  • 碎石需要技术吗
  • 企业的其他账簿怎么做
  • 小规模纳税人网上申报流程视频
  • 个人所得税反推器
  • 超过三个月开发票
  • 广告费和业务宣传费扣除标准2023
  • 选择纳税人身份考虑的因素
  • 企业从事生产经营活动时所持有的基本信念
  • 从租计征的房产税减半政策
  • 上报汇总完成,远程清卡清不了
  • 酒店客房收入怎么算
  • 上年销项税额录错了,怎么调整
  • 项目款申请
  • 返利冲减收入
  • win7缓存设置方法
  • 企业所得税预缴可以不交吗
  • PHP+Mysql+jQuery中国地图区域数据统计实例讲解
  • 拍卖公司收入计入什么分录
  • 结算劳务外包的工作内容
  • 农村土地承包经营权证丢失怎么补办
  • 车子的保险费
  • vue父组件如何调用子组件的方法组合式api
  • photo-sphere-viewer中文文档
  • vue实现动态菜单权限配置
  • 我想问一下移动
  • 环保税的纳税义务人是施工方还是建设方安徽
  • 企业所得税汇算清缴表
  • 季初资产总额和季末资产总额怎么算
  • 一般项目的进项税和即征即退进项税
  • 工业企业会计核算中常见的会计核算程序有哪些?
  • 办税人员可绑定银行卡吗
  • 分支机构注销后往来账如何处理?
  • 记账凭证后面附什么原始凭证
  • 会计支付预付款怎么记账
  • 契税是房价乘以1.5吗
  • 广告费计入什么会计分录
  • 子公司与母公司承担连带责任
  • 增值税年末结转的会计处理
  • 企业购买银行理财产品的会计处理
  • 税收罚款支出计算公式
  • 预付卡开不征税发票
  • 结转资金和结余资金
  • 办公用品的发票可以抵扣吗
  • 企业财务会计是应用在各类企业
  • 资产减值损失是费用吗
  • 企业注销怎么回事
  • uefi模式怎么装机
  • win7打开注册表的命令
  • win10预览版和正式版
  • ubuntu20.0安装
  • 远程文件管理器
  • ubuntu14.04.6安装教程
  • shell if-z
  • [置顶]bilinovel
  • 如何用jquery
  • python面向对象编程心得体会
  • python 字典怎么添加数据
  • 企业注销认缴与实缴是否还有风险
  • 什么是增值税一般纳税人证明
  • 税收通知
  • 地税怎么查个人所得税
  • 按月申报印花税如何计税
  • 如何网上办税票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设