Transformer 结构浅析

Transformer 结构浅析

文章目录

  • Transformer 结构浅析
    • Transformer 网络结构
    • 编码器
      • 位置编码
      • 多头注意力层
      • Add&Norm
      • Feed Forward
    • 解码器
      • 带掩码的多头注意力层
      • 多头注意力层
    • 预测

Transformer 网络结构

ModalNet-21

Transformer模型的网络结构如图,且transformer结构主要分为两部分,其中一部分为encode编码器,一部分为decode解码器。且Encoder 和 Decoder 都包含 6 个 block。

编码器

位置编码

第一步将sentence输入网络,并进行词编码,并与位置编码相加得到输入编码器的block。

其中transformer中的位置编码采用如下公式进行计算
P E ( p o s , 2 i ) = sin ⁡ ( p o s / 1000 0 2 i / d ) P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s / 1000 0 2 i / d ) \begin{aligned} PE_{(pos,2i)}&=\sin{(pos/10000^{2i/d})}\\ PE_{(pos,2i+1)}&=\cos{(pos/10000^{2i/d})} \end{aligned} PE(pos,2i)PE(pos,2i+1)=sin(pos/100002i/d)=cos(pos/100002i/d)
其中, p o s pos pos 表示单词在句子中的位置, d d d 表示 PE的维度 (与词 Embedding 一样), 2 i 2i 2i 表示偶数的维度, 2 i + 1 2i+1 2i+1 表示奇数维度 (即 2 i ≤ d , 2 i + 1 ≤ d 2i≤d, 2i+1≤d 2id,2i+1d)。使用这种公式计算 PE 有以下的好处:

  • 使 PE 能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding。

  • 可以让模型容易地计算出相对位置,对于固定长度的间距 k k k,PE(pos+k) 可以用 PE(pos)计算得到。

    因为 :
    sin ⁡ ( A + B ) = sin ⁡ ( A ) cos ⁡ ( B ) + cos ⁡ ( A ) sin ⁡ ( B ) cos ⁡ ( A + B ) = cos ⁡ ( A ) cos ⁡ ( B ) − sin ⁡ ( A ) sin ⁡ ( B ) \sin(A+B) = \sin(A)\cos(B) + \cos(A)\sin(B) \\ \cos(A+B) = \cos(A)\cos(B) - \sin(A)\sin(B) sin(A+B)=sin(A)cos(B)+cos(A)sin(B)cos(A+B)=cos(A)cos(B)sin(A)sin(B)

X X X为输入的sentence词编码与位置编码相加的结果

多头注意力层

然后将 X X X​输入多头注意力中,其中自注意力机制如下图所示

ModalNet-19

首先将 X X X映射到 Q , K Q,K Q,K空间中,然后根据缩放点积进行打分,最后使用softmax的到概率,最后与value相乘的到输出结果

其中多头注意力的结构如图所示

ModalNet-32

其本质是采用多个 V , K , Q V,K,Q V,K,Q矩阵计算自注意力并进行拼接。

Add&Norm

然后将多头注意力的结果输入到Add&Norm层中,其中这部分采用残差连接的方式构成。
LayerNorm ⁡ ( X + MultiHeadAttention ⁡ ( X ) ) LayerNorm ⁡ ( X + FeedForward ⁡ ( X ) ) \begin{aligned} &\operatorname{LayerNorm}\left(X+\operatorname{MultiHeadAttention}(X)\right)\\ &\operatorname{LayerNorm}( X+ \operatorname{FeedForward}( X) ) \end{aligned} LayerNorm(X+MultiHeadAttention(X))LayerNorm(X+FeedForward(X))
并将输出结果输入Feed Forward中

Feed Forward

其中Feed Forward的结构如图所示

ModalNet-23

其数学表达为
max ⁡ ( 0 , X W 1 + b 1 ) W 2 + b 2 \max(0,XW_1+b_1)W_2+b_2 max(0,XW1+b1)W2+b2
然后在将输出结果经过Add&Norm层输入到解码器中

