机器学习--自注意机制2 运作原理

本文详细介绍了自注意机制在序列标注中的应用,包括全连接网络的局限性、自注意力模型如何通过计算注意力分数并考虑上下文,以及从矩阵乘法角度理解其运作过程。重点强调了自注意力模型的学习参数仅限于Wq、Wk和Wv,其余操作固定不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、自注意机制的运作原理

1.运作机理

我们就先只讲第一个类型:输入跟输出数量一样多的状况,以序列标注(sequence labeling)
为例。
序列标注要给序列里面的每一个向量一个标签。虽然输入是一个序列,但可以不要管它是不是一
个序列,各个击破,把每一个向量分别输入到全连接网络里面得到输出。这种做法有非常大
的瑕疵,以词性标注为例,给机器一个句子:I saw a saw。对于全连接网络,这个句子中的两
个 saw 完全一模一样,它们是同一个词汇。既然全连接网络输入同一个词汇,它没有理由输
出不同的东西。但实际上,我们期待第一个 saw 要输出动词,第二个 saw 要输出名词。但全
连接网络无法做到这件事。
在这里插入图片描述
如何让全连接网络做到"考虑上下文"来给出我们期望的结果呢?
把每个向量的前后几个向量都“串”起来,一起输入到全连接网络就可以了
在这里插入图片描述
在语音识别里面,我们不是只看一帧判断这个帧属于哪一个音标,而是看该帧以及其前后 5 个帧(共 11 个帧)来决定它是哪一个音标。所以可以给全连接网络一整个窗口的信息,让它可以考虑一些上下文,即与该向量相邻的其他向量的信息。
在这里插入图片描述
但是这种的方法还是有极限的
如果有某一个任务不是考虑一个窗口就可以解决的,而是要考虑一整个序列才能够解决,那要怎么办呢?
有人可能会想窗口开大一点,大到可以把整个序列盖住就可以了。但是序列的长度是有长有短的,输入给模型的序列的长度,每次可能都不一样。如果要开一个窗口把整个序列盖住,可能要统计一下训练数据,看看训练数据里面最长序列的长度。接着开一个窗口比最长的序列还要长,才可能把整个序列盖住。但是开一个这么大的窗口,意味着全连接网络需要非常多的参数,可能不只运算量很大,还容易过拟合。
如果想要更好地考虑整个输入序列的信息,就要用到自注意力模型。

2.自注意模型

自注意力模型会“吃”整个序列的数据,输入几个向量,它就输出几个向量。
在这里插入图片描述

而这些向量都是考虑整个序列以后才得到的,所以输出的向量有一个黑色的框࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值