【神经网络与深度学习】Transformer原理

transformer

在这里插入图片描述

ENCODER

在这里插入图片描述

输入部分

对拆分后的语句x = [batch_size, seq_len]进行以下操作

  1. Embedding
    将离散的输入(如单词索引或其他类别特征)转换为稠密的实数向量,以便可以在神经网络中使用。
  2. 位置编码
    与RNN相比,RNN是一个字一个字的输入,自然每个字的顺序关系信息就会保留下来。但在Encoder中,一个句子的每一个字(词)是并行计算的(下一节解释),所以我们在输入的时候需要提前引入位置信息。
    位置信息由: pos(一句话中的第几个字) 和 i (这个字编码成向量后的第i维) 来确定
    下面是Positional Encoding的公式:
    i为 偶 数 时 , P E p o s , i = s i n ( p o s / 1000 0 2 i / d m o d e l ) PE_{pos, i}= sin( pos/ 10000^{2i/ d_{model}}) PEpos,i=sin(pos/100002i/dmodel)
    i为 奇 数 时 , P E p o s , i = c o s ( p o s / 1000 0 2 i / d m o d e l ) PE_{pos, i}= cos( pos/ 10000^{2i/ d_{model}}) PEpos,i=cos(pos/100002i/dmodel)
    d m o d e l d_{model} dmodel指想用多长的 vector 来表达一个词(embedding_dim)

通过输入部分
x: [batch_size, seq_len, embedding_dim]

在这里插入图片描述

多头注意力机制

  1. 单头注意力机制
    对一句话中第i个字的字向量 a i a_i ai,产生三个矩阵Q, K ,V
    Q,K,V的维度都为[batch_size, seq_len, embedding_dim]

a i a_i ai分别与上面三个矩阵相乘,得到三个向量 q i , k i , v i q_i, k_i, v_i qi,ki,vi
如果要计算第1个字向量与句子中所有字向量的注意力:
将查询向量 q 1 q_1 q1与 所有的字向量的键向量 k i k_i ki相乘得到 a l p h a 10 , a l p h a 11 , . . . , a l p h a 1 , s e q l e n alpha_{10}, alpha_{11},...,alpha_{1,seqlen} alpha10,alpha11,...,alpha1,seqlen
将这写数值进行softmax处理后, 分别与 v i v_i vi相乘再合加得到最终结果 b 1 b_1 b1

在这里插入图片描述

  1. 多头注意力机制
    Q , K , V Q,K,V Q,K,V三个大矩阵变成n个小矩阵(seq_len, embedding_dim/n) n=8
    用上节相同的方式计算8个矩阵,然后把每一个head-Attention计算出来的b矩阵拼在一起,作为输出

Add&LN

Add是用了残差神经网络的思想,也就是把Multi-Head Attention的输入的a矩阵直接加上Multi-Head Attention的输出b矩阵(好处是可以让网络训练的更深)得到的和 b ˉ \bar{b} bˉ矩阵

再在经过Layer normalization(归一化,作用加快训练速度,加速收敛)把
每一行(也就是每个句子)做归一为标准正态分布,最后得到 b ^ \hat{b} b^
BN 和 LN:

  1. LN: 在一个样本内做归一化 适于RNN,transformer
  2. BN: 对batch_size里面的样本按对应的特征做归一化 适于CNN
    在这里插入图片描述

Feed_forward前馈神经网络

把Add & Layer normalization输出 b ^ \hat{b} b^,经过两个全连接层,再经过Add & Layer normalization得到最后输出 o 矩阵

DECODER

masked_多头注意力机制

比如我们在中英文翻译时候,会先把"我是学生"整个句子输入到Encoder中,得到最后一层的输出后,才会在Decoder输入"S I am a student"(s表示开始),但是"S I am a student"这个句子我们不会一起输入,而是在T0时刻先输入"S"预测,预测第一个词"I";在下一个T1时刻,同时输入"S"和"I"到Decoder预测下一个单词"am";然后在T2时刻把"S,I,am"同时输入到Decoder预测下一个单词"a",依次把整个句子输入到Decoder,预测出"I am a student E"

