序列到序列模型中的注意力机制

目录

一、说明

二、编码器解码器架构中的问题:需要注意

2.1 编码器方面的问题:

2.2 解码器方面的问题:

三、什么是注意力机制?

3.1 计算 ci 值:

3.2 ci 的广义表示:

四、Bahdanau 注意 :

4.1. 兼容性分数计算:

4.2.注意力权重:

4.3. 上下文向量:

五、Luong 注意 :

六、注意机制的好处:

七、引用:


一、说明

        在人工智能和机器学习领域,注意力机制的概念已成为提高神经网络效率和有效性的有力工具。受人类有选择地关注输入数据特定方面的认知过程的启发,注意力机制允许模型动态地将计算资源分配给给定输入的最相关组件。

在这篇博客中,我们将分解注意力机制:它们是什么,为什么它们如此有用,以及它们是如何运作的。从基本概念到实际应用,我们将以通俗易懂的方式解释注意力机制如何成为人工智能的重要组成部分。

二、编码器解码器架构中的问题:需要注意

2.1 编码器方面的问题:

 在自然语言处理中,编码器-解码器架构面临的挑战类似于人类在尝试处理冗长句子时遇到的挑战。想象一下,试图将一个长而复杂的句子翻译成另一种语言,只看了一眼。保留整个上下文并准确翻译几乎是不可能的,尤其是在处理包含超过 25 个单词的句子时。

同样,当编码器处理一个大句子时,在固定长度的上下文向量中捕获其完整的上下文被证明是一项艰巨的任务。此限制会显著影响翻译准确性。

2.2 解码器方面的问题:

 在图的解码器方面,我们可以观察到,要输出一个特定的单词,如“आपसे”(在英语中意为“你”),我们不一定需要整个句子上下文。

        相反,只需要一个特定的单词或一组单词。然而,在传统的编码器-解码器架构中,整个句子上下文向量都提供给解码器,导致解码器难以准确解码的静态表示。

        如果解码器可以动态地关注与输出相关的特定单词,则效率会更高。这个概念反映了人类的阅读和翻译方式,通过关注注意力区域和相邻单词作为上下文。当我们人类阅读一段冗长的段落时,我们的大脑会自然而然地创建一个注意力区域,我们的注意力集中在其中。就像相机镜头捕捉到一个清晰的区域,而其余部分仍然模糊不清一样,我们的注意力主要集中在这个焦点上,而周边信息则不太清晰。这种自然的认知过程使我们能够有效地理解和翻译文本。

        此外,考虑一下我们发现自己在段落中途的场景。在这一点上,我们的大脑依靠相邻单词的上下文线索来破译不熟悉术语的含义。

        考虑一个场景,你要解码一个句子,从解码器中的时间戳 t=1 开始。假设您需要输出单词“आपसे”(英语中的“你”)。为了准确地做到这一点,您必须提供来自编码器的相关信息,特别是时间戳 t=4 处的内容,即单词“you”所在的位置,这对于生成“आपसे”至关重要。同样,在时间戳 t=2 处解码时,要输出“मिलकर”(“见面”),您需要从时间戳 t=2 和 t=3 输入,其中可以找到“见面”的上下文。

        因此,挑战在于动态传递编码器的时间戳值,这些值在解码过程的每个步骤中都保存了要翻译的重要信息。这种动态机制使解码器能够有选择地关注相关的编码器时间戳,这就是我们所说的注意力机制。

三、什么是注意力机制?

        注意力机制使模型能够有选择地关注输入序列的相关部分,同时生成输出序列的每个元素,从而提高准确性并捕获机器翻译等任务中的长程依赖关系。我们举个例子来理解一下:

        下面是编码器解码器图,我们将英语翻译成印地语。我们传递输入“关灯”,我们从解码器端得到的输出是“लाइट बंद करो”。

        在具有注意力机制的增强型编码器-解码器体系结构中,我们将编码器隐藏状态表示为 h0、h1、h2、h3、h4,将解码器隐藏状态表示为 s0、s1、s2、s3、s4。值得注意的是,在解码器中预测特定时间戳的输出时,我们输入两个基本组件:前一个时间戳的解码器隐藏状态值(si-1)和前一个时间戳的编码器隐藏状态值(yi-1)。注意力机制的添加引入了另一个关键参数 ci,它表示特定编码器时间戳对解码器中当前解码时间戳的重要性。

