第8章 注意力机制与外部记忆

news2024/9/21 19:09:17

系列文章目录

第1章 绪论
第2章 机器学习概述
第3章 线性模型
第4章 前馈神经网络
第5章 卷积神经网络
第6章 循环神经网络
第7章 网络优化与正则化
第8章 注意力机制与外部记忆
第9章 无监督学习
第10章 模型独立的学习方式
第11章 概率图模型
第12章 深度信念网络
第13章 深度生成模型
第14章 深度强化学习
第15章 序列生成模型


文章目录

  • 系列文章目录
  • 前言
  • 8.1 人脑中的注意力机制
    • 8.1.1问题引入—阅读理解问题
    • 8.1.2人脑中的注意力
    • 8.1.3注意力示例
    • 8.1.4注意的实现
  • 8.2 人工神经网络中的注意力机制
    • 8.2.1 软性注意力机制(soft attention mechanism)
    • 8.2.2 键值注意力(key-value pair attention)
    • 8.2.3 多头注意力(multi-head pair attention)
    • 8.2.4 结构化注意力(structural attention)在之前介绍中,我们假设所有的输入信息是同等重要的,是一种扁平(Flat)
    • 8.2.5 指针网络
  • 8.3 注意力机制的应用
    • 8.3.1 文本分类
    • 8.3.2 机器翻译
    • 8.3.3 看图说话
    • 8.3.4 阅读理解
  • 8.4 自注意力模型
  • 8.5 人脑中的记忆
  • 总结


前言

如下图,可以看出,由全连接前馈网络到卷积网络,再到循环网络,最后到图网络,网络的能力是不断增强的;除此之外我们还可以通过增加注意力机制或外部记忆来增强网络的能力。所以本章围绕注意力机制和外部记忆展开。
在这里插入图片描述


8.1 人脑中的注意力机制

8.1.1问题引入—阅读理解问题

在这里插入图片描述
如上图紫色部分所示,通过词嵌入将上图中1-6句看做sorty,输入Words,通过词嵌入转化为词向量,通过RNN输出为story的输出向量;将上图第7句看做Query,同理得到其输出;将两部分输出组合,在经过一个NLP分类器,即可得到阅读理解的结果为office。但这样的模型存在以下问题:

  • 长存依赖问题:Story的输出向量无法完全表示story中所包含的文本信息。
  • 输出向量包含无关信息:像1、3、4句未包含问题相关的信息,但也被编入到Story的输出向量中。

8.1.2人脑中的注意力

人脑每个时刻接收的外界输入信息非常多,包括来源于视觉、听觉、触觉的各种各样的信息。但就视觉来说,眼睛每秒钟都会发送千万比特的信息给视觉神经系统。人脑通过注意力来解决信息超载问题。

8.1.3注意力示例

鸡尾酒会效应:当一个人在吵闹的鸡尾酒会上和朋友聊天时,尽管周围噪音干扰很多,他还是可以听到朋友的谈话内容,而忽略其他人的声音。同时,如果注意到的背景声中有重要的词(比如他的名字),他会马上注意到。

8.1.4注意的实现

  • 汇聚(pooling)
    是一种自下而上的方式,当给定信息时,人脑自发地将注意力集中到某些方面。
    :给定以下一张报纸,人脑会自发地将注意力集中到报纸上的图片以及一些大字而忽略小字的文本内容。

在这里插入图片描述

  • 会聚(focus)
    是一种自上而下的方式,当给一个问题时,人脑自发地将注意力集中到与问题相关的方面而忽略其他信息。
    :给定如下五张牌,让计算所有黑色牌的数字之和,人脑会自发地将注意力集中黑色牌上的数字而忽略其花色。
    在这里插入图片描述

8.2 人工神经网络中的注意力机制

8.2.1 软性注意力机制(soft attention mechanism)

注意力机制的计算过程,如下图所示将注意力q添加到 x i x_i xi中,
在这里插入图片描述

