Attention机制的原理

  • 关键的三个变量 Query, Key, Value,计算 Attention 的过程即使用一个 Query,对所有的 Key 计算相似度,然后根据相似度对 Value 进行加权求和

Attention机制的类别

  • Hard/Soft Attention:Soft Attention是利用注意力分数加权和的方法得到注意力表征,即传统的 Attention 计算。而 Hard Attention 则是一个随机过程,将将注意力分数当作采样概率,对 Value 进行采样,采样过程是无法求导的(即 Soft/Hard 的区别)

  • Local/Globel Attention:区别在于 Local Attention 需要定义一个窗口,最后只加权窗口之内的词信息,而 Globel Attention 则是关注整个上下文的信息。

  • 一维匹配/二维匹配:一维匹配模型指的是 Query 直接表征为一个一维向量,注意力分数即为 Query 对 Key 中每个词的注意力分数,这个注意力关系是一个一维匹配的关系;而二维匹配模型则是可以看作有多个 Query 与多个 Key 计算相关分数,是一个 N2N 的二维匹配关系。

双向注意力

  • 双向注意力模型即在求得二维匹配矩阵之后,在两个不同方向上的 Softmax 归一化即为两个不同方向上的注意力分数,再利用注意力分数对相应的注意力对象加权即可,得到 context-to-query attention 表征以及 query-to-context atteniton 表征,再通过拼接的方式将其整合为上下文的 query-aware 表征。

Self-Attention 与 Soft-Attention 的区别

  • Soft-Attention 中的 Key 和 Query 为不同值,而 Self-Attention 中的 Key, Query 和 Value 为同一个值经过不同的线性变换的

Transformer

Multi-Head Attention 机制
  • 多个 Self-Attention 并行堆叠在一起实现多头注意力模型。
  • 并行堆叠的意义:通过初始化不同的线性映射矩阵,使得不同的 Self-Attention 能够聚焦在不同的位置,保证最后输出的多个表征具有多方面的自注意力信息。最后将多个 Self-Attention 的输出在词向量维度上拼接,通过一个线性映射将其压缩到原来的词表征维度。

Self-Attention机制
  • 输入的 Key、Query 和 Value 向量均为输入序列的线性映射,计算 Key 和 Query 的注意力分数再对 Value 进行注意力加权,实际上是一个对序列自身的注意力加权编码机制

\[Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V
\]

Position-wise Feed-Forward Layer
  • Feed-Forward Layer 的作用就是将 Multi-Head Attention 输出的向量再投影到一个更大的空间,最后再投影回token向量原来的空间,便于在高维空间中提取需要的信息,激活函数使用ReLU

使用残差连接的部分

  • Multi-Head Attention 前后和 Fead Forward 前后
  • 残差连接之后还需要进行 Layer Normalization 进行归一化
Transformer Decoder 与 Encoder 之间的区别
  • Transformer Decoder Block的结构与Encode Block略有不同,就是在Multi-Head Attention 之前额外添加了一个Masked Multi-Head Attention。
  • Masked Attention,就是为了在解码过程中防止句子看到当前解码对象之后的序列,仅须对二维匹配注意力分数矩阵乘上一个下三角矩阵 \(M\) 即可,表明每一个时刻仅能看到过去时刻的解码输出

\[Attention(Q, K, V) = softmax(\frac{QK^T\cdot M}{\sqrt{d_k}})V
\]

位置编码
  • 在偶数位置,使用正弦编码,在奇数位置,使用余弦编码。
  • 这样的编码方式包含了相对位置信息,位置为pos+k的词可以由位置为pos和k的词来表示,且可以证明:间隔为k的任意两个位置编码的欧式空间距离是恒等的,只与k有关

\[\begin{cases}
PE_{2i}(p)=sin(p/10000^{2i/d_{pos}}) \\
PE_{2i+1}(p)=cos(p/10000^{2i/d_{pos}})
\end{cases}\]

  • 相对位置的表示主要与下面的正余弦公式有关

  • 因此,可以将 \(PE_{pos}\) 和 \(PE_{pos+k}\) 的关系表示如下:

