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输出得到概率

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux使用docker安装RocketMQ并登录管理界面

Linux使用docker安装RocketMQ并登录管理界面 1、创建 /opt/rocketmq/docker-compose.yml和/opt/rocketmq/broker.conf两个配置文件 2、docker-compose.yml,并配置管理页面端口为8090 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_…

“栈”顶到底是高地址还是低地址?

栈的增长方向永远是从杯底到杯顶,所以对于栈来说上面是栈底下面是栈顶,而对于堆来说,上面是堆顶下面是堆底。栈是连续分配内存的,如果给一个数组或对象分配内存,栈会选择还没分配的最小的内存地址给数组,在…

20240327-1-评测指标面试题

评测指标面试题 metric主要用来评测机器学习模型的好坏程度,不同的任务应该选择不同的评价指标,分类,回归和排序问题应该选择不同的评价函数. 不同的问题应该不同对待,即使都是分类问题也不应该唯评价函数论,不同问题不同分析. 回归(Regression) 平均绝对误差(MAE) 平均绝对…

Android 车载应用开发概述

前言 介绍 Android 车载应用开发 文章目录 前言一、Android Automotive OS 概述二、Android Automotive OS 架构三、常见的车载应用1、系统应用1)SystemUI是什么开发工作 2)Launcher是什么开发工作 3)Settings是什么开发工作 4)多…

使用UDP实现TCP的功能,会带来什么好处?

比较孤陋寡闻,只知道QUIC TCPQUIC握手延迟TCP需要三次握手TLS握手三次握手TLS握手放在一起,实现0RTT头阻塞问题TCP丢失保文,会影响所有的应用数据包基于UDP封装传输层Stream,Stream内部保序,Stream之间不存在相互影响…

实时智能应答3D数字人搭建2

先看效果: 3d数字人讲黑洞 根据艾媒咨询数据,2021年,中国虚拟人核心产业规模达到62.2亿元,带动市场规模达到1074.9亿元;2025年,这一数据预计将达到480.6亿元与6402.7亿元,同比增长迅猛。数字人可…

C语言:指针详解(1)

目录 一、内存和地址 1.内存 2.究竟该如何理解编址 二、指针变量和地址 1.取地址操作符(&) 2.解引用操作符(*) 3.指针变量的大小 三、指针变量类型的意义 1.指针的解引用 2.指针-整数 3.void*指针 四、const修饰指针 1.const修饰变量 2.const修饰指针变量 五…

C语言 | Leetcode C语言题解之第19题删除链表的倒数第N个结点

题目: 题解: struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {struct ListNode* dummy malloc(sizeof(struct ListNode));dummy->val 0, dummy->next head;struct ListNode* first head;struct ListNode* second dummy;f…

CSS核心样式-02-盒模型属性及扩展应用

目录 三、盒模型属性 常见盒模型区域 盒模型图 盒模型五大属性 1. 宽度 width 2. 高度 height 3. 内边距 padding 四值法 三值法 二值法 单值法 案例 4. 边框 border 按照属性值的类型划分为三个单一属性 ①线宽 border-width ②线型 border-style ③边框颜色 bo…

网页端HTML使用MQTTJs订阅RabbitMQ数据

最近在做一个公司的日志组件时有一个问题难住了我。今天问题终于解决了。由于在解决问题中,在网上也查了很多资料都没有一个完整的实例可以参考。所以本着无私分享的目的记录一下完整的解决过程和实例。 需求:做一个统一日志系统可以查看日志列表和一个可…

数据——关键生产要素

数据作为数字经济时代的关键生产要素,逐步融入生产生活各方面,深刻影响并重构着经济社会运行和社会治理,已成为影响未来发展的关键战略性资源。近年来,我国高度重视发展数字经济、数据要素及其市场化配置改革,发布了一…

Go——网络编程

一. 互联网协议介绍 网络基础——网络传输基本流程_网络传输过程-CSDN博客 应用层HTTP协议-CSDN博客 传输层UDP/TCP协议_udp报文提供的确认号用于接收方跟发送方确认-CSDN博客 网络层IP协议-CSDN博客 链路层以太网详解_以太网数据链路层-CSDN博客 二. Socket编程 Socket是…

vite+react+ts+scss 创建项目

npm create vitelatest输入项目名称选择react选择typescript swc WC 通过利用 Rust 编写的编译器,使用了更先进的优化技术,使得它在处理 TypeScript 代码时能够更快地进行转换和编译。特别是在大型项目中,SWC 相对于传统的 TypeScript 编译器…

Hive的分区与排序

一、Hive分区 1.引入: 在大数据中,最常见的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一个个小的文件就会很容易了,同样的道理,在hive当中也是支持这种思想的&#xff…

error: src refspec master does not match any

文章目录 1 问题复现2 问题解决 1 问题复现 在把文件推送到远程仓库时,出现了如下错误。 错误原因:没有“master”分支。 2 问题解决 1,查看现有分支; (base) macmacbook DesignPatterns % git branch * main2,创…

Unity上接入手柄,手柄控制游戏物体移动

1、unity软件上安装system input 组件。菜单栏【window】-【Packag Manager】打开如下界面,查找Input System,并且安装。 2、安装成功后插入手柄到windows上,打开菜单栏上【window】--【Analysis】--【Input Debuger】 进入Input Debug界面,可以看到手柄设备能被Unity识别。…

刷代码随想录有感(31):删除字符串中所有相邻重复项

题干&#xff1a; 代码&#xff1a; class Solution { public:stack<char> st;string res "";string removeDuplicates(string s) {for(char i : s){if(st.empty() || st.top() ! i){st.push(i);}else{st.pop();}}while(!st.empty()){res st.top();st.pop()…

使用云服务器搭建CentOS操作系统

云服务器搭建CentOS操作系统 前言一、购买云服务器腾讯云阿里云华为云 二、使用 XShell 远程登陆到 Linux关于 Linux 桌面下载 XShell安装XShell查看 Linux 主机 ip使用 XShell 登陆主机 三、无法使用密码登陆的解决办法 前言 CentOS是一种基于Red Hat Enterprise Linux&#…

:app debug:armeabi-v7a failed to configure C/C++

报错信息 由于刚换电脑不久&#xff0c;新建native c工程时&#xff0c;出现报错如下&#xff1a; :app debug:armeabi-v7a failed to configure C/C null java.lang.NullPointerExceptionat com.android.build.gradle.tasks.CmakeQueryMetadataGenerator.getProcessBuilder(…

了解大语言模型的参数高效微调(Parameter-Effcient Fine-Tuning)

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 大语言模型在众多应用领域实现了突破性的进步&#xff0c;显著提升了各种任务的完成度。然而&#xff0c;其庞大的规模也带来了高昂的计算成本。这些模型往往包含数十亿甚至上千亿参数&#xff0c;需要…