之后进行计算,其计算过程如下:

  1. 计算注意力打分函数的值
    在这里插入图片描述
  2. 计算注意力分布α
    在这里插入图片描述
  3. 根据α来计算输入信息的加权平均
    在这里插入图片描述

8.2.2 键值注意力(key-value pair attention)

用键计算注意力分布α,用值计算注意力的加权平均。
在这里插入图片描述在这里插入图片描述

8.2.3 多头注意力(multi-head pair attention)

利用多个查询 Q = [ q 1 , … , q M ] Q=[q_1,…,q_M] Q=[q1,qM],同时从输入信息中选取多组信息,每个“注意力头”关注输入信息的不同部分。
a t t ( ( K , V ) , Q ) = a t t ( ( K , V ) , q 1 ) ⊕ … ⊕ a t t ( ( K , V ) , q M ) att((K,V),Q)=att((K,V),q_1) \oplus …\oplus att((K,V),q_M) att((K,V),Q)=att((K,V),q1)att((K,V),qM)

8.2.4 结构化注意力(structural attention)在之前介绍中,我们假设所有的输入信息是同等重要的,是一种扁平(Flat)

结构,注意力分布实际上是在所有输入信息上的多项分布.但如果输入信息本身具有层次(Hierarchical)结构,比如文本可以分为词、句子、段落、篇章等不同粒度的层次,我们可以使用层次化的注意力来进行更好的信息选择 [Yang et al.,2016].此外,还可以假设注意力为上下文相关的二项分布,用一种图模型来构建更复杂的结构化注意力分布[Kim et al., 2017]。

8.2.5 指针网络

只使用注意力机制的第一步,将注意力分布作为一个软性的指针(pointer)来指出相关的信息。
图8.2给出了指针网络的示例,其中𝒉1, 𝒉2, 𝒉3 为输入数字20, 5, 10经过循环神经网络的隐状态,𝒉0 对应一个特殊字符 ‘<’.当输入 ‘>’ 时,网络一步一步输出三个输入数字从大到小排列的下标。
在这里插入图片描述

8.3 注意力机制的应用

8.3.1 文本分类

将文本表示为向量,之后进行注意力向量与文本向量计算之间的计算,将计算结果送入分类器即得到文本分类结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.3.2 机器翻译

将Encoder文本中每个词对应的向量输出,之后与Decoder输入文本的单词向量进行计算,再进行一些列的操作来获得预测出的文本。
在这里插入图片描述
在这里插入图片描述

8.3.3 看图说话

将图片的每聚焦部分对应一个单词。
在这里插入图片描述

看图说话注意力

8.3.4 阅读理解

在这里插入图片描述

8.4 自注意力模型

问题引入

