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

Transformer入门(6)Transformer编码器的前馈网络、加法和归一化模块

文章目录

    • 7.前馈网络
    • 8.加法和归一化组件
    • 9.组合所有编码器组件构成完整编码器


7.前馈网络

编码器块中的前馈网络子层如下图所示:

在这里插入图片描述

图1.32 – 编码器块

前馈网络由两个带有ReLU激活函数的全连接层组成。全连接层(Fully Connected Layer)有时也称为密集层,即每一层的每个神经元都与上一层的所有神经元相连。在Transformer的前馈网络中,这样的密集层有两个。

第一个密集层将输入数据映射到一个更高维度的空间。

第二个密集层则将第一个密集层的输出映射回原始维度。

在这两个密集层之间,通常会加入ReLU(Rectified Linear Unit)激活函数。ReLU激活函数的定义如下:

f(x) = max(0,x)

这意味着,ReLU函数会将所有负数输入映射到0,而正数输入保持不变。ReLU激活函数有助于引入非线性因素,使得神经网络能够学习和模拟更复杂的函数。

前馈网络的参数在不同的句子位置上是相同的,但在不同的编码器块上是不同的。

在下一节中,我们将介绍编码器的另一个组件——加法和归一化组件。

8.加法和归一化组件

在Transformer的编码器中还有一个重要的组件,加法和归一化组件。它连接着一个子层的输入和输出。也就是说,如下图所示(虚线),我们可以观察到加法和归一化组件:

(1)将多头注意力子层的输入连接到其输出

(2)将前馈子层的输入连接到其输出

在这里插入图片描述

图1.33 – 带有加法和归一化组件的编码器块

加法和归一化组件基本上是一个残差连接,后面跟着层归一化。层归一化通过防止每层中的值发生重大变化,从而可以得到更快的训练。

现在我们已经了解了编码器的所有组件,让我们在下一节中将它们全部放在一起,看看编码器作为一个整体是如何工作的。

9.组合所有编码器组件构成完整编码器

下图显示了两个编码器的堆叠(为了看上去更加简洁清晰,只展开了编码器1):

在这里插入图片描述

图1.34 – 编码器堆叠,仅编码器1展开

从图1.34所示的编码器中,我们可以看到:

(1)首先,我们将输入转换为输入嵌入(嵌入矩阵embedding matrix),然后添加位置编码(position encoding)并作为输入喂给最底层的编码器(encoder 1)。

(2)编码器1接收到输入后,将其发送到多头注意力(multi-head attention)子层,多头注意力子层运算后输出注意力矩阵(attention matrix)。

(3)将注意力矩阵作为输入喂给下一个子层——前馈网络。前馈网络接收注意力矩阵作为输入,并输出编码器表示(encoder representation)。

(4)接下来,我们取编码器1的输出(encoder representation)并将其作为输入喂给下一级编码器(encoder 2)。

(5)编码器2执行相同的流程,并输出给定输入句子的编码器表示(encoder representation)。

我们可以将N个编码器一个接一个地逐层堆叠;最后一级的编码器(最顶层编码器)获得的输出(encoder representation)将是给定输入句子的表示(representation)。让我们将最终编码器(在我们上面所举的例子中是编码器2)获得的编码器表示记为R。

我们取最终编码器(编码器2)获得的编码器表示R,并将其作为输入喂给解码器。解码器接收编码器表示R作为输入,并尝试生成目标句子。

现在我们已经理解了transformer的编码器部分,下一节我们将详细介绍解码器是如何工作的。


感谢您的阅读,欢迎关注!


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

相关文章:

  • element-plus中的resetFields()方法
  • 【过滤器】.NET开源 ORM 框架 SqlSugar 系列
  • Jmeter Address already in use: connect 解决
  • C#常见错误—空对象错误
  • Leetcode数学部分笔记
  • 微信小程序web-view 嵌套h5界面 实现文件预览效果
  • 【汽车】-- 燃油发动机3缸和4缸
  • 轻量级的 HTML 模板引擎
  • Mysql | 尚硅谷 | 第02章_MySQL环境搭建
  • Maven学习(传统Jar包管理、Maven依赖管理(导入坐标)、快速下载指定jar包)
  • CTF: 在本地虚拟机内部署CTF题目docker
  • 视频推拉流EasyDSS无人机直播技术巡查焚烧、烟火情况
  • SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!
  • 【嵌入式linux基础】关于linux文件多次的open
  • TPAMI 2023:When Object Detection Meets Knowledge Distillation: A Survey
  • 2024前端面试题(持续更新)
  • apache转nginx访问变成下载解决方法
  • 【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(三)
  • Oracle数据库使用dblink是时出现 ORA-12170:TNS:连接超时
  • OpenHarmony系统中实现Android虚拟化、模拟器相关的功能,包括桌面显示,详细解决方案
  • 决策曲线分析(DCA)中平均净阈值用于评价模型算法(R自定义函数)
  • 《经验分享 · 软考系统分析师》
  • 记录一下 js encodeURI和encodeURIComponent URL转码问题
  • 【C语言】二维前缀和/求子矩阵之和
  • SRS 服务器入门:实时流媒体传输的理想选择
  • 【ETCD】【源码阅读】configurePeerListeners() 函数解析
  • 1_ssrf总结
  • 深入解析 Redis
  • Visual Studio 2022发布UWP应用证书绑定失败
  • K8S对接ceph的RBD块存储