大语言模型-Transformer-Attention Is All You Need

一、背景信息:

Transformer是一种由谷歌在2017年提出的深度学习模型。

主要用于自然语言处理(NLP)任务,特别是序列到序列(Sequence-to-Sequence)的学习问题,如机器翻译、文本生成等。Transformer彻底改变了之前基于循环神经网络(RNNs)和长短期记忆网络(LSTMs)的序列建模范式,并且在性能上取得了显著提升。

二、整体结构:

Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。

Transformer 的输入
Transformer 的输入由 x的 词向量位置向量 相加得到。
其中Transformer 在位置向量中保存单词在序列中的相对或绝对位置信息,位置向量由PE(Positional Encoding)表示:

eg:假设n为序列长度,d为表示向量维度,原始输入为 X o r i − i n p u t X_{ori-input} Xoriinput [ x 1 , x 2 . . . x n ] [x_{1},x_{2}...x_{n} ] [x1,x2...xn]
则,原始输入 X o r i − i n p u t X_{ori-input} Xoriinput的词向量矩阵为 X W E X_{WE} XWE其维度为(n, d),
原始输入 X o r i − i n p u t X_{ori-input} Xoriinput的位置向量矩阵 X P E X_{PE} XPE维度也为(n, d),
最终 Transformer 的输入矩阵 X i n p u t X_{input} Xinput = X W E X_{WE} XWE + X P E X_{PE} XPE维度也是(n, d)。

三、 Encoder

Encoder 部分由6个Encoder block 组成。
Encoder block 由Multi-Head Attention结合Add & Norm、Feed Forward结合 Add & Norm 组成。
即由下面两部分组成:
X = L a y d e r N o r m ( X i n p u t + M u l t i H e a d A t t e n t i o n ( X i n p u t ) ) X = LayderNorm(X_{input} + MultiHeadAttention(X_{input})) X=LayderNorm(Xinput+MultiHeadAttention(Xinput))
X = L a y d e r N o r m ( X + F e e d F o r w o r d ( X ) ) X = LayderNorm(X + FeedForword(X)) X=LayderNorm(X+FeedForword(X))

MultiHeadAttention部分
其中MultiHeadAttention为多个Self-Attention进行Concat后linear而成:
Q = X i n p u t × W q Q = X_{input} \times W_{q} Q=Xinput×Wq
K = X i n p u t × W k K = X_{input} \times W_{k} K=Xinput×Wk
V = X i n p u t × W v V = X_{input} \times W_{v} V=Xinput×Wv
Z = A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Z = Attention(Q, K, V) = softmax( \frac{QK^{T} }{\sqrt{d_{k}} } )V Z=Attention(Q,K,V)=softmax(dk QKT)V
其中, Z 1 . . . . Z 8 Z_{1}....Z_{8} Z1....Z8为X_{input} 经过8个不同Self-Attention得到的结果
X = M u l t i H e a d A t t e n t i o n ( X i n p u t ) = L i n e a r ( C o n c a t ( Z 1 , Z 2 . . . . Z 8 ) ) X =MultiHeadAttention(X_{input} ) = Linear(Concat(Z_{1},Z_{2}....Z_{8})) X=MultiHeadAttention(Xinput)=Linear(Concat(Z1,Z2....Z8))

FeedForword部分
Feed Forward 层,是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数,公式如下。

F e e d F o r w o r d ( X ) = m a x ( 0 , X W 1 + b 1 ) W 2 + b 2 FeedForword(X) = max(0, XW_{1} + b_{1})W_{2} + b_{2} FeedForword(X)=max(0,XW1+b1)W2+b2

四、 Decoder

Decoder 由 6个Decoder block 以及最后的一个linear组成。
Decoder block 由 一个带有 Masked的Multi-Head Attention结合Add & Norm和一个Multi-Head Attention结合Add & Norm以及一个Feed Forward结合 Add & Norm 组成。

X o u t p u t = X o u p u t − o r i ⊗ X M a s k X_{output}=X_{ouput-ori }\otimes X_{Mask} Xoutput=XouputoriXMask
X = L a y d e r N o r m ( X o u t p u t + M a s k M u l t i H e a d A t t e n t i o n ( X o u p u t ) ) X = LayderNorm(X_{output} + MaskMultiHeadAttention(X_{ouput})) X=LayderNorm(Xoutput+MaskMultiHeadAttention(Xouput))

