self attention(自注意力机制)

self attention(自注意力机制)selfattentio 是注意力机制中的一种 也是 transformer 中的重要组成部分 本文先重新回归一下注意力机制 再做进一步介绍 正如之前说的 注意力机制的目的是根据我们的目标 去关注部分细节 而不是基于全局进行分析 所以核心就是如何基于目标确定我们要关注的部分 以及在找到这部分细节之后进一步进行分析 这里先以文本匹配作为例子进行介绍 假设我们要分析两个文本是不是重复的 Iama

self attention是注意力机制中的一种,也是transformer中的重要组成部分,本文先重新回归一下注意力机制,再做进一步介绍。

正如之前说的,注意力机制的目的是根据我们的目标,去关注部分细节,而不是基于全局进行分析,所以核心就是如何基于目标确定我们要关注的部分,以及在找到这部分细节之后进一步进行分析。这里先以文本匹配作为例子进行介绍。

假设我们要分析两个文本是不是重复的:

I a m a s t u d e n t I\quad am\quad a\quad student Iamastudent Y o u a n d m e a r e s t u d e n t s You\quad and\quad me\quad are\quad students Youandmearestudents

我们可以结合BiLSTM和注意力机制进行分析,首先做word embedding,然后用BiLSTM处理分析上下文,得到新的词向量,再进入注意力机制部分,主要计算两个句子之间词与词的相似度,归一化后作为权重,并通过权重以及另一个句子的各个词向量,结合起来得到用另一个句子表示的该词的词向量。

比如我们现在分析I,也就是我们的目标是I,那么我们如何根据这个目标确定要关注的部分呢,那就是计算相似度,用I的词向量,和you、and、me等词向量相乘,得到相似度(这是词向量的特征,一般来说,两个词向量的意思越接近,距离和夹角就越小,所以乘积也会越大),对相似度做归一化得到权重,再用权重和you、and、me等词向量相乘,最后相加,就得到了用第二句话根据I而构建的词向量。像这样不断用第二句话表示第一句话的每个词,最后通过对比得到的新句子和原来的句子的差异程度,分析两句话是否重复,这就是注意力机制在文本重复度检测的应用。

那么self attention是什么意思呢,上面我们把注意力机制应用到两句话的分析,假如两句话都一样,或者说计算自己对自己的权重,那就是self attention了。这样做的目的,往往是为了充分考虑句子之间不同词语之间的语义以及语法联系,所以,这样重新计算得到的词向量,它就更进一步地考虑了上下文之间的联系了。

现在来更具体地描述这个过程:


self attention(自注意力机制)

图中x1、x2就是句子中的一个个词向量,然后我们有三个矩阵:WQ、WK、WV,通过把词向量和这三个矩阵相乘,得到新的三个向量,但是,这三个向量都是基于原先的词向量x生成的,比如我们可以把基于x1生成的qkv称为x1一号、x1二号、x1三号。关于为什么要基于一个向量生成三个新向量,我会在接下来的过程说一下我自己的理解。

下一步就是计算词与词之间的相似度,我们可以看一下下图,在计算thinking这个词和machines的相似度的时候,使用q1乘k2,这也是注意力机制中计算相似度的方法,其实都是通过向量相乘,那么为什么不像原来那样,直接就通过x1乘x2来计算相似度呢,我自己是这样理解的,q这个向量我觉得更多是为了保留单词本身的意思,也就是在不考虑上下文的情况下单单它一个单词的意思,而k则是为了在计算相似度的时候,能够放大词与词之间的异同而构建的新向量,或者说能够根据实际需求起到更多作用的向量,举个简单的例子,在分析相似性的时候,按道理一个单词和自己的相似度应该是最大的,可是在计算不同向量x的乘积也可能出现更大的相似度,这就不符合我们的假设了,而现在我们通过新向量qk相乘来计算相似度,通过模型的训练学习就可以避免这种情况,所以其实比起原来一个个词向量相乘,我们通过构建新的向量q和k,在计算相似度的时候灵活性会更大,效果会更好。


self attention(自注意力机制)