多头注意力机制

Decoder 的 Multi-Head Attention 的输入来自两部分,
K,V 矩阵来自Encoder的输出,
Q 矩阵来自 Masked Multi-Head Attention 的输出
在这里插入图片描述

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

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

相关文章

Django Rest Framework 全局异常处理

在Django Rest Framework(DRF)中,全局异常处理是一种重要的机制,它可以帮助我们更好地管理API中的异常情况,并返回统一的错误响应。本文将详细介绍两种全局异常处理的方法:使用中间件(Middlewar…

机器学习(3)

目录 3-1线性回归 3-2最小二乘解 3-3多元线性回归 3-4广义线性模型 3-5对率回归 3-6对率回归求解 3-7线性判别分析 3-8LDA的多类推广 3-9多分类学习基本思路 3-10类别不平衡 3-1线性回归 线性模型为什么重要? 人类在考虑问题时,通常…

用python写一个自动生成android开机动画的工具

要创建一个自动生成Android开机动画的工具,你需要一些基本的知识,比如Python编程、图像处理和Android开机动画的格式。以下是一个简单的Python脚本示例,它可以生成一个基本的Android开机动画,具体效果可能需要更多的调整和优化。 …

记录glide加载图片,设置圆角

支持所有角的圆角,自动计算合适的半径,不用担心图片比预定值小导致的圆角过大的问题 修改自:https://blog.csdn.net/qq_15059163/article/details/97613790 增加了指定图片尺寸、解决了图片某些情况下圆角过大的问题 public class GlideRou…

先有JVM还是先有垃圾回收器?很多人弄混淆了

是先有垃圾回收器再有JVM呢,还是先有JVM再有垃圾回收器呢?或者是先有垃圾回收再有JVM呢?历史上还真是垃圾回收更早面世,垃圾回收最早起源于1960年诞生的LISP语言,Java只是支持垃圾回收的其中一种。下面我们就来刨析刨析…

外卖系统的JWT实现登录

1、什么是JWT jwt可以生成一个加密的token,作为用户登录的令牌,当用户登陆成功之后,发放给客户端。请求需要登录的资源或者接口的时候,将token携带,后端验证token是否合法。jwt有三部分组成: A:…

【特大喜讯】国内前33位持有PMI-RMP风险管理专业认证的学员分享~!

【学员背景】 沈阳某信息科技有限公司,从事企业采购供应链数字化转型方向; 为企业提供有效的降本增效解决方案。 【学员顺利拿证后期访问】 问:学员您好,首先恭喜您顺利拿到RMP证书,请问您在此次备考过程中&#xf…

抖店商品详情API接口(产品参数|详情图)

抖店商品详情API接口(产品参数|详情图) 参数仅供参考: {"code": 0,"msg": "调用成功","time": "1715763239","data": {"properties": [{"format": [{"message": [{&q…

C语言简要(一)

总得让她开心吧 helloworld #include <stdio.h>int main() {printf("hello world!\n");return 0; } 程序框架 #include <stdio.h> int main {return 0; }输出 printf("hello world!\n"); "里面的内容叫做“字符串”&#xff0c;prin…

BUUCTF靶场[MISC]wireshark、被嗅探的流量、神秘龙卷风、另一个世界

[misc]wireshark 考点&#xff1a;流量、追踪流 工具&#xff1a;wireshark 先看题目&#xff0c;管理员密码 将下载的文件用wireshark打开&#xff0c;查找flag 点击追踪tcp流&#xff0c;开始挨个查看flag [misc]被嗅探的流量 考点&#xff1a;流量、追踪流 工具&#xf…

武汉星起航:亚马逊构建综合性商业生态,卖家买家共享全球化红利

在当今全球化日益加速的时代&#xff0c;亚马逊不仅以其卓越的电商平台服务全球消费者&#xff0c;更通过一系列前沿服务打造了一个综合性的商业生态系统。在这个生态系统中&#xff0c;卖家能够轻松拓展全球业务&#xff0c;买家则享受到了前所未有的购物体验。亚马逊以其独特…

FreeRTOS【6】线程优先级

1.开发背景 基于上一篇指引&#xff0c;已经了解了线程的阻塞&#xff0c;这个篇章主要介绍线程优先级的影响 2.开发需求 设计实验验证高优先级会抢占低优先级线程 CPU 3.开发环境 window10 MDK STM32F429 FreeRTOS10.3.1 4.实现步骤 1&#xff09;创建测试线程&#xff…

测试之路 - 精准而优雅

引子 这几年业内一直在做精准测试&#xff0c;大都使用工具 diff 代码改动、分析代码覆盖率这些平台集成的能力。 业务测试中&#xff0c;我们在技术设计和代码实现的基础上也做了一些精减和精准的测试实践&#xff0c;通过深入测试有针对的设计 case&#xff0c;发现隐藏问题…

抖音小程序使用Vant

安装 Vant 有针对小程序的版本&#xff0c;通过npm安装&#xff1a; npm i vant/weapp -S --production构建 npm 安装 Vant Weapp 后需要构建 NPM&#xff0c;在菜单的【工具】选项中选择【构建 NPM】&#xff1a; 使用组件 抖音小程序和微信小程序还是有一些差别的&#x…

怎么把3d模型导出cad立面---模大狮模型网

在设计工作中&#xff0c;将3D模型导出到CAD软件并生成立面图是一项常见但关键的任务。这不仅有助于更好地展示设计方案&#xff0c;还能方便后续的工程制图和施工。本文将介绍如何通过3ds Max软件将3D模型导出到CAD软件&#xff0c;并生成高质量的立面图&#xff0c;为您提供实…

现货正泰漏电小型断路器NXB-32LE-C16 30MA1P+N原装正品NXB-40L

品牌&#xff1a;CHNT/正泰 型号&#xff1a;NXBLE 额定电流&#xff1a;25A,16A,20A,40A,32A 漏电保护器类型&#xff1a;2P 产地&#xff1a;中国大陆 电压&#xff1a;1000V及以下 极数&#xff1a;3P,4p,2P,1PN 电源方式&#xff1a;交流电 3C证书编号&#xff1a;…

大模型时代下的先行者:景联文科技引领数据标注新时代

在大模型时代&#xff0c;数据标注不再是简单的分类标注&#xff0c;而是一项融合了技术革新、专业技能、法律合规和精细化管理的综合性任务&#xff0c;对推动AI技术的发展和落地应用具有重要意义。 景联文科技作为AI基础行业的数据供应商&#xff0c;可协助人工智能企业解决整…

easyx快速入门1

1.基本说明 EasyX 是针对 C 的图形库&#xff0c;可以帮助 C/C 初学者快速上手图形和游戏编程。 比如&#xff0c;可以基于 EasyX 图形库很快的用几何图形画一个房子&#xff0c;或者一辆移动的小车&#xff0c;可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏&#xff0c;可以练…

fl studio试用版文件保存无法打开??一个方法教你免费打开!

前言 当下&#xff0c;各款编曲软件五花八门&#xff0c;而这其中最有声誉的必为FL Studio莫属 这个软件呢国人习惯叫他水果&#xff0c;拥有强大的录音、编曲、混音等功能&#xff0c;所以广受音乐圈欢迎。如今&#xff0c;大部分水果一旦有编曲所需&#xff0c;一般都要使用…

【Python快速上手(二十三)】

目录 Python快速上手&#xff08;二十三&#xff09;Python3 多线程1. 线程的创建2. 线程同步2.1 锁&#xff08;Lock&#xff09;2.2 信号量&#xff08;Semaphore&#xff09;2.3 事件&#xff08;Event&#xff09;2.4 条件&#xff08;Condition&#xff09; 3. 线程优先级…