解码器

带掩码的多头注意力层

因为在序列任务中,往往是从前往后开始进行的,为了防止提前知道以后的信息,所以使用了带掩码的多头注意力机制

根据下图可知

ModalNet-19

计算完缩放点积后与掩码矩阵相乘,在计算softmax并与v相乘。然后将结果输入到Add&Norm层中。

多头注意力层

接受来自上一层Add&Norm的输入并计算Q矩阵然后根据 Encoder 的输出计算得到 K, V,后续的计算与之前的一致。

预测

将解码器的输出输入到线性层,并使用softmax输出得到概率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉搜索树--搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m * n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

unordered_map 值类型为函数指针概述

在C中,unordered_map是一种关联容器,可以存储键值对。如果你想在unordered_map中定义的值是有参函数,你可以使用std::function和std::bind来实现。 以下是一个简单的例子,展示了如何在unordered_map中存储有参函数,并…

HarmonyOS4 页面路由

Index.ets: import router from ohos.routerclass RouterInfo {// 页面路径url: string// 页面标题title: stringconstructor(url: string, title: string) {this.url urlthis.title title} }Entry // 入口組件 Component struct Index {State message: string 页面列表// …

react17+antd4 动态渲染导航菜单中的icon

在路由信息对照表中的icon可以有两种形式:一种是组件形式,一种是字符串形式的。 在antd4的Menu.Item和SubMenu中的icon属性的格式为: 1.组件形式 这种方法在渲染时很方便,与antd中的Menu.Item中的icon属性的形式是一致的&#…

C++力扣Leetcode算法5--搜索

1.深度优先遍历(depth-first-search),遇到新节点就遍历下去。因此遍历需要用先入后出的栈来实现,也可以通过与栈等价的递归来实现。 深度优先搜索也可以用来检测环路:记录每个遍历过的节点的父节点,若一个节…

计算机组成原理【CO】Ch2 数据的表示和应用

文章目录 大纲2.1 数制与编码2.2 运算方法和运算电路2.3 浮点数的表示和运算 【※】带标志加法器OFSFZFCF计算机怎么区分有符号数无符号数? 【※】存储排列和数据类型转换数据类型大小数据类型转换 进位计数制进制转换2的次幂 各种码的基本特性无符号整数的表示和运算带符号整…

微信小程序Skyline模式下瀑布长列表优化成虚拟列表,解决内存问题

微信小程序长列表,渲染的越多就会导致内存吃的越多。特别是长列表的图片组件和广告组件。 为了解决内存问题,所以看了很多人的资料,都不太符合通用的解决方式,很多需要固定子组件高度,但是瀑布流是无法固定的&#xf…

推荐一款轻量级的hosts文件编辑器(免安装版)

在管理和编辑hosts文件时,一款简单而有效的工具是非常重要的。下面推荐一款免安装版的轻量级hosts文件编辑器,让你轻松管理你的hosts文件。 windows系统默认hosts文件位置 下载地址:https://www.alipan.com/s/8kSns9eAi9f

CSS aspect-ratio属性设置元素宽高比

aspect-ratio 是CSS的一个属性&#xff0c;用于设置元素的期望宽高比。它设置确保元素保持特定的比例&#xff0c;不受其内容或容器大小的影响。 语法&#xff1a; aspect-ratio: <ratio>;其中 <ratio> 是一个由斜杠&#xff08;/&#xff09;分隔的两个数字&…

代码随想录第39天 | 62.不同路径 、 63. 不同路径 II

一、前言 参考文献&#xff1a;代码随想录 今天主要的题目是动态规划的路径问题&#xff0c;动态规划五要点&#xff1b; 1、确定dp数组&#xff0c;dp[i]代表什么i代表什么&#xff1b; 2、递推公式&#xff1b; 3、初始化dp数组&#xff1b; 4、遍历顺序&#xff1b; …

Linux常用命令介绍

Linux ### 常用命令&#xff1a; 1、ls命令&#xff1a; 显示当前目录下文件和文件夹。 举例&#xff1a;在用户目录&#xff08;root&#xff09;使用ls可以查看用户里的文件及文件夹。 -l可以详细看列出文件及文件夹, ll命令等价与ls - l 2、cd命令 作用是切换目录。 …

uniapp APP真机调试接口请求不到服务器解决方法

项目场景&#xff1a; 在使用Hbuilder开发uniapp的过程中&#xff0c;出现了两个在 Chrome 调试中正常&#xff0c;但打包后异常的问题&#xff0c;特此记录。 问题描述 在 H5 端请求接口正常请求。 App 端 请求接口&#xff0c;提示 "{"errMsg":"reque…

百万成神-转自九边pro 的分享

1&#xff0c;如果一个人写代码写到10万行左右&#xff0c;也会出现下笔如有神的效果&#xff0c;很多时候自己都不知道自己怎么会想出这么复杂的套路和算法来。 2&#xff0c;我问过那个作者&#xff0c;他是怎么想到的&#xff0c;他说他也不知道&#xff0c;反正每天都写&am…

R语言数据可视化:基本绘图系统

目录 plot函数 par函数 hist函数 boxplot函数 plot函数应用实战 全局参数 R语言中有三大绘图系统包括基本绘图系统&#xff0c;Lattice绘图系统&#xff0c;ggplot2绘图系统 基本绘图系统 在R语言中&#xff0c;以下函数通常用于创建和定制图形&#xff1a; plot 函数…

网络通信三要素:IP、端口和协议

IP&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识 IP&#xff1a;全程”互联网协议地址“&#xff0c;是分配给上网设备的唯一标志 IP地址有两种形式&#xff1a; IPv4&#xff1a;32位 IPv6&#xff1a;共128位。分成8段表示&#xff0c;每取四位编码成一个16进制…

分布式技术---------------消息队列中间件之 Kafka

目录 一、Kafka 概述 1.1为什么需要消息队列&#xff08;MQ&#xff09; 1.2使用消息队列的好处 1.2.1解耦 1.2.2可恢复性 1.2.3缓冲 1.2.4灵活性 & 峰值处理能力 1.2.5异步通信 1.3消息队列的两种模式 1.3.1点对点模式&#xff08;一对一&#xff0c;消费者主动…

【御控物联】 1、物联网介绍

文章目录 一、定义二、起源三、发展四、应用五、未来六、技术资料 一、定义 如何理解物联网&#xff0c;我们引用百度百科的一句话“把所有物品通过信息传感设备与互联网连接起来&#xff0c;进行信息交换&#xff0c;即物物相息&#xff0c;以实现智能化识别和管理”&#xf…

【数据结构】AVL树

AVL树 AVL树&#xff08;Adelson-Velsky和Landis树&#xff09;是一种自平衡二叉搜索树。它通过维护树的高度平衡来确保树的操作复杂度为O(log n)。它通过在每个节点上跟踪平衡因子来保持树的平衡。平衡因子是左子树和右子树高度之间的差值。 AVL树的特性 每个节点都有一个平…

机器学习——模型评价

概述 在机器学习中&#xff0c;模型评价是评估和比较不同模型性能的关键步骤之一。它是通过对模型的预测结果与真实标签进行比较&#xff0c;从而量化模型的预测能力、泛化能力和稳定性。模型评价旨在选择最佳的模型&#xff0c;理解模型的行为&#xff0c;并为模型的改进提供…

Synchronized简述

1.了解Synchrozied Synchrozied是一种悲观锁&#xff0c;通过Synchroized实现同步机制&#xff0c;在操作数据时&#xff0c;判断该对象是否被锁定&#xff0c;如果被锁定则进入阻塞状态直到被占用的线程释放&#xff0c;如果没有被锁或者当前线程已经存在操作对象的锁则进行上…