【淘汰9成NLP工程师的常识题】多头注意力相对于多头注意力有什么优势?

news/2024/12/29 0:12:18/文章来源:https://www.cnblogs.com/fasterai/p/18555475

【淘汰9成NLP工程师的常识题】多头注意力相对于多头注意力有什么优势?

重要性:★★★ 💯

这是我常用的一个面试题。看似简单的基础常识题,但在面试中能准确回答的不足10%

常识题的错误反而会让人印象深刻,反而会暴露面试者对算法模型理解不够深入。

此题的关键主要是考察面试者对软性注意力的理解程度,类似的思想在很多场景都有应用,如门控机制、模型量化等。

Transformer原文中使用了 8 个“scaled dot-product attention”,在同一“multi-head attention”层中,输入均为“KQV”,同时进行注意力的计算,彼此之前参数不共享,最终将结果拼接起来,这样可以允许模型在不同的表示子空间里学习到相关的信息。简而言之,就是希望每个注意力头,只关注最终输出序列中一个子空间,互相独立。

其核心思想在于,多头注意力相比单头注意力是更软的注意力机制,对每个词蕴含的不同语义维度给予不同的权重。


实例:以 All is well 这句话为例,假设我们需要计算 well 的自注意力值。以此为实例来理解多头注意力层的作用。

在计算相似度分数后,我们得到单词 well 的自注意力值:

从图中可以看出,well 的自注意力值是分数加权的值向量之和,并且它实际上是由 All 主导的。也就是说,将 All 的值向量乘以 0.6,而 well 的值向量只乘以了0.4。这意味着 zwell 将包含 60%的 All 的值量,而 well 的值向量只有 40%。

因此,如果某个词实际上由其他词的值向量控制,只使用1个头的注意力,就会将关注词所有嵌入维度(不同语义维度)设置为统一的权重,这样反而会引入噪声。

为了确保结果准确,我们不能依赖单一的注意力矩阵,而应该计算多个注意力矩阵,对不同的嵌入维度设置不同的权重,并将其结果串联起来。使用多头注意力的逻辑是这样的:使用多个注意力矩阵,而非单一的注意力矩阵,可以提高注意力矩阵的准确性。。

多头注意力矩阵,公式如下所示:

本文由mdnice多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多校A层冲刺NOIP2024模拟赛24

多校A层冲刺NOIP2024模拟赛24\(T1\) A. 选取字符串 \(100pts\)考虑建出失配树,然后等价于询问 \(\sum\limits_{S \sube \{ 0,1,2, \dots ,n \},|S|=k}dep_{\operatorname{LCA}\{ S \}}^{2}\) 。不妨从 \(\operatorname{LCA}\) 的角度考虑,统计 \(x\) 能作为多少个 \(|S|\) 的…

在微信中使用AI聊天机器人

微信是中国最流行的社交通讯软件,具有庞大的用户基础。ChatGPT是由 OpenAI 开发的、当前最先进的AI聊天机器人,ChatGPT 尤其是在理解和生成自然对话方面表现出色,能够进行流畅且连贯的交流。对中国人而言,将 ChatGPT 集成到微信中,可以在一个熟悉的环境中体验到最新的人工…

protodep踩坑

在使用微服务框架go-zero时,服务拆分比较多,每更新一个服务的proto文件,都要手动复制pb文件到调用的服务里面,新系统开发的时候决定用protodep解决这个问题。 protodep 是一款专为Protocol Buffers接口描述语言文件设计的依赖管理工具。它解决了在使用gRPC时,如何有效控制…

虚幻4 蓝图无法保存 解决方法

蓝图类只能存放在 Blueprints文件夹内,创建在其他文件夹的蓝图类无法保存。 可以看到无法将蓝图拖动到其他文件夹内。这是一个存放在其他文件夹下的蓝图类:当尝试按Ctrl+shift+A保存时,将出现如下错误:解决方法是,将当前蓝图删除(注意,如果该蓝图从某个C++类继承而来,那…

理解进程调度时机跟踪分析进程调度与进程切换的过程

张晓攀+原创作品转载请注明出处+《Linux内核分析》MOOC课程https://mooc.study.163.com/course/1000029000 实验八——理解进程调度时机跟踪分析进程调度与进程切换的过程 一、理解Linux系统中进程调度的时机 在 Linux 内核中,schedule() 函数是核心的进程调度机制。它的主要作…

李继刚Lisp提示词灵感之源:压缩推动进步

探秘李继刚Lisp提示词压缩表达的灵感来源:德国计算机科学家尤尔根施密德胡伯提出,智能系统通过学习新技能来更高效地预测或压缩信息,这种内在动力推动了好奇心和创造力的发展,适用于从婴儿探索世界到科学家发现新规律的各种场景。前面在文章《 访谈李继刚:从哲学层面与大模…

java:找不到符号 符号:变量:log

原文链接:https://blog.csdn.net/zhanghaoninhao/article/details/129180810问题:java:找不到符号 符号:变量:log环境:springboot idea解决方法:在idea中,点击file-Settings,打开配置页面,如图红框位置,输入: -Djps.track.ap.dependencies=false

【SolidWorks 2024下载与安装教程】

‌SolidWorks 2024是一款由达索系统(Dassault Systemes)开发的三维CAD软件,广泛应用于机械设计、产品开发、工程设计、制造等领域。‌ 该软件以其强大的功能和易学易用的特点,深受工程师和设计师的喜爱。SolidWorks 2024在2024版本中引入了一系列新功能和改进,旨在提高设计效…

20222315 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1、实验内容 1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工…

编程命名规范(网文)

一个好的变量或函数命名,应该能起到自解释的作用,甚至能减少我们代码的注释。 naming-cheatsheet是一个命名备忘录,记录一些常见的规范约定,并提供简单的例子说明。如果能够严格遵守这些规范,相信我们的代码可读性会大大提升,下面就来介绍 naming-cheatsheet 提供的一些建…

MyBatis 学习笔记

MyBatis 执行器 JDBC 的执行过程分为四步:获取数据库连接(Connection) 预编译 SQL(PrepareStatement) 设置参数 执行 SQL(ResultSet)MyBatis 提供了执行器 Executor 将这一过程进行封装,对外提供 SqlSession 让用户通过调用其 API 直接操作数据库,因为 SqlSession 持有…