【面试QA】Attention的更多相关文章

  1. 如何面试QA(面试官角度)

    面试是一对一 或者多对一的沟通,是和候选人 互相交换信息.平等的. 面试的目标是选择和雇佣最适合的人选.是为了完成组织目标.协助人力判断候选人是否合适空缺职位. 面试类型: (1)预判面试(查看简历后 ...

  2. 【NLP面试QA】预训练模型

    目录 自回归语言模型与自编码语言 Bert Bert 中的预训练任务 Masked Language Model Next Sentence Prediction Bert 的 Embedding B ...

  3. 【NLP面试QA】基本策略

    目录 防止过拟合的方法 什么是梯度消失和梯度爆炸?如何解决? 在深度学习中,网络层数增多会伴随哪些问题,怎么解决? 关于模型参数 模型参数初始化的方法 模型参数初始化为 0.过大.过小会怎样? 为什么 ...

  4. 【NLP面试QA】激活函数与损失函数

    目录 Sigmoid 函数的优缺点是什么 ReLU的优缺点 什么是交叉熵 为什么分类问题的损失函数为交叉熵而不能是 MSE? 多分类问题中,使用 sigmoid 和 softmax 作为最后一层激活函 ...

  5. 机器阅读理解(看各类QA模型与花式Attention)

    目录 简介 经典模型概述 Model 1: Attentive Reader and Impatient Reader Model 2: Attentive Sum Reader Model 3: S ...

  6. 机器阅读理解(看各类QA模型与花式Attention)(转载)

    目录 简介 经典模型概述 Model 1: Attentive Reader and Impatient Reader Attentive Reader Impatient Reader Model ...

  7. PHP面试题目搜集

    搜集这些题目是想在学习PHP方面知识有更感性的认识,单纯看书的话会很容易看后就忘记. 曾经看过数据结构.设计模式.HTTP等方面的书籍,但是基本看完后就是看完了,没有然后了,随着时间的推移,也就渐渐忘 ...

  8. .NET面试题目

    简单介绍下ADO.NET和ADO主要有什么改进? 答:ADO以Recordset存储,而ADO.NET则以DataSet表示,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据 ...

  9. C语言面试

    最全的C语言试题总结 第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被 ...

随机推荐

  1. Swift 浅谈Struct与Class

    讨论Struct与Class之前,我们先来看一个概念:Value Type(值类型),Reference Type(引用类型): 1. 值类型的变量直接包含他们的数据,对于值类型都有他们自己的数据副本 ...

  2. 事务以及Spring的事务管理

    一.什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行 二.事务的特性(ACID) 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用: 一致性 ...

  3. Linux USB 鼠标驱动程序详解(转)

    Linux USB 鼠标驱动程序详解 USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表.设备链表包含各种系统中的 USB 设备以 ...

  4. qt creator源码全方面分析(3)

    目录 项目文件分析 qtcreator.pro 包含qtcreator.pri Qt版本判断 包含doc.pri 源码组织架构 指定dist文件列表 qbs配置 指定架构和平台 指定基础名 指定lin ...

  5. XML的相关基础知识分享(二)

    前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义 ...

  6. 嗨! Apriori算法

    Association Rule 一:项集和规则 1.1 认识名词: Association Rule : 关联规则 Frequent Itemsets : 频繁项集 Sequential Patte ...

  7. SVN版本控制说明与相关指令

    SVN版本控制说明 目的 多个版本中并行开发,提高开发效率: 保证各个版本和各个环境(开发.测试.主干)的独立,避免相互影响: 通过分支与主干的合并,这样主干永远是最新.最高版本,并且都在后面的测试中 ...

  8. SPA中前端路由基本原理与实现方式

    SPA 前端路由原理与实现方式 通常 SPA 中前端路由有2中实现方式,本文会简单快速总结这两种方法及其实现: 修改 url 中 Hash 利用 H5 中的 history Hash 我们都知道 ur ...

  9. 一文快速入门Shell脚本_了解Sheel脚本基本命令

    通过代码和注释的形式,列举了shell的基础操作,快速入门.shell在线编辑器 注释 单行用#号:多行::<<' 多行注释... '.:<<a 多行注释... a.:< ...

  10. Linux 宝典《最新版》

    Linux 概述 什么是Linux?Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的Unix工具软 ...