1 回顾: 使用RNN的Seq2Seq

encoder最后的输出,我们生成两个向量,初始的decoder状态s0和文本向量c。然后进行decoder操作

但是问题在于,如果输入的sequence很长的话,可能我们fixed的文本向量c不够灵活。毕竟输出不用看所有输入,只需要看相关的输入即可

2 seq2seq 使用RNN和attention模块

于是我们在seq2seq模型中添加attention模块

首先,对于encoder的输出,我们将其与之前的隐状态h一起送入MLP,得到对齐值e

然后我们使用softmax模块,将e归一化为[0,1],且和为1的注意力权重a

之后我们将h与相对应的权重a相乘,再求和,得到此时的文本向量c1

然后使用上一轮的s,本轮的c,以及本轮decoder的输入y,生成本轮的状态s‘

下一轮,使用s1进行计算,然后得到c2.....以此类推

2.1 举例:RNN & attention 用于图片注明

首先,图片经过CNN得到一个矩阵,然后矩阵通过某些神经网络,得到一个状态s0

然后,用s0和h的每个条目, 分别计算一个e

之后经过attention,得到权重值

h和对应的a乘积求和,得到c

s0,c1,y0计算,得到s1

再将s1送进去,以此循环:

3 attention 层

这是我们上一小节的attention,我们对其做一个改动

attention in Seq2seq attention layer
query s
Query vector: q (Shape: D_q)
input h矩阵
Input vectors: X (Shape: N_X \times D_Q)

相似度方法

(e的求法)

q和X的点积
计算流程

说一下这里除以根号D的原因:比较大的相似度会使得softmax层饱和,这会导致梯度消失,除以根号D的作用就是在一定程度上约束相似度,缓解梯度消失的问题。(q和x维度越大,内积的结果也应该越大,所以需要除以一个和维度正相关的参数。)

当然,我们也可以这么表示 attention layer

这里的Q是外部的矩阵

4 self-attention

像比于attention layer,self-attention layer 没有外来的Q,Q得自己求得

它可以代替bi-direction RNN,而且相比于RNN,self-attention layer可以并行

4.1 attention 步骤

->1,对于一个input xi,我们先经过一个embedding(乘以一个矩阵),使xi变成ai

->2,然后ai分别乘上三个不同的变化矩阵(transformation matrix),变成qi,ki,vi。

->3 得到Q,K,V之后,就和前面的一致了

->4 将上一部算出来的结果进行softmax(使得和为1,每个值都在0~1之间)

-> 5  将第4步算出来的权重,和v1进行加权求和,得到的就是x1经过self-attention后对应的embedding结果

-> 6 同理,我们有b2~b4

4.2  self-attention的优点

self-attention的好处是,每一个bi的输出,不仅综合考虑了所有input的情况;而且这个操作是可以并行运算的。

4.3 self-attention 可视化结果

4.4 self-attention 矩阵表述

4.4.1 计算query、key、value

4.4.2 计算 a1i

为了简化,我们把所有的除以根号d都省略了

4.4.3 计算整个的a

然后对每一列进行softmax操作

4.4.4 计算 b

4.4.5 总览

4.5 multi-head self-attention

4.5.1 multi-head self-attention 原理

大体思路和self-attention是一样的。不同之处在于,我们得到q,k,v后,我们用不同的方法再生成一组q,k,v。

进行self-attention的时候,每一种办法生成的qki之和自己这种办法生成的qki进行操作

然后这两个bi再通过某种方式merge成一个b

4.5.2 multi-head self-attention可视化

越粗表示之间的权重越大,关系越近。

我们可以发现,不同的head侧重点是不一样的:一个注重距离上的远近,一个关注语义上的远近

4.6 排列不变性与位置编码

假设我们改变输入X的排列顺序,最终的输出只是也改变了排列的顺序,但是内容不会因为排列的变化而发生改变。我们称这个为排列不变性

倘若我们不需要排列不变性的话,我们可以对每一个输入叠加一段位置编码,这样排列不变性就被破坏了

4.7 masked self-attention

中心思想就是,我们只考虑过去的内容对我的attention权重

4.8 CNN+self-attention

