跟风,听说最近Transformer很热,那肯定有其过人之处,今天大概看了一下最基础版的Transformer,简单说说体会和理解吧,不一定对,希望路过的大神指点。

要说是革命性的变革,那显然不是,Transformer和CNN以及RNN等都是机器学习的范畴,要说一点没变,那也不是,Transformer最大的特点,个人理解,是其Self-Attention机制,至于说这个机制是从哪儿得到的启发,暂不多说,搞过CNN的都知道。搞CNN的都习惯一个图片矩阵,那接下来的见解,我就以二维矩阵来说。

还是原文的图,这里的X是将每一个单词embed到N维的空间中,每一个词对应一个行向量,将一个句子的每一个单词都映射过来,组成一个大小固定的矩阵。对于不同单词数的句子,使用padding的方式扩充。那矩阵到底有多少行?没错,就是你猜的那样,数据库中每个句子的最大单词数。英语老师天天说结合语境,结合语境,那其实就是上下文的关系,这就是Self-Attention的核心思想。具体到数学表达上,这个关系的强弱,就是相关性,那就来劲儿了,协方差矩阵!没错,就是这货,但是原文不是这么描述的,这是本人看完后的第一印象,本篇文章会一直沿用这个词,但是文中并不是标准的协方差,暂且称其为“伪协方差”吧。这里如果对每个单词的embedding编码直接相关,那没意义啊,我们还没有理解这个编码,因此,在Self-Attention的第一步就是做一个矩阵映射,这一组矩阵就是Self-Attention中要训练的矩阵:

W_{i}^{Q},W_{i}^{K},W_{i}^{V},i=0,1,...,7

至于为啥是Multihead  self-attention,原文是说将编码投影到多个子空间中,个人理解这里应该是为了增加几组独立权重,增加参数量,以提升表达能力,跟Inception的感觉有点类似,但是没有Inception多尺度的理解那么直观。经过这一组投影后,得到一组编码:

Q_{i},K_{i},V_{i},i=0,1,...,7

这些编码,每一行的维度都固定为64。多头自注意力的头数h,取8。这是论文中为了对比单头注意力和多头注意力,保证多头的总维度依旧是512。作者认为,多头注意力使得模型有能力学习到不同子空间的表示。而单头注意力,相当于将所有这些不同子空间取平均了,因而抑制了这一能力。这三组矩阵的名称分别是query/key/value-matrix。

看到现在,这self-attention到底是个啥?关键点来了。我们刚才已经说了,上下文的关系不是词编码直接相关,而是需要映射,这个映射矩阵十分关键,关系到整个编码器的性能,因此,经过投影后的Q_{i},K_{i},V_{i},i=0,1,...,7,就是词编码后经过语义理解的编码,可以进行相关了,论文是让Q和K负责产生权重,V就老老实实代表编码值,经过投影后,Q和K的每一行都是一个单词的投影向量,那就直接把Q和K^T相乘,得到伪协方差矩阵,这里并不是标准的协方差,因为没有去均值,但是意思都差不多,就是两个向量的点积。这个伪协方差矩阵充当的作用就是权重,权重大的会被注意到,也即是self-attention。然后除以维度的平方根,这里的维度是映射后的编码维度,是512/8=64,那么开平方后是8。然后再来个softmax,这里的softmax是针对伪协方差矩阵的每一行进行的,保证每一行的值和为1。softmax后的伪协方差矩阵与V矩阵点积就得到对应组的输出Zi。Zi的行数还是最大单词数,列数是512/8,将8组Zi拼接即可得到与单头self-attention相同维数的编码矩阵。也就是说,下面这个公式是self-attention的核心:

最后将这些scaled的值通过Wo映射回去,与X的形状一致,也就是下一次self-attention的输入。

Transformer的下一步就是前馈网络,熟悉的全连接,全连接层的输入输出都是512,中间层是2048:

这个全连接层在每一层的不同时间步是共享的,但是在不同层是独立的。我是理解是,所有单词都共享这两个全连接层的参数?

然后就是残差网络,输入和该层输出相加后layer normalization:

因为模型不包含循环或卷积,因此需要加入时间序列信息,原文是在编解码器的embedding层后加入的,

解码器中有个因果关系的控制,这里就不多说了。

损失函数是交叉熵,优化方法是Adam。

总结一下,个人理解的Transformer和CNN的区别:

1、Transformer还是机器学习,但是没有卷积、pooling等操作,也没有循环;

2、很好的利用了每一行数据之间的相关性,机制的解释性是比较强的,更适用于NLP;