同样的,我觉得也是为了让模型更灵活,所以在计算相似度并转化为权重之后,并没有乘以原来的x或者q,而是又构建了一个新向量v,通过加权求和得到最终的输出z:


self attention(自注意力机制)

最后得到的z1、z2,就是我们的一个个词向量x1、x2,在分析了前后文之后,得到的新向量。其实也可以看出,self attention在这里和BiLSTM在处理词向量时候的目的都是一致的,那就是为原来割裂的词向量带来上下文的信息,那么self attention和BiLSTM相比有什么优点呢,第一,BiLSTM虽然确实比RNN改进了很多,但对于过长的序列依然没法很好地传输序列起点的信息,但是self attention并没有依赖词与词之间的顺序,而是通过计算词与词之间的相似度去挖掘信息,所以就不存在这种信息丢失的情况;第二,BiLSTM这种处理序列的模型,如果不计算出前一个时刻的结果,就没法计算下一个时刻的结果,所以就造成了无法并行计算,但是self attention因为计算相似度也是不存在这种依赖现象,所以可以很好地进行并行计算,大大提高了计算效率。可以说,BiLSTM成也序列败也序列啊。

发现这篇文章的浏览量比较高,但感觉写这篇文章时的我对注意力机制的理解还不够深,后来我又重新写了一篇注意力机制的汇总,有兴趣的可以看看

深度学习建模训练总结(五):梳理NLP发展里程碑——各种注意力机制对比分析

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200605.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:27
下一篇 2026年3月20日 上午10:27


相关推荐

  • WINDOWS XP安装SQL2000方法

    一.在SQL服务器的安装盘中找到MSDE这个目录,并且点击setup.exe安装它,过程简单直接下一步就OK了。二.重启系统WINDOWSXP,这下就可以看到SQL服务的图标出现了。三.再拿出SQL服务器版的安装光盘,直接安装客户端工具(最简单的方法就是直接点击光盘根目录下的autorun.exe)根据提示安装,自检过程中知道系统不是SERVER版,会提示只安装客户端工具。四.打开企业管理器

    2022年4月13日
    130
  • 什么是 SNI?_snidel中文

    什么是 SNI?_snidel中文参考:链接1链接2介绍是什么:SNI(ServerNameIndication)是TLS的扩展,这允许在握手过程开始时通过客户端告诉它正在连接的服务器的主机名称。作用:用来解决一个服

    2022年8月3日
    7
  • matlab读取txt文件中的数据_matlab读取文本文件

    matlab读取txt文件中的数据_matlab读取文本文件常用的主要有以下几种方法:1、load    Data=load("filename.txt");   该函数只能加载仅含有数字的文本文件,如果文档中夹杂着字母或者文字,就会报错。2、importdata    Data=importdata("filename.txt");    既可以读取数据又可以读取字符:Data.data矩阵里存放的是纯数字,Data.textdata矩阵…

    2025年9月19日
    10
  • Javascript保留两位小数

    Javascript保留两位小数javascript 语言 因为是弱类型语言 没有 java 那么多类型 所以在处理浮点数保留两位小数上 没有那么多办法 su 但是字符串和整数 浮点数还是有区别的

    2026年3月20日
    19
  • 数学建模算法学习——各类模型算法汇总[通俗易懂]

    数学建模算法学习——各类模型算法汇总[通俗易懂]相关模型解决的问题数据分析类算法一览100个经典动态规划方程优化问题线性规划简介:线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于号也可以是大于号。为了避免这种形式多样性带来的不便,Matlab中规定线性规划的标准形式为其中c和x为n维列向量,A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量。代码实现…

    2022年6月23日
    31
  • 虚拟存储器中页面置换算法的实现课程设计_段页式存储管理方式的内存地址为

    虚拟存储器中页面置换算法的实现课程设计_段页式存储管理方式的内存地址为设计目的 通过请求页式存储管理中页面置换算法模拟程序,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 设计内容 阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论。前提:(1)页面分配采用固定分配局部置换。(2)作业的页面走向…

    2026年4月14日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号