机器学习笔记: attention相关推荐

  1. 机器学习笔记:Transformer

    1 传统Seq2Seq的不足 传统seq2seq 使用 bi-direction RNN,那么生成每个b的时候,对于输入的整个序列,模型都需要看过一遍. 问题在于,这样的用bi-direction R ...

  2. 一份520页的机器学习笔记!附下载链接

    点击上方"视学算法",选择"星标"公众号 第一时间获取价值内容 近日,来自SAP(全球第一大商业软件公司)的梁劲(Jim Liang)公开了自己所写的一份 52 ...

  3. 700 页的机器学习笔记火了!完整版开放下载

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 作者       梁劲(Jim Liang),来自SAP(全球第一大商业软件公司). 书籍特点       条理清晰 ...

  4. 机器学习笔记十四:随机森林

    在上一篇机器学习笔记十三:Ensemble思想(上)中,简要的提了一下集成学习的原理和两种主要的集成学习形式.  而在这部分要讲的随机森林,就算是其中属于bagging思路的一种学习方法.为了篇幅,b ...

  5. 机器学习笔记七:损失函数与风险函数

    一.损失函数 回顾之前讲过的线性回归模型,我们为了要学习参数使得得到的直线更好的拟合数据,我们使用了一个函数 这个函数就是比较模型得到的结果和"真实值"之间的"差距&qu ...

  6. 吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection)

    吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection) 对于异常检测算法,使用特征是至关重要的,下面谈谈 ...

  7. Python机器学习笔记:sklearn库的学习

    自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...

  8. 神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火

    神经网络与机器学习 笔记-LMS(最小均方算法)和学习率退火 LMS算法和Rosenblatt感知器算法非常想,唯独就是去掉了神经元的压制函数,Rosenblatt用的Sgn压制函数,LMS不需要压制 ...

  9. 神经网络与机器学习 笔记—基本知识点(下)

                   神经网络与机器学习 笔记-基本知识点(下) 0.1 网络结构: 神经网络中神经元的构造方式与用于训练网络的学习算法有着密切的联系,有三种基本的网络结构: 0.7 知识表示 ...

  10. 神经网络与机器学习 笔记—基本知识点(上)

    神经网络与机器学习 笔记-基本知识点(上) 0.1 什么是神经网络: 神经网络是由简单处理单元构成的大规模并行分布处理器,天然具有存储经验知识和使之可用的特性.神经网络在两个方面与大脑类似. 神经网络 ...

最新文章

  1. 代码组织和部署 文件操作 node.js
  2. mxnet基础到提高(36)-单层神经网络
  3. C++之链表中头指针、头节点、首元结点的
  4. Java反射机制在UI自动化测试中的一个应用
  5. 计算机关闭窗口可以使用alt,禁止使用Alt+F4关闭窗口完整代码
  6. 在SSP中查询某个用户Profile信息的SQL语句
  7. 无心剑随感《爱心教育》
  8. 06-windows下Orcale使用Database Configuration Assistant建立数据库
  9. Android------Button 添加声音效果(两种方式)
  10. Oracle Recursive Calls 说明
  11. WorkStation9完美支持Win8
  12. php路径跳转include,PHP中include路径的解决方法汇总
  13. 图片自适应页面大小的简单HTML代码
  14. arduino 鸿蒙,arduino入门开发案例(上)
  15. 经纬财富:沧州散户炒白银必读
  16. 金邦达:做最值得客户尊重的IC卡项目服务商
  17. 《操作系统教程》(第五版)费翔林等著 课后习题参考答案
  18. 计算机动漫游戏与制作,计算机动漫与游戏制作标准规范.doc
  19. 双硬盘安装win10和linux双系统,双硬盘安装win10+ubuntu18心得
  20. linux 7分区 fdisk,CentOS7创建逻辑卷,fdisk分区方式。

热门文章

  1. WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码
  2. NHibernate应用二:第一个NHibernate程序
  3. DevExpress组件之——TreeList组件
  4. 如何学习oracle
  5. CSP认证201509-3 模板生成系统[C++题解]:字符串处理、模拟、哈希表、引号里面有空格的字符串怎么读入
  6. PAT甲级1054 The Dominant Color:[C++题解]哈希表、水题
  7. 汤家凤高等数学2020年强化笔记-第一模块极限与连续与第二模块微分学
  8. 汤家凤高等数学基础手写笔记-空间解析几何
  9. leetcode 236. 二叉树的最近公共祖先 递归解法 c语言
  10. 曙光高性能服务器,曙光高性能进入世界前十_中科曙光服务器_服务器知识学堂-中关村在线...