注意力机制汇总----(2)

本文介绍了自注意力机制,包括query、key和value的概念,以及在机器翻译中的应用。通过计算查询与键的相似度,自注意力机制赋予不同信息不同的权重,解决编码过程中信息丢失的问题。后续章节将探讨多头注意力机制。

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

注意力机制汇总----self-Attention

Self-Attention


前期回归: 注意力机制汇总----(1)

Tips: Transformer算法就是由self-Attention构成,此外还使用了多头注意力机制

简介

本章我们重点研究自注意力机制,首先一个重要的概念即query、key和value。这三个词翻译成中文就是查询、键、值,看到这中文的意思,还是迷迷糊糊的。我们来举个例子:小明想在b站搜索深度学习,他把深度学习四个字输入到搜索栏,按下搜索键。搜索引擎就会将他的查询query映射到数据库中相关的标签key,如吴恩达、神经网络等等,然后向小明展示最匹配的结果value

注意力的本质是权重分配,是一种从一系列输入中选择性地提取信息的结构。

**问:**attention机制最初解决了什么问题?

答:seq2seq任务(机器翻译–典型任务)中,输入的句子经过编码器获得一个总结向量(包含全部输入信息的向量),随后经过解码器逐步获得输出。编码过程是有损的,中间的总结向量易过载

在这里插入图片描述

引入Attention机制,就可以加强编码与解码之间的联系,减少编码时候的信息丢失

公式

注意力机制公式:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T / d k 1 / 2 ) V Attention(Q,K,V) = softmax(QK^T/d_k^{1/2})V Attention(Q,K,V)=softmax(QKT/dk1/2)V
还是以上面搜索的案例来做分析.

  1. 首先计算“深度学习(Query)”与“数据库(Key)”的线性关系;向量点乘代表向量间的线性关系
  2. 然后除以dk,dk表示词向量的维度,此举是为了防止QK过大,导致softmax计算溢出(overflow)
  3. 然后进行softmax计算Value相乘得到输出,此举相当于将得到的系数与输入x相乘,得到经过注意力机制加权求和后的表示

图解

将输入的词经过embedding,在经过一些列操作得到输入X,X和三个可训练的矩阵相乘,得到Q,K,V。这三个参数本质上X的线性变换,是为了提高模型的拟合能力

在这里插入图片描述

我们可以这样来:

  • 计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。

  • 从概念上理解,把Attention仍然理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息,这种思路仍然成立。聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的Value值上,即权重代表了信息的重要性,而Value是其对应的信息。

代码

self-Attention

import torch.nn as nn  
import torch   
  
class Self_Attention(nn.Module):  
	def __init__(self, dim, dk, dv):  
		super(Self_Attention, self).__init__()  
		self.scale = dk ** -0.5  
		self.q = nn.Linear(dim, dk)  
		self.k = nn.Linear(dim, dk)  
		self.v = nn.Linear(dim, dv)  
  
  
	def forward(self, x):  
		q = self.q(x)  
		k = self.k(x)  
		v = self.v(x)  
  
		attn = (q @ k.transpose(-2, -1)) * self.scale  
		attn = attn.softmax(dim=-1)  
		x = attn @ v  
		return x  
		
att = Self_Attention(dim=2, dk=2, dv=3)  
x = torch.rand((1, 4, 2))  
output = att(x)

下一章描述多头注意力机制。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值