前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >注意力机制介绍

注意力机制介绍

原创
作者头像
@小森
发布2024-12-22 22:59:50
发布2024-12-22 22:59:50
1202
举报

注意力概念

  • 我们观察事物时,之所以能够快速判断一种事物(当然允许判断是错误的), 是因为我们大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断,而并非是从头到尾的观察一遍事物后,才能有判断结果. 正是基于这样的理论,就产生了注意力机制。

注意力计算规则

需要三个指定的输入Q(query), K(key), V(value), 然后通过计算公式得到注意力的结果, 这个结果代表query在key和value作用下的注意力表示. 当输入的Q=K=V时, 称作自注意力计算规则

Q, K, V的比喻解释:

你在一个巨大的图书馆里,想要找到一本特定的书。这个过程可以类比为注意力机制中的Q、K、V。

  1. Q(查询)
    • 你心中有一个明确的目标,比如“我想找一本关于人工智能的书”。这个目标就是你的查询(Q)
    • 查询是你想要找到的信息或答案的核心问题。
  2. K(键)
    • 图书馆里的每一本书都有一个标签或索引,告诉你这本书的主题、作者、出版年份等信息。这些标签就是键(K)
    • 键是用来匹配查询的,它们帮助你确定哪本书可能与你的查询相关。
  3. V(值)
    • 当你找到与查询匹配的书时,书的内容就是值(V)
    • 值是你最终想要获取的信息,它是对查询的回答或解释。

常见的注意力计算规则

  • 将Q,K进行纵轴拼接, 做一次线性变化, 再使用softmax处理获得结果最后与V做张量乘法.

  • 将Q,K进行纵轴拼接, 做一次线性变化后再使用tanh函数激活, 然后再进行内部求和, 最后使用softmax处理获得结果再与V做张量乘法.

  • 将Q与K的转置做点积运算, 然后除以一个缩放系数, 再使用softmax处理获得结果最后与V做张量乘法.

什么是注意力机制

注意力机制是注意力计算规则能够应用的深度学习网络的载体, 同时包括一些必要的全连接层以及相关张量处理, 使其与应用网络融为一体. 使用自注意力计算规则的注意力机制称为自注意力机制

Attention机制的工作原理

  • 阶段一: query 和 key 进行相似度计算,得到一个query 和 key 相关性的分值
  • 阶段二: 将这个分值进行归一化(softmax),得到一个注意力的分布
  • 阶段三: 使用注意力分布和 value 进行计算,得到一个融合注意力的更好的 value 值

有无注意力的seq2seq 架构对比

无attention机制的模型

无Attention的Seq2Seq模型由Encoder和Decoder两部分组成。Encoder将输入序列编码为一个固定长度的上下文向量(Context Vector),Decoder则基于该向量生成输出序列。这种模型的核心问题是:当输入序列较长时,Encoder生成的上下文向量可能无法完全捕捉输入序列的所有信息,导致Decoder在解码时丢失重要信息。

无Attention的Seq2Seq模型的计算复杂度较低,因为Encoder只需生成一个固定长度的上下文向量,Decoder在解码时也只需依赖该向量。这种模型的计算效率较高,适合处理较短的序列

有attention机制的模型

有Attention的Seq2Seq模型在Decoder解码时,不仅依赖于Encoder生成的上下文向量,还会动态计算输入序列中每个词与当前解码步骤的相关性,并根据这些相关性对输入序列的隐藏状态进行加权求和,生成动态的上下文向量。这种机制使得Decoder能够关注输入序列中与当前解码步骤最相关的部分,从而显著提升模型的表现

生成目标句子单词的过程:

有Attention的Seq2Seq模型在解码时需要为每个时间步计算输入序列中每个词的注意力权重,并根据这些权重生成动态的上下文向量。这种机制虽然提升了模型的表现,但也显著增加了计算复杂度,尤其是在处理长序列时,计算量会大幅增加。

Attention (AT) 经常被应用在从编码器(encoder)转换到解码器(decoder)。比如说,解码器的神经元会接受一些AT从编码层生成的输入信息。在这种情况下,AT连接的是**两个不同的组件**(component),编码器和解码器。

SA比较擅长在一个序列当中,寻找不同部分之间的关系。比如说,在词法分析的过程中,能够帮助去理解不同词之间的关系。AT却更擅长寻找两个序列之间的关系,比如说在翻译任务当中,原始的文本和翻译后的文本。

AT可以连接两种不同的模态,比如说图片和文字。SA更多的是被应用在同一种模态上,但是如果一定要使用SA来做的话,也可以将不同的模态组合成一个序列,再使用SA。

应用场景对比

无Attention的Seq2Seq模型 无Attention的Seq2Seq模型适合处理较短的序列,例如短文本翻译、简单的文本生成任务。由于其计算效率较高,适合在资源受限的场景下使用。

有Attention的Seq2Seq模型 有Attention的Seq2Seq模型适合处理较长的序列,例如长文本翻译、文本摘要、语音识别等任务。由于其能够动态捕捉输入序列中的重要信息,适合在需要高精度的场景下使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注意力概念
  • 注意力计算规则
  • 常见的注意力计算规则
  • 什么是注意力机制
    • 无attention机制的模型
    • 应用场景对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档