3.1 计算 ci 值:

        想象一下,我们在解码器中的时间戳 t=1,旨在输出单词“लाइट”(在英语中意为“光”),我们试图了解哪个编码器隐藏状态(h1、h2、h3 或 h4)与此翻译最相关。这就是注意力机制发挥作用的地方。它为所有编码器隐藏状态分配权重,表示为 α1、α2、α3 和 α4,表明它们在生成单词“लाइट”中的各自重要性。

解码器中时间戳 t=1 处的上下文向量 c1 可以表示为:

        该等式表示上下文向量 c1 是如何形成的,方法是将每个编码器隐藏状态 hi 加权为其相应的注意力权重 α1i

        同样,对于时间戳 t= 2,请参见下文:

        对于解码器中时间戳 t=2 时的 c2,上下文向量可以写成:

        就像 c1 一样,c2 的计算方法是将每个编码器隐藏状态 hi 加权α其相应的注意力权重 2i

3.2 ci 的广义表示:

        解码器中时间戳 t 处的上下文向量 ct 可以用数学方式表示如下:

哪里:

  • ct 表示时间戳 t 处的上下文向量。
  • αti 表示在时间戳 t 处分配给第 i个编码器隐藏状态的注意力权重。
  • hi 表示编码器的隐藏状态。
  • N 是编码器隐藏状态的总数。

现在,问题来了:我们如何计算这些注意力权重值,表示为 ( α)?

        注意力权重值(α)是通过考虑两个主要因素来确定的:编码器在相应时间戳处的当前隐藏状态(hj)和解码器的先前隐藏状态值(si-1)。
事实上,α 是 hj(编码器在时间戳 j 处的隐藏状态)和 si−1(解码器的先前隐藏状态)的函数。

        我们的目标是推导出一个捕捉这种关系的数学方程,使我们能够根据 hj 和 si−1 计算 α 的值。在最初的研究论文中,研究人员使用人工神经网络(ANN)(因为它们是通用函数逼近器)来设计这个方程,使模型能够在解码过程中动态确定注意力权重。

        在注意力机制中,计算注意力权重值的两种流行方法是 Bahdanau 注意力和 Luong 注意力

四、Bahdanau 注意 :

        Bahdanau注意力,也称为加法注意力,是一种在序列到序列模型中计算注意力权重值的方法。它是由 Dzmitry Bahdanau、Kyunghyun Cho 和 Yoshua Bengio 在 2015 年的论文“通过共同学习对齐和翻译进行神经机器翻译”中引入的。以下是对 Bahdanau 注意力如何工作的详细说明:

4.1. 兼容性分数计算:

  • 在每个解码时间步,Bahdanau 注意力计算解码器的前一个隐藏状态 (si−1) 和每个编码器隐藏状态 (hj) 之间的兼容性分数。
  • 此兼容性分数通常使用前馈神经网络(通常是单层神经网络)计算,该神经网络以 si−1 和 hj 为输入。
  • 从数学上讲,编码器隐藏状态 hj 和解码器隐藏状态 si−1 的兼容性分数 eij 计算如下:

4.2.注意力权重:

  • 一旦计算出兼容性分数,它们就会通过另一个神经网络(通常是单层神经网络,然后是软最大激活)来获得注意力权重。
  • 从数学上讲,解码时间步长 i 处编码器隐藏状态 hj 的注意力权重 αij 计算如下:

4.3. 上下文向量:

  • 计算注意力权重后,通过对编码器隐藏状态进行加权求和来获得当前解码时间步长 i 的上下文向量 ci,其中权重由注意力权重给出。
  • 在数学上,上下文向量 ci 的计算方法如下:

下图直观地说明了 Bahdanau 注意力是如何运作的,提供了对其功能和计算流程的直观理解。

在编码器侧,隐藏状态用 h0 表示,每个状态都是一个四维向量。类似地,在解码器端,先前的时间戳隐藏状态用 s0 表示,也包括四维向量。

我们通过连接解码器的上一个时间戳隐藏状态 ( s0) 和每个编码器隐藏状态 ( hi ) 来创建一个矩阵。然后将该矩阵输入神经网络以计算兼容性分数 (eij)。在获得兼容性分数后,我们应用softmax函数对其进行归一化,从而得到注意力权重(αij)。然后,这些注意力权重用于计算上下文向量 ( ci )。

