2021李宏毅机器学习笔记--17 transformer

摘要

Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建。采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算。Transformer使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量,它不是类似RNN的顺序结构,因此具有更好的并行性。

一、transformer

Transformer的知名应用——BERT——无监督的训练的Transformer。
Transformer是BERT的核心模块

在这里插入图片描述Transformer是一个seq2seq模型,并且大量用到了"Self-attention",接下来就要讲解一下"Self-attention"用到了什么东西
在这里插入图片描述Sequence就会想到RNN,单方向或者双向的RNN。

RNN输入是一串sequence,输出是另外一串sequence。

RNN常被用于输出是一个序列的情况,但是有一个问题——不容易被平行化(并行)。

单向RNN的时候,想要算出b4,必须先把a1,a2,a3都看过才可以算出a4。双向则得全部看完才会有输出。
在这里插入图片描述

于是有人提出用CNN取代RNN

一个三角形是一个filter,输入为sequence中的一段,此刻是将三个vector作为一个输入,输出一个数值。

将三个vector的内容与filter内部的参数做内积,得到一个数值,将filter扫过sequence,产生一排不同的数值。
有多个filter,产生另外一排不同的数值

在这里插入图片描述

我们可以看到,用CNN也可以做到和RNN类似的效果:输入一个sequence,输出一个sequence。

表面上CNN和RNN都可以有同样的输入输出。

但是每个CNN只能考虑很有限的内容(三个vector),而RNN是考虑了整个句子再决定输出。

CNN也可以考虑更长的信息,只要叠加多层CNN,上层的filter就可以考虑更加多的信息。

eg:先叠了第一层CNN后,叠加第二层CNN。第二层的filter会把第一层的output当作输入,相当于看了更多的内容。

CNN的好处在于可以并行化。
CNN的缺点在于必须叠加多层,才可以看到长时间的信息,如果要在第一层filter就要看到长时间的信息,那是无法做到的。所以有Self-Attention。

二、Self-Attention

Self-Attention做的事情就是取代RNN原本要做的事情。
关键: 有一种新的layer—— Self-Attention,输入输出与RNN一样,都是sequence。

特别的地方在于,和双向RNN有同样的能力,每一个输出都是看过整个input sequence,只不过b1 b2 b3 b4是可以同时算出来的,可以并行计算!

在这里插入图片描述输入sequence x1~x4,通过乘上一个W matrix来得到embedding a1~a4,丢入Self-attention,每一个输入都分别乘上三个不同的transformation matrix,产生三个不同的vector q,k,v。
q代表query,用来match其他人
k代表key,用来被匹配的
v代表要被抽取出来的信息
在这里插入图片描述拿每个query q去对每个key k做attention,我们这里用到的计算attention的方法是scaled dot-product。
attention本质就是输入两个向量,输出一个分数。

除以 √d的一个原因是:d是q和k的维度,q和k做inner product,所以q和k的维度是一样的为d。
除以 √d​的直观解释为q和k做内积/点积的数值会随着维度增大 他的variance越大,所以除以来 √d平衡。
不除以d会梯度爆炸,不收敛,推一推梯度就能的到结果
在这里插入图片描述通过一个softmax函数

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值