3、CNN关注于二维局部数据之间的相互关联,随着层的加深,关注区域会更广,更适用于图像处理。

不过,最近听说Transformer在很多图像处理领域中屠杀CNN,所以先看看Transformer的基础。最大是体会就是,Transformer中引入了基于伪协方差的Self-attention!

Transformer入门Transformer和CNN之间的区别相关推荐

  1. 【深度学习】特征提取器:Transformer,Rnn,CNN之间的相互比较

    在辞旧迎新的时刻,大家都在忙着回顾过去一年的成绩(或者在灶台前含泪数锅),并对2019做着规划,当然也有不少朋友执行力和工作效率比较高,直接把2018年初制定的计划拷贝一下,就能在3秒钟内完成2019 ...

  2. Transformer、rnn与cnn三大特征提取器的比较

    自然语言处理中的三大特征处理器:RNN.CNN.Transformer,它们目前谁各方面占据优势?未来谁又更有前途呢?这篇文章用目前的各种实验数据给出了说明,结论是:放弃幻想,全面拥抱Transfor ...

  3. 北大联合UCLA发表论文:9头以上Transformer就能模拟CNN!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨新智元 编辑丨极市平台 导读 来自北大.加利福尼亚大学洛杉矶分 ...

  4. Transformer入门学习

    摘要:记录一下自己在10月份参加DataWhale组队学习transformer的所得.这篇博客主要关于transformer基本原理的学习和一个输入序列转换的简单demo,并补充了一些transfo ...

  5. MSRA的Transformer跨界超越CNN,还解决了计算复杂度难题

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 谈到Tr ...

  6. Facebook开源数据高效图像Transformer,媲美SOTA CNN

    作者|魔王.小舟.杜伟 来源|机器之心 将自然语言处理领域主流模型 Transformer 应用在视觉领域似乎正在成为趋势.最近,Facebook 研究人员提出一项新技术--数据高效图像 Transf ...

  7. 【Transformer专题】一、Attention is All You Need(Transformer入门)

    目录 前言 一.整体架构 二.Transfomer输入 2.1.单词Embedding 2.2.位置Embedding 三.Self-Attention结构 3.1.Self-Attention QK ...

  8. 从零开始快速入门Transformer注意力机制

    1 目的 本文提供相关视频和笔记,以便初学者快速入门Transformer注意力机制. 2 重要模块 2.1 基础公式 Transformer的常见基础公式为 Attention(X)=Attenti ...

  9. 【读点论文】Transformer in Transformer 细化图片结构,递归使用transformer。让图片去拟合自然语言处理的操作。

    Transformer in Transformer Abstract Transformer是一种新的神经架构,它通过注意机制将输入数据编码为强大的特征.基本上,视觉transformer首先将输入 ...

最新文章

  1. LNMP之 nginx 启动脚本和配置文件
  2. .NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记
  3. activemq 内存_ActiveMQ中的温度,存储和内存使用百分比
  4. mysql主从服务器配置
  5. File对象的深度遍历以及删除练习。
  6. 6s android,Android死忠粉自述为何必买iPhone 6S
  7. 网络资产管理系统_网络版固定资产管理系统具备哪些优势?
  8. C++ 代码调试建议
  9. 安卓-内部存储、外部存储目录
  10. LinkButton(按钮)
  11. 计算机5800计算道路标高程序,强大的高速公路坐标高程计算软件
  12. CATIA2018客户端安装错误之提示Runtime VC14 x86失败,返回代码3
  13. Unity与UE4引擎源码内使用到的第三方库的比较
  14. webpack使用exclude
  15. IntelliJ IDEA(2017)安装和破解。
  16. Qt是什么?有哪些优势用于图形界面开发
  17. AriaNg 是一个让 aria2 更容易使用的现代 Web 前端
  18. 千锋android培训学院!双非渣本Android四年磨一剑,真香!
  19. JAVA计算机毕业设计学术会议信息网站Mybatis+源码+数据库+lw文档+系统+调试部署
  20. 《活法》读后感--发paper思想准备

热门文章

  1. bootstrap table border粗细_Web前端开发(18)——Bootstrap响应式布局
  2. python释放变量内存_2020Python面试题:Python是如何进行内存管理的?
  3. 使用遗传算法解决N皇后问题
  4. Python中的numpy.ones()
  5. ScalaReact式编程书
  6. 字符串startswith_Python字符串startswith()
  7. maven插件打包exec_Exec Maven插件–从Maven Build运行Java程序
  8. ios cell点击对勾_带图像和对勾的iOS自定义TableView
  9. ubuntu下安装英汉词典——stardict
  10. Java常见面试题之HashSet如何检查重复