当使用神经网络来处理一个变长的向量序列时,我们通常可以使用卷积网络或循环网络进行编码来得到一个相同长度的输出向量序列,但这种方法只建立了输入信息的短距离局部依赖关系。
在这里插入图片描述
如果要建立输入序列之间的长距离依赖关系,可以使用以下两种方法:一种方法是增加网络的层数,通过一个深层网络来获取远距离的信息交互;另一种方法是使用全连接网络。全连接网络是一种非常直接的建模远距离依赖的模型,但是无法处理变长的输入序列。不同的输入长度,其连接权重的大小也是不同的。这时我们就可以利用注意力机制来“动态”地生成不同连接的权重,这就是自注意力模型(Self-Attention Model)
在这里插入图片描述
上图中全连接模型中的实线权重为固定连接,自注意力模型中的虚线权重由注意力机制动态生成
自注意模型示例
在这里插入图片描述
QKV模式(Query-Key-Value)
在这里插入图片描述
假设输入序列为𝑿 = [𝒙1, ⋯ , 𝒙𝑁 ] ∈ ℝ𝐷𝑥×𝑁,输出序列为𝑯 = [𝒉1, ⋯ , 𝒉𝑁 ] ∈ℝ𝐷𝑣×𝑁,自注意力模型的具体计算过程如下:

  1. 对于每个输入 𝒙 𝑖 𝒙_𝑖 xi,我们首先将其线性映射到三个不同的空间,得到查询向量 𝒒 𝑖 ∈ R 𝐷 𝑘 𝒒_𝑖 ∈ ℝ^{𝐷_𝑘} qiRDk、键向量 𝒌 𝑖 ∈ R 𝐷 𝑘 𝒌_𝑖∈ ℝ^{𝐷_𝑘 } kiRDk和值向量 𝒗 𝑖 ∈ R 𝐷 𝑣 𝒗_𝑖 ∈ ℝ^{𝐷𝑣} viRDv,对于整个输入序列𝑿,线性映射过程可以简写为:
    𝑸 = 𝑾 𝑞 𝑿 ∈ R 𝐷 𝑘 × 𝑁 𝑲 = 𝑾 𝑘 𝑿 ∈ R 𝐷 𝑘 × 𝑁 𝑽 = 𝑾 𝑣 𝑿 ∈ R 𝐷 𝑘 × 𝑁 𝑸 = 𝑾_𝑞𝑿 ∈ ℝ^{𝐷𝑘×𝑁} \\ 𝑲 = 𝑾_𝑘𝑿 ∈ ℝ^{𝐷𝑘×𝑁} \\ 𝑽 = 𝑾_𝑣𝑿 ∈ ℝ^{𝐷𝑘×𝑁} Q=WqXRDk×NK=WkXRDk×NV=WvXRDk×N
    其中 W 𝑞 ∈ R 𝐷 𝑘 × D x , 𝑾 𝑘 ∈ R 𝐷 𝑘 × 𝐷 𝑥 , 𝑾 𝑣 ∈ R 𝐷 𝑣 × 𝐷 𝑥 W_𝑞∈ℝ^{𝐷_𝑘×D_x}, 𝑾_𝑘 ∈ ℝ^{𝐷_𝑘×𝐷_𝑥} ,𝑾_𝑣 ∈ℝ^{𝐷_𝑣×𝐷_𝑥} WqRDk×Dx,WkRDk×Dx,WvRDv×Dx分别为线性映射的参数矩阵, 𝑸 = [ 𝒒 1 , ⋯ , 𝒒 𝑁 ] , 𝑲 = [ 𝒌 1 , ⋯ , 𝒌 𝑁 ] , 𝑽 = [ 𝒗 1 , ⋯ , 𝒗 𝑁 ] 𝑸 = [𝒒_1, ⋯ , 𝒒_𝑁 ], 𝑲 = [𝒌_1, ⋯ , 𝒌_𝑁 ], 𝑽 = [𝒗_1, ⋯ , 𝒗_𝑁 ] Q=[q1,,qN],K=[k1,,kN],V=[v1,,vN]分别是由查询向量、键向量和值向量构成的矩阵。
  2. 对于每一个查询向量 𝒒 𝑛 ∈ 𝑸 𝒒_𝑛 ∈ 𝑸 qnQ,利用键值对注意力机制,可以得到输出向量 𝒉 𝑛 𝒉_𝑛 hn:
    𝒉 𝑛 = a t t ( ( 𝑲 , 𝑽 ) , 𝒒 𝑛 ) = ∑ j = 1 N α n j v j = ∑ j = 1 N s o f t m a x ( s ( k j , q n ) ) v j 𝒉_𝑛 = att((𝑲, 𝑽 ), 𝒒_𝑛)\\ =\sum_{j=1}^{N}\alpha _{nj}v_j\\ =\sum_{j=1}^{N}softmax(s(k_j,q_n))v_j\\ hn=att((K,V),qn)=j=1Nαnjvj=j=1Nsoftmax(s(kj,qn))vj
    其中𝑛, 𝑗 ∈ [1, 𝑁]为输出和输入向量序列的位置, α 𝑛 𝑗 \alpha_{𝑛𝑗} αnj 表示第𝑛个输出关注到第j个输入的权重
    如果使用缩放点积来作为注意力打分函数,输出向量序列可以简写为
    𝑯 = 𝑽 s o f t m a x ( K T Q D k ) 𝑯 = 𝑽 softmax(\frac{K^TQ}{\sqrt {D_k}}) H=Vsoftmax(Dk KTQ)
    其中softmax(⋅)为按列进行归一化的函数。

