对Transformer的理解。

要理解Transformer,需要先理解注意力机制,下面大部分内容来自台大教授李宏毅老师讲课资料。

注意力机制

之前使用的MLP,CNN,RNN模型可以解决一些简单序列问题,但当序列长度太长容易失去效果,原因是看了新的忘了旧的,网络很难关注到相距很远的 token 之间的联系,于是注意力机制被引入到深度学习中,并且目前已经一招鲜吃遍天了。

注意力的设计可以有很多方式,如下图的两种设计方式。绿色框表示两个token。
在这里插入图片描述
目前大部分采用第一种方式,下面来说说自注意力机制。

设想我们要在一大堆文档里面通过关键词快速搜索到最相关的文档,一个较为合理的做法就是首先通过词频-逆文档频率或其他方法得到所有文档对应的特征词语,然后使用关键词和每个文档的特征词之间的相似度,这个分数就叫做attention score,关键词就是q,特征词就是k,如果我们最终是要得到一个特征向量,那么就讲attention score和每个文档特征进行加权求和,当然首先需要对attention score 经过一个softmax层进行归一化。那么这里的文档特征就类似于v

如下图这是Attention Score的计算方式
在这里插入图片描述
首先将每个token ( a 1 , a 2 , a 3 , a 4 ) (a^1,a^2,a^3,a^4) a1,a2,a3,a4经过参数矩阵 W q W^q Wq 计算得到 ( q 1 , q 2 , q 3 , q 4 ) (q^1,q^2,q^3,q^4) q1,q2,q3,q4和参数矩阵 W k W^k Wk 计算得到 ( k 1 , k 2 , k 3 , k 4 ) (k^1,k^2,k^3,k^4) k1,k2,k3,k4,然后将每个 q 与 k 进行计算得到 attention score 再经过softmax层进行归一化。

得到注意力特征向量
在这里插入图片描述
使用归一化的注意力分数乘以v再加权求和得到 a 1 a^1 a1 对应的全局特征向量 b 1 b^1 b1,后面的计算方式相似,相继得到 b 2 , b 3 , b 4 b^2,b^3,b^4 b2,b3,b4等等。

如果用矩阵来表示就是:
K = W K A Q = W Q A V = W V A B = V s o f t m a x ( K T Q ) K = W^KA\\ Q = W^QA\\ V=W^VA\\ B = V softmax(K^TQ) K=WKAQ=WQAV=WVAB=Vsoftmax(KTQ)
其特点是可以并行运行、输入输出长度相同。

多头注意力

多头注意力就是每个词获得多个k,q,v对,这样做的主要目的是每个k,q,v对可能代表不同的侧重点,同时扩充网络参数。

Encoder层

Transformer的Encoder
在这里插入图片描述
首先将原始token经过多头注意力注意力层得到注意力特征,然后经过残差加和和层正则化,将正则化结果输入到前馈网络里面再进行残差加和和层正则化。

详细结构
在这里插入图片描述

Decoder层

Decoder层和Encoder很类似,如果不看交叉注意力的的话。
在这里插入图片描述

交叉注意力,用当前的查询向量q去计算对方的注意力分数。
在这里插入图片描述

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

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

相关文章

python 列表的高级应用

当前版本: Python 3.8.4 简介 列表(list)是Python编程语言中的基本数据类型之一,也是一个非常重要的通用序列。在其它编程语言中,它们通常被称为“数组”。可以存储多个元素,包括数字、字符串、甚至其他列…

python 字符串的详细处理方法

当前版本: Python 3.8.4 简介 字符串是由字符组成的序列,可以用单引号、双引号或三引号(单引号或双引号的连续使用)括起来。一般用来表示和处理文本信息,可以是字母、数字、标点符号以及其他特殊字符,用于…

力扣每日一练(24-1-14)

做过类似的题,一眼就是双指针,刚好也就是题解。 if not nums:return 0p1 0 for p2 in range(1, len(nums)):if nums[p2] ! nums[p1]:p1 1nums[p1] nums[p2]return p1 1 根据规律,重复的数字必定相连,那么只要下一个数字与上一…

WeNet2.0:提高端到端ASR的生产力

摘要 最近,我们提供了 WeNet [1],这是一个面向生产(工业生产环境需求)的端到端语音识别工具包,在单个模型中,它引入了统一的两次two-pass (U2) 框架和内置运行时(built-in runtime)…

SpringCloud.04.熔断器Hystrix( Spring Cloud Alibaba 熔断(Sentinel))