Bahdanau 的数学工作流程 注意:

五、Luong 注意 :

        在 Luong 注意力中,与 Bahdanau 注意力的第一个区别是,Luong 注意力没有考虑解码器端的先前隐藏状态值,而是合并了解码器的当前时间戳隐藏状态值。第二个区别在于注意力权重(α)值的计算方法:Luong注意力利用解码器当前时间戳隐藏状态(si)和每个编码器隐藏状态(hi)之间的点积。

        在 Luong 注意力中,最后一个区别是上下文向量 ci 直接传递到 LSTM 单元的输出中,这与 Bahdanau 注意力中的方法形成鲜明对比,后者将上下文向量与 LSTM 单元的输入连接起来。这种将上下文向量简化到 LSTM 单元输出中的集成简化了解码过程,并增强了模型生成准确输出的能力。图表确实可以帮助直观地理解这些概念。

六、注意机制的好处:

        下图说明,将注意力机制集成到编码器-解码器架构中可以防止随着段落中句子长度的增加而降低 BLEU 分数。

七、引用:

研究论文:通过共同学习对齐和翻译的神经机器翻译

Youtube频道 : https://youtu.be/0hZT4_fHfNQ?si=ALRyGf-bNeHKMvdk

我相信这篇博客丰富了你对编码器解码器架构中注意力机制的理解。如果您发现此内容的价值,我邀请您保持联系以获取更有见地的帖子。非常感谢您的时间和兴趣。感谢您的阅读!

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

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

相关文章

Centos/Ubuntu等Linux系统下增加扩展4个串口以上配置操作

linux(Ubuntu、centos等)标准发行版系统默认是最多识别到4个COM串口设备,超过4个设备的串口则无法识别使用,想要载入使用则需要手动修改下grub配置文件,手动指定即可!可以参考如下步骤,有出入的地方大家可以…

yt-dlp:强大的跨平台视频下载器

一、引言 在当今数字时代,视频已成为我们获取信息和娱乐的重要途径。然而,由于版权和网络限制,我们常常无法直接在本地保存我们喜爱的视频。幸运的是,有一个名为yt-dlp的命令行程序,它可以帮助我们从YouTube.com和其他…

自动化测试岗位的标准化求职指南(0到1)

简介: 自动化测试是软件开发过程中的关键环节,对于企业来说,招聘一名合适的自动化测试工程师非常重要。本文将从零开始,为想要从事自动化测试工作的求职者提供一份详细且规范的求职指南,帮助他们在自动化测试领域找到…

猫头虎 分享已解决Bug || `Uncaught ReferenceError: x is not defined`✨

猫头虎 分享已解决Bug || Uncaught ReferenceError: x is not defined🚀✨ 摘要 ✨💡 大家好,我是猫头虎,一名全栈软件工程师,同时也是一位科技自媒体博主。今天我要和大家分享一些前端开发过程中常见的Bug以及详细的…

Java | Leetcode Java题解之第147题对链表进行插入排序