8.5 人脑中的记忆

在人脑中,记忆在大脑皮层是分布式存储的,而不是存储于某个局部区域


总结

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

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

相关文章

Linux UART编程 驱动蓝牙芯片

在熟悉了UART概念后&#xff0c;我们要学以致用&#xff0c;在Linux用起来来驱动起来蓝牙芯片&#xff01; 我们直接借用man来看下&#xff0c;命令如下&#xff1a; man termios 1.头文件引用 #include <termios.h> #include <unistd.h> 2.串口打开关闭 open…

Python预测2022世界杯1/8决赛胜负

目录: why to do?how to do?why to do? 简单介绍一下为什么要做这个吧? 首先呢, 最近一直在看基于tensorflow框架实现facenet等一些人脸识别的网络. 再加上昨天(2022年12月3日)是2022年世界杯1/8决赛第一个比赛日. 就在不同平台搜了一下, 看看有没有其他大牛也做了这方面的…

设计模式——策略模式

设计模式中的复用性指的是编译单位&#xff08;二进制层面&#xff09;的复用性&#xff08;编译、测试、部署后是原封不动的&#xff09; 动机&#xff08;Motivation&#xff09; 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多样&#xff0c;经常改变&#xf…

Netty系列(五):源码解读ServerBootstrapAcceptor类职能,探究Netty启动流程

ServerBootstrapAcceptor是Netty服务端用来接收客户端连接的核心类&#xff0c;本文将介绍ServerBootstrapAcceptor的职能。 init方法 在上一篇文章源码解读 backlog 参数作用中我们知道&#xff0c;在Netty服务端启动时&#xff0c;会调用ServerBootstrap.bind()绑定本地端口…

玩转GDAL一文带你深入Windows下FileGDB驱动支持

前言 了解GDAL的朋友一定知道&#xff0c;GDAL3.5以下&#xff08;含&#xff09;默认配置下是只支持gdb文件的读的&#xff0c;是不支持写的。更要命的是&#xff0c;默认的OpenFileGDB在读取时&#xff0c;如果我们在矢量文件中设置了属性表字段的别名&#xff0c;默认驱动是…

Git项目演练

Git项目演练 首先&#xff0c;进入到项目路径 然后&#xff0c;初始化&#xff0c;产生.git库 创建gitignore文件 将不需要的文件放入到,gitignore 将所有的文件添加到追踪的状态 对文件进行一次提交 使用git log查看变动 使用编译器修改代码中的内容 对修改进…

基于javaweb的学籍管理系统计算机毕业论文java毕业设计选题源代码

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之基于javaweb的学籍管理系统-IT实战营_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzy…

【能效管理】安科瑞新能源充电桩收费运维管理云平台应用分析

概述 AcrelCloud-9000安科瑞充电桩收费运营云平台系统通过物联网技术对接入系统的汽车充电站、电动自行车充电站以及各个充电桩进行不间断地数据采集和监控&#xff0c;实时监控充电桩运行状态&#xff0c;进行充电服务、支付管理&#xff0c;交易结算&#xff0c;资源管理、电…

ADSP-21569/ADSP-21593的开发入门(上)

作者的话 ADI的SHARC系列DSP&#xff0c;目前已经出到5系列了&#xff0c;最新的一颗叫2159x&#xff0c;按照ADI的说法&#xff0c;这颗DSP的性能是21569的两倍&#xff0c;但又能和21569做P2P的替换&#xff0c;所以下面我们就以21593为例&#xff0c;写一点资料&#xff0c…