目录 熔断器概述 使用Sentinel工具 什么是Sentinel 微服务集成Sentinel 配置provider文件,在里面加入有关控制台的配置 实现一个接口的限流 基本概念 重要功能 Sentinel规则 流控规则 简单配置 配置流控模式 配置流控效果 降级规则 SentinelResource…

Linux/Traverxec

Enumeration nmap 使用nmap快速扫描目标,发现对外开放了22和80,第一个问题就是问80端口运行的是什么服务,针对这两个端口扫描对应的详细信息后就能得到答案 Nostromo 从nmap的扫描结果可以看到,目标开启了80端口,且…

一二三应用开发平台文件处理设计与实现系列之5——MinIO技术预研

背景 上篇介绍了文件读写框架设计与实现,同时顺便说明了本地磁盘存储模式的实现模式。 今天来说下基于文件读写框架,如何集成对象存储组件minio,集成之前,需要对minio进行必要的了解,本篇是minio的技术预研。 minio简…

Python - 深夜数据结构与算法之 AVL 树 红黑树

目录 一.引言 二.高级树的简介 1.树 2.二叉树 3.二叉搜索树 4.平衡二叉树 三.AVL 树 ◆ 插入节点 ◆ 左旋 ◆ 右旋 ◆ 左右旋 ◆ 右左旋 ◆ 一般形式 ◆ 实际操作 ◆ 总结 四.红黑树 ◆ 概念 ◆ 示例 ◆ 对比 五.总结 一.引言 前面我们介绍了二叉树、二叉…

论文阅读 Self-Supervised Burst Super-Resolution

这是一篇 ICCV 2023 的文章,主要介绍的是用自监督的方式进行多帧超分的学习 Abstract 这篇文章介绍了一种基于自监督的学习方式来进行多帧超分的任务,这种方法只需要原始的带噪的低分辨率的图。它不需要利用模拟退化的方法来构造数据,而且模…

爬虫验证码分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 本文只做简单的验证码分析,不涉及扣代码等逆向 一、常见得验证码平台 易盾:https://dun.163.com/pr…

重学Java 5 idea详细使用和运算符

慢点跑,前面的路不好走 ——24.1.14 一、IDEA的使用 1.idea的介绍 1.概述:开发工具 2.特点: a、idea是java写的,所以本地上必须有正确的jdk环境 b、idea自动保存 c、不用我们打开dos命令窗口执行javac和java命令 d、idea有强大的…

数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)一

第四部分、字符串,数据结构中的串存储结构 串存储结构,也就是存储字符串的数据结构。 很明显,字符串之间的逻辑关系也是“一对一”,用线性表的思维不难想出,串存储结构也有顺序存储和链式存储。 提到字符串&#xff…

Python 自学(八) 之模块

目录 1. import语句导入模块 P206 2. from ... import 语句导入模块 P207 3. 模块的搜索目录 sys.path P209 4. 以主程序的形式执行 __name__ P212 5. python中的包 P213 1. import语句导入模块 P206 同一目录下&…

【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码,请转文末观看代码获取方式~ 1 基本定义 SSA奇异谱分析(Singular Spectrum Analysis)是一种处理非线性时间序列数据的方法,可以对时间序列进行分析和预测。 它基于构造在时间序列上的特定矩阵的奇异值分解&#…

12AOP面向切面编程/GoF之代理模式

先看一个例子: 声明一个接口: // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口: package com.sunsplanter.prox…

编曲混音FL Studio21.2对电脑有什么配置要求

FL Studio 21是一款非常流行的音乐制作软件,它可以帮助音乐人和制作人创作出高质量的音乐作品。然而,为了保证软件的稳定性和流畅性,用户需要知道FL Studio 21对电脑的配置要求。本文将介绍FL Studio 21的配置要求,以帮助用户选择…

Open CV 图像处理基础:(七)学习 OpenCV 的图像增强和边缘检测功能

在Java中学习使用 OpenCV 的图像增强和边缘检测功能 目录 在Java中学习使用 OpenCV 的图像增强和边缘检测功能前言图像增强功能对比度调整(Core.addWeighted())函数原型:参数说明:代码:示例 直方图均衡化(I…

强化学习应用(五):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

图形化编程:开启孩子创新思维的新途径

在科技日新月异的今天,编程已经成为了一项重要的技能。然而,对于孩子们来说,传统的编程语言可能会显得过于复杂和抽象。这时,图形化编程就显得尤为重要。那么,什么是图形化编程?它对孩子有什么帮助呢&#…

web前端算法简介之字典与哈希表

回顾 栈、队列 : 进、出 栈(Stack): 栈的操作主要包括: 队列(Queue): 队列的操作主要包括: 链表、数组 : 多个元素存储组成的 简述链表:数组&…