X = L a y d e r N o r m ( X + M u l t i H e a d A t t e n t i o n ( [ X a s Q , E C a s K , E C a s V ] ) X = LayderNorm(X + MultiHeadAttention([X_{as Q}, EC_{as K}, EC_{as V}]) X=LayderNorm(X+MultiHeadAttention([XasQ,ECasK,ECasV])
X r e s u l t = S o f t m a x ( X ) X_{result} = Softmax(X) Xresult=Softmax(X)

带有 Masked的Multi-Head Attention层
其中带有 Masked的Multi-Head Attention中 X o u p u t X_{ouput} Xouput为Transformer 标签对应输出向量; X o u p u t − o r i X_{ouput-ori} Xouputori需要先 ⊗ \otimes X M a s k X_{Mask} XMask得到 X o u p u t X_{ouput} Xouput
Q = X o u p u t × W q Q = X_{ouput} \times W_{q} Q=Xouput×Wq
K = X o u p u t × W k K = X_{ouput} \times W_{k} K=Xouput×Wk
V = X o u p u t × W v V = X_{ouput} \times W_{v} V=Xouput×Wv
Z = A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ⊗ X M a s k ) V Z = Attention(Q, K, V) = softmax( \frac{QK^{T} }{\sqrt{d_{k}} } \otimes X_{Mask} )V Z=Attention(Q,K,V)=softmax(dk QKTXMask)V

其中第二个 Multi-Head Attention层
Self-Attention 的 K, V矩阵使用的是根据Encoder编码的输出矩阵C计算得到 K, V; Self-Attention 的 Q矩阵是根据Decoder block中的Masked Multi-Head Attention层输出矩阵 Z 计算得到 Q。

Reference

1.Attention Is All You Need
2.Transformer模型详解(图解最完整版)
3.Self-Attention & Transformer完全指南:像Transformer的创作者一样思考

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

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

相关文章

上位机图像处理和嵌入式模块部署(香橙派AI Pro开发板试用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和工控机相比较,linux嵌入式开发板使用上面方便很多、也容易很多。很多的第三方库都可以通过yum、apt-get这样的方法直接下载到,不需要自己通过源代码重新进行编译、安装。因为自…

单链表<数据结构 C版>

目录 概念 链表的单个结点 链表的打印操作 新结点的申请 尾部插入 头部插入 尾部删除 头部删除 查找 在指定位置之前插入数据 在任意位置之后插入数据 测试运行一下: 删除pos结点 删除pos之后结点 销毁链表 概念 单链表是一种在物理存储结构上非连续、非顺序…

【C语言】 利用栈完成十进制转二进制(分文件编译,堆区申请空间malloc)

利用栈先进后出的特性,在函数内部,进行除二取余的操作,把每次的余数存入栈内,最后输出刚好就是逆序输出,为二进制数 学习过程中,对存储栈进行堆区的内存申请时候,并不是很熟练,一开始…

Linux操作系统的有关常用的命令

1.linux系统的概述 1.1 什么是Linux系统? Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦 兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受…

Unity 调试死循环程序

如果游戏出现死循环如何调试呢。 测试脚本 我们来做一个测试。 首先写一个死循环代码: using System.Collections; using System.Collections.Generic; using UnityEngine;public class dead : MonoBehaviour {void Start(){while (true){int a 1;}}}Unity对象设…

matlab simulink气隙局部放电仿真技术研究

1、内容简介 略 87-可以交流、咨询、答疑 2、内容说明 略 为了解决目前国内外局部放电仿真方法难以计算气隙局部放电暂态过程的问题 , 利用 MATLAB (SIMULINK ) 的公共模块库和电力系统专业模块库 , 根据单气隙局部放电仿真物理模型 , 构造了气隙局部放 电仿真计算的电…

C++_单例模式

目录 1、饿汉方式实现单例 2、懒汉方式实现单例 3、单例模式的总结 结语 前言: 在C中有许多设计模式,单例模式就是其中的一种,该模式主要针对类而设计,确保在一个进程下该类只能实例化出一个对象,因此名为单例。而…

新能源风机视觉数据集

需要的同学私信联系,推荐关注上面图片右下角平台自取下载。 全球风电装机的快速扩张推高了风电场运维巡检的需求,原本高度依赖人力的风电运维巡检工作正因智能化、数字化、无人化技术的应用出现变革。AI智慧风机检测可以促进风电领域运维检测新技术产、…

操作系统——文件管理

1)什么是文件? 2)单个文件的逻辑结构和物理结果之间是否存在制约关系? 本节内容较为抽象,本节要注意区分文件的逻辑结构和物理结构。 一、文件系统基础 1.文件的基本概念(一切皆文件) 文件&…

【漏洞复现】Netgear WN604 downloadFile.php 信息泄露漏洞(CVE-2024-6646)

0x01 产品简介 NETGEAR WN604是一款由NETGEAR(网件)公司生产的无线接入器(或无线路由器)提供Wi-Fi保护协议(WPA2-PSK, WPA-PSK),以及有线等效加密(WEP)64位、128位和152…

AVL树超详解上

前言 学习过了二叉树以及二叉搜索树后(不了解二叉搜索树的朋友可以先看看这篇博客,二叉搜索树详解-CSDN博客),我们在一般情况下对于二叉搜索树的插入与查询时间复杂度都是O(lgN),是十分快的,但是在一些特殊…

视频监控平台LntonCVS视频融合共享平台智慧安防视频监控汇聚应用方案

LntonCVS是一款功能强大且灵活部署的安防视频监控平台。它支持多种主流标准协议,包括GB28181、RTSP/Onvif、RTMP等,同时能够兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统的安防监控功能,还支持接入AI智能分析&#x…

医疗器械产品的 EMC(电磁兼容性)中A、B、C、D 类的区别是什么

在医疗器械产品的 EMC(电磁兼容性)中,按照 GB 17625.1 标准的分类,A、B、C、D 类的区别主要在于设备的谐波电流发射限值不同。 A 类设备:平衡的三相设备、不归属 B、C 或 D 类的设备、家用电器(不包括列入 …

TiDB实践—索引加速+分布式执行框架创建索引提升70+倍

作者: 数据源的TiDB学习之路 原文来源: https://tidb.net/blog/92d348c2 背景介绍 TiDB 采用在线异步变更的方式执行 DDL 语句,从而实现 DDL 语句的执行不会阻塞其他会话中的 DML 语句。按照是否需要操作 DDL 目标对象所包括的数据来划分…

直播带货还是新电商吗?

现在已经没有新电商和老电商区分,抖音现直播电商现在也算是传统电商了。直播电商这几年听起来非常的火热,但是它有天花板,最多也就3万亿的市场规模,为什么呢?因为它是基于 IP 模型的,有非常强的头部效应。 …

一分钟图情论文:《叙事信息的语义表示与组织结构研究》

叙事作为人类知识与信息交流的重要方式,其语义建模、形式化表示与组织在数智时代显得尤为重要。近日,由曲阜师范大学和武汉大学的侯西龙、王晓光教授合著论文《叙事信息的语义表示与组织结构研究》从语义表示和组织结构视角出发审视了叙事信息的复杂性和…

电子画册制作利器大揭秘,提升销量全靠它

​随着科技的不断发展,电子画册逐渐成为企业营销的新宠。它以生动活泼、互动性强的特点,吸引了众多消费者的目光。而一款优秀的电子画册制作利器,更是为企业提升了销量,实现了营销目标。本文将为大家揭秘电子画册制作的利器&#…

《基于 Kafka + Quartz 实现时限质控方案》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

密码学基础-Hash、MAC、HMAC 的区别与联系

密码学基础-Hash、MAC、HMAC 的区别与联系 Hash Hash 是一种从一段数据中创建小的数字“指纹”的方法。就像一个人的指纹代表一个人的信息一样,Hash 对输入的数据进行整理,生成一个代表该输入数据的“指纹” 数据。通常该指纹数据也可称之为摘要、散列…

linux配置podman阿里云容器镜像加速器

1.下载podman yum install -y podman systemctl status podman systemctl start podman 2.获取阿里云个人容器镜像加速器地址 访问阿里云官网:首先,您需要访问阿里云(Alibaba Cloud)的官方网站。阿里云官网的URL是:…