头歌计算机组成原理MIPS RAM设计

完整答案点击底部 <?xml version"1.0" encoding"UTF-8" standalone"no"?> <project source"2.15.0.2.exe" version"1.0"> This file is intended to be loaded by Logisim http://logisim.altervista.org &l…

数字化门店| 旧衣回收店系统 | 智慧门店小程序开发教程

随着人们生活质量的提升&#xff0c;无论男女&#xff0c;衣柜鞋柜里摆满了各种衣物&#xff0c;覆盖了多个场景下的衣物非常多&#xff0c;同时如今大多数人已经不再穿补丁衣服&#xff0c;旧或破就会扔掉买新的。为了节省资源及合理二次利用&#xff0c;旧衣回收行业逐渐出现…

用译码器来设计组合逻辑电路

三线到八线&#xff1a;输入端只有三个所以只能是三变量 我们先来看书上的一个例子 设计的过程第一步 将函数表达式整理成最小项和的形式 我们用来举例&#xff0c;不是最小项的形式 三变量函数可以用三变量的最小项来表示 为了看的更清楚&#xff0c;我们写成最小项的编号&…

四、Git本地仓库基本操作——查看提交历史和版本回退前进

1. 查看提交历史 查看git提交历史一般常用两个命令&#xff1a; # 查看历史提交记录 git log # 以列表形式查看指定文件的历史记录 git blame <文件名>git log 该命令会按照我们提交的时间线&#xff0c;然后列出所有的历史提交。 示例&#xff1a; git log 显示的…

[附源码]计算机毕业设计JAVA医疗预约系统

[附源码]计算机毕业设计JAVA医疗预约系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

【Pytorch】广播机制

【参考&#xff1a;The size of tensor a must match the size of tensor b (y) at non-singleton dimension z_点PY的博客-CSDN博客】 报错&#xff1a;The size of tensor a (x) must match the size of tensor b (y) at non-singleton dimension z 其广播机制遵循以下规则…

[附源码]计算机毕业设计基于springboot的连锁药店销售管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

mediasoup学习与实践

一、mediasoup基本概念&#xff1a; 基础架构 1、worker 2、router 3、producer 4、consumer 5、transport 整体结构 特性 1、支持IPv6 2、ICE/DRLS/RTP/RTCP over UDP and TCP 3、支持simulcast和svc 4、支持拥塞控制 5、带宽控制 6、支持&#xff1a;STCP 7、多流使用同一…

安全可靠的SRT实时传输协议

Secure Reliable Transport(SRT)是安全、可靠、低延时的多媒体实时传输协议。SRT协议使用AES进行数据加密&#xff0c;运用FEC进行前向纠错&#xff0c;并且有流量控制、拥塞控制。类似于QUIC协议&#xff0c;SRT采用UDP代替TCP&#xff0c;在应用层提供发送确认机制、ARQ自动重…

ArcGIS基础:点要素分割线要素和提取线要素的交点

第一个实验&#xff1a;【点要素分割线要素】 看下原始数据&#xff1a;下图所示&#xff0c;&#xff12;个红点和一条绿线&#xff0c;用&#xff12;个点去分割这条线。 找到【数据管理工具】&#xff0c;在找到【要素】&#xff0c;再找到【在点处分割线】&#xff0c;如…

【云原生 | Kubernetes 实战】07、Pod 高级实战:Pod 生命周期、启动钩子、停止钩子

目录 一、Pod 生命周期 1.1 pod 生命周期的重要行为 二、初始化容器最佳实战 2.1 Init 容器 2.2 初始化容器使用案例 2.3 初始化容器生产应用 三、主容器 3.1 容器钩子 3.2 演示 postStart 和 preStop 用法 总结 一、Pod 生命周期 pod从开始创建到终止退出的时间…