【自然语言处理三-self attention自注意是什么】

自然语言处理三-自注意力 self attention

  • 自注意力是什么?
    • 自注意力模型出现的原因是什么?
      • 词性标注
        • 问题
        • 解决方法1-扩展window,引用上下文
        • 解决方法2-运用seq2seq架构
        • 新问题来了:参数量增加、无法并行的顽疾
  • 自注意力self attention模型的工作流程
    • atttention的实现
      • 如何找到向量之间的相关性
        • Dot-product
        • Additive
        • 相关性(attention分数)的具体计算方法
    • 计算完attention层后的结果,作为FC的输入
    • atttention 到底是如何解决sequence长度以及并行等问题的呢?

自注意力是什么?

在了解自注意力之前,需要先了解注意力,这部分在上篇文章[【自然语言处理-二-attention注意力 是什么】介绍过了。

如果用一句简单的话来概括,就是指在输出的时候,需要关注的输入的哪一部分,以及需要关注的比重大概是多少,比如翻译hello,world这句话,翻译你的时候,对于输入的hello更关注一些。

这种注意力的模型在人工智能界被抽象成了下面这个样子:
在这里插入图片描述
模型中就有三个重要的向量,Query Keys和Values,简称Q K V,Q和K用于产生注意力的分数,而Value 与注意力分数矩阵做处理,产生输出。

按照上面这个抽象模型,我们在[【自然语言处理-二-attention注意力 是什么】,Q和K和V又分别是那些个呢?
1.Q和K分别是编码器中的输入乘上了相应的参数矩阵获取。
2.V是解码器的输入乘上了响应的矩阵参数。

需要注意的一点是,上面所列2点,获取注意力分数的操作可能不一定是矩阵的乘法操作。
可以发现,这里的Q K V的来源(生成Q K V矩阵的来源)是不同的,特殊一点的情况是,当 Q K V 来源于同一个输入的时候,我们就叫自注意力模型。

自注意力模型出现的原因是什么?

它的出现一定是解决了注意力模型或者其他模型无法解决的问题。那么就要来说说,之前的模型在处理具体问题的时候,有哪些难以克服的问题呢?

下面用一个实际的下游任务“词性标注”来举例

词性标注

比如有一句话I saw a saw。对这句话进行词性标注。如果我们的模型的网咯结构是全连接层,来处理这个问题
在这里插入图片描述
ps:其中的FC是fully connected的简写

问题

这时候会有一个问题,那就是saw这个词在这个句子里是两个词性不同的词,但是对于这个模型来说,同样的输入输出肯定是相同的输出。

解决方法1-扩展window,引用上下文

上面的怎么解决呢?出现这样的原因,是因为没有考虑上下文,于是我们做了改进,输入不再是单独的每个词,是一个包含了上下文的短句
改进后的模型如下:
在这里插入图片描述
这样可以解决现在的问题,但是又带来了另外一个问题,那就是这个上下文的窗口window的大小到底应该是多少?
最直观的想法就是说把整个sequence的长度作为window的大小不就解决了.
但是我们的句子可长可短,这种情况必须要统计训练资料里面最长的sequnce长度,另外全连接层的参数会极度扩张,不仅是运算量增加,还会导致过拟合,测试集上效果不佳。

解决方法2-运用seq2seq架构

这时候又有人说,这不正是上节课所讲的注意力的应用么,我们用seq2seq + rnn来解决这个问题

在这里插入图片描述
seq2seq的模型中,可以记住上下文,在解码器中就可以使用这些记忆,在此基础上再加上注意力不就很完美的解决了上下文的问题了么?

这个模型在上节课最后我们也说过,有它难以解决的问题 如下所述

新问题来了:参数量增加、无法并行的顽疾

运用seq2seq架构虽然可以解决部分记忆力的问题,但是还有很多问题:

  • 1.参数量增多。seq2seq的架构会增加注意力参数矩阵,且随着输入的长度而增加。

    2.无法并行,seq2seq的架构必须得先产生上一个时间步的输入,在计算下一个时间步的输出,也就说是有依赖关系的,无法实现并行计算,在今天的大模型的计算来说,这也算是一个致命的缺陷。

    3.记忆力实际并不全,因为seq2seq架构的记忆力来自于最后一个隐藏层的输出,不能代表所有输入的信息。

基于上面种种问题,就引出了自注意力,那么自注意力的模型究竟是怎么实现的,又是如何解决这些问题的呢?

自注意力self attention模型的工作流程

还是以文章开篇的词性识别为例,self attention的运转是这样的:

  1. self attention会处理整个输入sequence语句的向量,然后每个input vector输出对应的向量。这些向量是考虑了整个sequece的输入(这也是记忆力的由来)。
  2. 将这些考虑了整个sequence的输出向量,作为FC的输入,然后再做后续的处理。
    这个过程如下:
    在这里插入图片描述
    这个过程是不是很简单? 当然self attention和FC是可以嵌套多层的。那么这个self attention具体是怎么实现的呢?

atttention的实现

从上面也可以看出我们要实现的是这样一个目标:
输入一排向量,输出一排向量,且输出的向量要考虑了这一排的输入向量,这可以用下面这个图来表示
在这里插入图片描述
那么我们最重要的探讨就是**怎么从a1…到an,产生b1**呢?
这个问题的实质就是要解决从找到a1…到an的相关性,生成bi

如何找到向量之间的相关性

找到a1与其他的an的这些向量的相关性,这个相关性的分数我们记为 α。这个方法有很多种,下面是最常用的两种 Dot-product和Additive。

Dot-product

在这里插入图片描述
把输入各自乘上一个矩阵Wq和Wk , 然后做dot-product,得到α。

Additive

在这里插入图片描述
与上面类似,但是复杂一些,q和k不是直接做点乘,而是connect后又做tanh,再经过一个矩阵变换,获取α.

由于二者最终效果相差不多,本文以计算更为简单的Dot-product为例,怎么计算注意力分数α

相关性(attention分数)的具体计算方法

根据上述的Dot-product的方式,计算attention score
在这里插入图片描述

注: a1到a4 可能是模型的输入,也可能是隐藏层的输出,下文简化为输入。
首先是获取q k v矩阵:
查询q1:a1乘上矩阵Wq
ki:ai乘上矩阵Wk
vi:ai乘上矩阵Wv
然后执行下述:

  1. q和每一个k 做dot-product,得到注意力分数,实际的应用,在获取注意力的时候,也会获取对其本身ai的注意力(也就是q要和每一个ai生成的k,包括生成q的这个输入am,生成的km

  2. 做softmax(这个其实也可以换成RELU等等操作,不是固定的)上面这个四个步骤就最终如下:
    在这里插入图片描述

  3. b1的计算 。 softmax后的注意力分数 乘上 vi的和

在这里插入图片描述
然后依次计算其他bi,attention层的输出就计算完毕

计算完attention层后的结果,作为FC的输入

上述计算完attention层后,可以嵌套多层attention fc,一直到模型结束

atttention 到底是如何解决sequence长度以及并行等问题的呢?

本篇幅太长了,这部分我们会在下一篇文档《 自然语言处理四-从矩阵操作角度看 自注意self attention》中讲解,下一篇文章,将从矩阵操作的角度看self attention是如何实现的,看完矩阵操作就会明白自注意力如何解决本文档上面的问题。

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

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

相关文章

JDK安装及环境变量配置(保姆级教程)

什么是JDK? JDK(Java Development Kit)是Java开发工具包的缩写 它是Java开发人员必备的软件包之一。JDK包含了用于编译、调试和运行Java程序的各种工具和库。通过安装JDK,开发人员可以开始编写、编译和运行Java应用程序、Applet和…

UE5 UE4 自定义插件自动开启关联插件(plugin enable)

在我们自己编写UE4、UE5的插件时,常常需要开启相关联的插件进行功能编写。 例如:UE4/5 批量进行贴图Texture压缩、修改饱和度_ue4批量修改纹理大小-CSDN博客 而让插件使用者每次使用时,依次进行开启其他相关联插件确实有些麻烦。 如何只需要…

【医学影像】LIDC-IDRI数据集的无痛制作

LIDC-IDRI数据集制作 0.下载0.0 链接汇总0.1 步骤 1.合成CT图reference 0.下载 0.0 链接汇总 LIDC-IDRI官方网址:https://www.cancerimagingarchive.net/nbia-search/?CollectionCriteriaLIDC-IDRINBIA Data Retriever 下载链接:https://wiki.canceri…

麒麟银河操作系统V10部署ffmpeg

麒麟银河操作系统V10部署ffmpeg 部署ffmpeg用来处理视频的各种操作 想使用ffmpeg,要先安装nasm,yasm,x264之后,否则会报错 nkvers 查看麒麟操作系统版本 cat /proc/version #查看linux版本信息 uname -a #查看linux版本和内核…

Seawater resistant ADS-B Antenna for off-shore use

目录 Introduction Technical data Introduction This ADS-B antenna, made of V4A (1.4571 316Ti) stainless special steel, is suitable for off-shore use and includes mounting kit. Condensation in the antenna itself is excluded by a hermetically sealed seal. …

弱结构化日志 Flink SQL 怎么写?SLS SPL 来帮忙

作者:潘伟龙(豁朗) 背景 日志服务 SLS 是云原生观测与分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务,基于日志服务的便捷的数据接入能力,可以将系统日志、业务日志等接入 …

Spring Boot到底是如何进行自动配置的?

【1】从 spring.factories 配置文件中加载 EnableAutoConfiguration 自动配置类),获取的自动配 置类如图所示。 【2】若 EnableAutoConfiguration 等注解标有要 exclude 的自动配置类,那么再将这个自动配置类 排除掉; 【3】排除掉要 exclude …

【Azure 架构师学习笔记】-Azure Synapse -- Link for SQL 实时数据加载

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Synapse】系列。 前言 Azure Synapse Link for SQL 可以提供从SQL Server或者Azure SQL中接近实时的数据加载。通过这个技术,使用SQL Server/Azure SQL中的新数据能够几乎实时地传送到Synapse(…

猫头虎分享:Element UI Element Plus组件的安装及使用

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

FinalShell控制远程Linux服务器(首先得自己已购买好Linux服务器并安装了对应的系统,这里是安装的centos系统)

1、电脑上需要安装FinalShell软件 可以到分享的链接中下载软件,然后双击点击下一步安装即可 链接:https://share.weiyun.com/Y6TrdDHp 密码:gbvyg62、建立远程连接 3、输入连接信息 4、显示连接主机成功,表示远程进入 5、输入…

解决i18n国际化可读性问题,傻瓜式webpack中文支持国际化插件开发

先来看最后的效果 问题 用过国际化i18n的朋友都知道,天下苦国际化久矣,尤其是中文为母语的开发者,在面对代码中一堆的$t(abc.def)这种一点也不直观毫无可读性的代码,根本不知道自己写了啥 (如上图,你看得出…

云里物里轻薄系列电子价签,如何革新零售?

云里物里的DS轻薄系列电子价签,凭借轻巧外观和强劲性能,为零售行业提供了更便捷的商品改价方案。这不仅是对纸质价标的替代,更以其安全性和可持续发展性,实现对零售行业的效率升级,让商家们轻松迎接数字化时代的挑战&a…

可视化图文报表

Apache Echarts介绍 Apache Echarts是一款基于Javascript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网&#xff1a;Apache ECharts 入门案例&#xff1a; <!DOCTYPE html> <html>…

Firefox Focus,一个 “专注“ 的浏览器

近期才开始使用 Firefox Focus&#xff0c;虽然使用频率其实并不高&#xff0c;基本上只有想到了才去用&#xff0c;但每次使用的体验都很不错。 Firefox Focus 这款浏览器大约在 2015 年首次发布&#xff0c;不同于一般版本的 Firefox&#xff0c;它主打“自动删除浏览记录”…

数据结构:树/二叉树

一、树的概念 逻辑结构&#xff1a;层次结构&#xff0c;一对多 节点&#xff1a;树中的一个数据元素根节点&#xff1a;树中的第一个节点&#xff0c;没有父节点孩子节点&#xff1a;该节点的直接下级节点父(亲)节点&#xff1a;该结点的直接上级节点兄弟节点&#xff1a;有…

机器学习-02-机器学习算法分类以及在各行各业的应用

总结 本系列是机器学习课程的第02篇&#xff0c;主要介绍机器学习算法分类以及在各行各业的应用 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 定义问题&#xff08;Problem Definition&#xff09; -> 数据收集(Data Collection) -> 数据分割(Data…

初识Maven

介绍&#xff1a; web后端开发技术ApacheMaven是一个项目管理和构建工具&#xff0c;它基于项目对象模型&#xff08;POM&#xff09;的概念&#xff0c;通过一小段描述信息来管理项目的构建。安装&#xff1a;http://maven.apache.org/ Apache软件基金会&#xff0c;成立于19…

新能源汽车出海潮起,智能驾驶方案成差异化优势

2023年&#xff0c;中国汽车产销分别达3016.1万辆和3009.4万辆&#xff0c;巨大的规模之下是激烈的品牌竞争。由整车企业引领&#xff0c;汽车产业链的电动化智能化转型逐渐倒逼企业自行开拓成长空间。转型力度偏小、产品更新较慢的海外市场&#xff0c;成为蕴含金矿的待开掘目…

电子电器架构新趋势 —— 最佳着力点:域控制器

电子电器架构新趋势 —— 最佳着力点&#xff1a;域控制器 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师&#xff08;Wechat&#xff1a;gongkenan2013&#xff09;。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师…

mac电脑监控软件哪个好

在Mac电脑使用日益普及的今天&#xff0c;企业对于Mac终端的安全管理需求也日益增长。Mac电脑监控软件作为一种有效的管理工具&#xff0c;能够帮助企业提高数据安全性和员工工作效率。 在众多Mac电脑监控软件中&#xff0c;域智盾软件以其卓越的功能和性能脱颖而出&#xff0c…