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

TransFormer--解码器:前馈网络层、叠加和归一组件

TransFormer--解码器:前馈网络层、叠加和归一组件

解码器的下一个子层是前馈网络层,如下图所示。

在这里插入图片描述

解码器的前馈网络层的工作原理与我们在编码器中学到的完全相同

叠加和归一组件

和在编码器部分学到的一样,叠加和归一组件连接子层的输入和输出,如下图所示。

在这里插入图片描述

下面,我们了解一下线性层和softmax层。

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

在这里插入图片描述

线性层将生成一个logit 向量,其大小等于原句中的词汇量。假设原句只由以下3个词组成:

vocabulary = {bien, Je, vais}

那么,线性层返回的logit向量的大小将为3。接下来,使用softmax函数将logit向量转换成概率,然后解码器将输出具有高概率值的词的索引值。让我们通过一个示例来理解这一过程。

假设解码器的输入词是和Je。基于输入词,解码器需要预测目标句中的下一个词。然后,我们把顶层解码器的输出送入线性层。线性层生成logit向量,其大小等于原句中的词汇量。假设线性层返回如下logit向量:

logit = [45, 40, 49]

最后,将softmax函数应用于logit向量,从而得到概率。

prob = [0.018, 0.000, 0.981]

从概率矩阵中,我们可以看出索引2的概率最高。所以,模型预测出的下一个词位于词汇表中索引2的位置。由于vais这个词位于索引2,因此解码器预测目标句中的下一个词是vais。通过这种方式,解码器依次预测目标句中的下一个词。

现在我们已经了解了解码器的所有组件啦!

解码器总览

下图显示了两个解码器。为了避免重复,只有解码器1被展开说明。

在这里插入图片描述

通过上图,我们可以得出以下几点。

  1. 首先,我们将解码器的输入转换为嵌入矩阵,然后将位置编码加入其中,并将其作为输入送入底层的解码器(解码器1)。
  2. 解码器收到输入,并将其发送给带掩码的多头注意力层,生成注意力矩阵M。
  3. 然后,将注意力矩阵M和编码器输出的特征值R作为多头注意力层(编码器−解码器注意力层)的输入,并再次输出新的注意力矩阵。
  4. 把从多头注意力层得到的注意力矩阵作为输入,送入前馈网络层。前馈网络层将注意力矩阵作为输入,并将解码后的特征作为输出。
  5. 最后,我们把从解码器1得到的输出作为输入,将其送入解码器2。
  6. 解码器2进行同样的处理,并输出目标句的特征。

我们可以将N个解码器层层堆叠起来。从最后的解码器得到的输出(解码后的特征)将是目标句的特征。接下来,我们将目标句的特征送入线性层和softmax层,通过概率得到预测的词。

http://www.lryc.cn/news/489450.html

相关文章:

  • 2024亚太杯国际赛C题参考文章50页+完整解题思路+数据处理+最终结果
  • Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍
  • useEffect、useCallback、useMemo和memo的区别
  • layui树形组件点击树节点后高亮的解决方案
  • 大语言模型(LLM)安全:十大风险、影响和防御措施
  • 02 —— Webpack 修改入口和出口
  • Go语言进阶依赖管理
  • 集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1
  • ffmpeg本地编译不容易发现的问题 — Error:xxxxx not found!
  • mybatis——Mapper代理方式
  • FreeRTOS——消息队列
  • 【题解】—— LeetCode一周小结46
  • Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
  • python里的数据结构
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第二十一集:制作游戏的金钱系统吉欧Geo和初步制作HUD Canvas的额外内容
  • 底层逻辑之:极大似然方法(Maximum Likelihood Estimation, MLE)
  • 笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
  • 【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
  • 深入探索Go语言中的sync.Mutex与sync.RWMutex:原理、应用与实践
  • 15.postgresql--jsonb 数组进行打平,过滤
  • linux下i2c开发与框架源码分析
  • [ruby on rails] 安装docker
  • I2C学习
  • VUE:基于MVVN的前端js框架
  • 06、Spring AOP
  • c语言学习26字符串的应用
  • 法语旅游常用口语-柯桥学外语到蓝天广场泓畅学校
  • Kafka 生产者优化与数据处理经验
  • MySQL 主从复制之多线程复制
  • Linux2.6内核进程调度队列