题目: 题解: class Solution {public ListNode insertionSortList(ListNode head) {if (head null) {return head;}ListNode dummyHead new ListNode(0);dummyHead.next head;ListNode lastSorted head, curr head.next;while (curr ! null) {if (…

配置OSPF认证(华为)

#交换设备 配置OSPF认证-基于华为路由器 OSPF(开放最短路径优先)是一种内部网关协议(IGP),用于在单一自治系统(AS)内决策路由。OSPF认证功能是路由器中的一项安全措施,它的主要用途…

深入理解Java中的synchronized关键字

目录 前言 一、什么是synchronized 二、synchronized的底层实现 三、synchronized与其他同步机制的比较 四、synchronized的使用方式 1. synchronized的重入 2.synchronized的异常 前言 Java是一种面向对象的编程语言,以其强大的并发处理能力而闻名。在多线程…

LLM 理论知识

LLM 理论知识 一.大型语言模型LLM1.1 大型语言模型 LLM 的概念1.2 常见的 LLM 模型1.2.1 闭源 LLM (未公开源代码)1.2.1.1 GPT 系列1.2.1.1.1 ChatGPT1.2.1.1.2 GPT-4 1.2.1.2 Claude 系列1.2.1.1.3 PaLM/Gemini 系列1.2.1.1.4 文心一言1.2.1.1.5 星火大模型 1.2.2. 开源 LLM1.…

threejs材质的贴图(四)

效果 代码实现 import ./style.css import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js//相机轨道控制器 import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js"//加载hdr文件作为环境贴…

排序模型的奥秘:如何用AI大模型提升电商、广告和用户增长的效果

摘要 排序模型是数字化营销中最重要的工具之一,它可以帮助我们在海量的信息中筛选出最符合用户需求和偏好的内容,从而提高用户的满意度和转化率。本文从产品经理的视角,介绍了常见的排序模型的原理和应用,包括基于规则的排序、基…

【ROS1转ROS2示例】

ROS1中的代码: 这是一个循环函数: ros::Rate loop_rate(10); // Adjust the publishing rate as neededwhile (ros::ok()){loop_rate.sleep();} 如果转ROS2,可以使用rclcpp::WallRate或者直接依赖于执行器(Executor)的循环来实现类似的功…

如何有效处理独立站遭受的网络攻击

随着电子商务的蓬勃发展,独立站成为了众多商家展示产品、吸引客户的重要平台。然而,这同时也吸引了不法分子的目光,使得独立站成为网络攻击的重灾区。本文将深入探讨独立站可能遭受的各种网络攻击类型,并提供一系列实用且可运行的…

【C语言初阶】分支语句

🌟博主主页:我是一只海绵派大星 📚专栏分类:C语言 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、什么是语句 二、if语句 悬空else 三、switch语句 default 四、switch语句与if-else语句性能对比如何&#xff1f…

分布式技术导论 — 探索分析从起源到现今的巅峰之旅(消息队列)

探索分析从起源到现今的巅峰之旅 分布式队列 - Kafka架构特性可扩展性磁盘优化与顺序访问大容量存储与历史数据利用高效数据封装与压缩智能内存管理与OS缓存利用 Kafka发布/订阅模型Kafka架构分析Producer和Consumer接口交互Producer通过Topic发送数据Consumer通过Topic消费数据…

springboot项目mapper无法自动装配,未找到 ‘userMapper‘ 类型的Bean解决办法.

一开始我看到了这个回答:springboot项目mapper无法自动装配,未找到 ‘userMapper‘ 类型的 Bean解决办法(含报错原因)_无法自动装配。找不到 usermapper 类型的 bean。-CSDN博客 mapper无法自动装配,未找到 ‘userMap…

MyBatis系列四: 动态SQL

动态SQL语句-更复杂的查询业务需求 官方文档基本介绍案例演示if标签应用实例where标签应用实例choose/when/otherwise应用实例foreach标签应用实例trim标签应用实例[使用较少]set标签应用实例[重点]课后练习 上一讲, 我们学习的是 MyBatis系列三: 原生的API与配置文件详解 现在…

自定义Unity组件——ABManager(AB包管理器)

需求描述 在Unity3D引擎中,AB包作为常用的游戏资源存储格式之一。而对于资源管理我们就不得不谈到集中管理的优势了,通过统一的接口加载和卸载AB包及其中的资源将进一步提升我们的编程效率。本文将围绕这个需求进行尝试。 功能描述 1. AB包的加载包括同…

【C#上位机应用开发实战】—机器视觉检测

#机器视觉 在现代工业生产中,机器视觉检测技术扮演着越来越重要的角色。它通过计算机视觉技术来实现对工件的自动化检测和判断,大大提高了生产效率和产品质量。而在机器视觉检测的应用中,C#作为一种简洁易用且功能强大的编程语言&#xff0c…

报表开发工具DevExpress Reporting v23.2 - 增强PDF导出、多平台打印等

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reporting控件日前正式发布了v23.2…

ClickHouse安装与下载22.3.2.2

ClickHouse安装与下载 目录 1. ClickHouse简介 1.1 ClickHouse优点: 1.2 ClickHouse缺点: 1.3 ClickHouse引擎: 1.3.1 数据库引擎 1.3.2 表引擎 2. ClickHouse下载安装 2.1 ClickHouse下载安装 2.2 ClickHouse使用 1. ClickHouse简…