Transformer、BERT学习笔记
目录
- Transformer
- 引言
- 解析
- 整体结构
- 注意力机制
- 自注意力
- 多头注意力
- Positional Encoding
- 参考
- BERT
- 引言
- 解析
- 参考
关于Transformer和BERT,网上已经有了很多的讲解。本博客是笔者阅读论文后,并参考了一些其他博主的思路,结合笔者本人的理解而写。文章的最后会列出一些参考博客(知乎),如有遗漏,烦请提醒。
Transformer
引言
Attention Is All You Need
文章链接
本文出自NIPS2017,一作是Ashish Vaswani,来自Google Brain。Transformer最开始是基于机器翻译任务提出的,打破了传统的RNN框架,完全依赖于注意力机制。能够很容易的并行训练,仅在8个P100上训练了12个小时,就实现了当时的新SOTA。
解析
整体结构
Transformer的结构如下图所示。还是机器翻译领域传统的Encoder-Decoder架构。
Encoder部分使用N=6N=6N=6个Layer组成,每个Layer又包含两个sub-layer,分别是:多头注意力层(Multi-Head Attention)、前向传播层(Feed Forward)。每个sub-layer后面都添加了一个layer normalization层(出自文章),且使用了类似ResNet的跳跃连接。综上,对于输入为xxx的sub-layer,它的输出是:LayerNorm(x+Sublayer(x))\text{LayerNorm}(x+\text{Sublayer}(x))LayerNorm(x+Sublayer(x))。
Decoder部分也是使用N=6N=6N=6个Layer组成,每个Layer包含三个sub-layer,分别是:带有掩码的多头注意力层(Masked Multi-Head Attention)、多头注意力层(Multi-Head Attention)、前向传播层(Feed Forward)。
注意力机制
首先介绍基于点积的注意力(Scaled Dot-Product Attention),再引申出本文中用到的自注意力(Self Attention)和多头注意力(Multi-Head Attention)。
基于点积的注意力的网络结构如下图所示,具有三个输入:QQQ、KKK和VVV,分别代表QueryQueryQuery、KeyKeyKey和ValueValueValue,这三个变量的含义下面会详细介绍。
下面,以机器翻译为例子,详细介绍注意力机制的计算过程。假设,此时模型的输入I="word1word2word3"I="word_1 \space word_2 \space word_3"I="word1word2word3",使用NNN表示单词个数,例子中N=3N=3N=3。
- Embedding
对输入的句子III进行word embedding后,可以得到句子的特征EEE,是一个N×DimEN \times Dim^EN×DimE的矩阵。按照下标进行索引即可得到每个单词的特征,这里使用Ei(1≤i≤N)E_i(1 \le i \le N)Ei(1≤i≤N)表示单词wordiword_iwordi的特征,每个EiE_iEi的大小均为1×DimE1 \times Dim^E1×DimE。 - 获取Q,K,VQ, K, VQ,K,V
使用三个不同的权重矩阵WQ,WK,WVW^Q, W^K, W^VWQ,WK,WV,分别乘以EEE即可得到Q,K,VQ, K, VQ,K,V,大小分别为NQ×DimQ,NK×DimK,NV×DimVN^Q \times Dim^Q, \space N^K \times Dim^K, \space N^V \times Dim^VNQ×DimQ,NK×DimK,NV×DimV。
Q=EWQ,K=EWK,V=EWVQ = E W^Q, \space K = E W^K, \space V = E W^VQ=EWQ,K=EWK,V=EWV
直观上来看,NQ=NK=NV=NN^Q=N^K=N^V=NNQ=NK=NV=N(实际上不一定,后文会说),下面以这种假设为前提,看一下如何计算Attention。 - 计算Attention
对于单词wordiword_iwordi来说,首先,通过索引得到其对应的查询向量QiQ_iQi。通过矩阵乘法操作Si=QiKTS_i=Q_i K^TSi=QiKT可以得到一个大小为1×N1 \times N1×N的向量SiS_iSi,而Si[j]S_i[j]Si[j]即为wordiword_iwordi和wordjword_jwordj的Score。然后,使用softmax\text{softmax}softmax将Score进行归一化,得到Attention Weight WiW_iWi,大小仍是1×N1 \times N1×N,含义仍是Wi[j]W_i[j]Wi[j]表示wordiword_iwordi和wordjword_jwordj的相关性。,整个过程可以概括为(初始时QiQ_iQi 的大小为1×DimQ1 \times Dim^Q1×DimQ):
1×DimQ×KT→1×Nsoftmax→1×N×V→1×DimV1 \times Dim^Q \space \space \space \underrightarrow{\times K^T} \space \space \space 1 \times N \space \space \space \underrightarrow{\text{softmax}} \space \space \space 1 \times N \space \space \space \underrightarrow{\times V} \space \space \space 1 \times Dim^V1×DimQ×KT1×Nsoftmax1×N×V1×DimV
不难发现,对于每一个QiQ_iQi,分别计算再将结果Concatenate和直接使用QQQ进行计算得到的结果是一致的:
N×DimQ×KT→N×Nsoftmax→N×N×V→N×DimVN \times Dim^Q \space \space \space \underrightarrow{\times K^T} \space \space \space N \times N \space \space \space \underrightarrow{\text{softmax}} \space \space \space N \times N \space \space \space \underrightarrow{\times V} \space \space \space N \times Dim^VN×DimQ×KTN×NsoftmaxN×N×VN×DimV
上述介绍中,笔者实际上省略了论文中的一个重要操作——除以DimK\sqrt{Dim^K}DimK,文中给出的此操作的作用是:作者同时测试了点积注意力和additive attention(出自文章)的表现,在DimKDim^KDimK很小时,两种注意力的性能接近,在DimKDim^KDimK很大时,前者的表现要更出色。而随着DimKDim^KDimK的增加,点积操作QKTQK^TQKT得到的结果会变大,经过softmax\text{softmax}softmax后,反向传播回来的梯度会很小,会对训练过程带来阻碍,故除以DimK\sqrt{Dim^K}DimK进行缩放,再进行softmax\text{softmax}softmax。综上,完整的计算Attention的过程为:
Attention(Q,K,V)=softmax(QKTDimK)V\text{Attention}(Q, K, V)=\text{softmax}(\frac{QK^T}{\sqrt{Dim^K}})VAttention(Q,K,V)=softmax(DimKQKT)V
现在,总结一下注意力到底做了什么。我觉得用一句话概括,就是:使用K,VK, VK,V来获得QQQ的更优表示。(以下部分参考了[2])
QQQ代表我们想要表达的内容(或序列,暂记为XXX)在高维空间AAA中的表达,KKK代表某内容(或序列,暂记为YYY)在高维空间AAA中的表达,VVV代表某内容(或序列,暂记为YYY)在高维空间BBB中的表达。即:
Q=A(X),K=A(Y),V=B(Y)Q=A(X), \space K=A(Y), \space V=B(Y)Q=A(X),K=A(Y),V=B(Y)
也就是说,通过计算两个不同序列X,YX, YX,Y在同一高维空间AAA的相似度,作为权重作用在序列YYY在另一高维空间BBB上,从而获得序列XXX在高维空间BBB中的表达B(X)B(X)B(X)。
由上面这些分析可知,在注意力模块中,必满足以下两个约束:
- DimQ=DimKDim^Q = Dim^KDimQ=DimK(即:QQQ和KKK在同一高维空间中,这样才可以计算相似度)
- NK=NVN^K = N^VNK=NV(即:KKK和VVV中的“单词”(不一定限定于单词)个数相同,因为他们是同一序列在不同高维空间的表达)
自注意力
其实只有一句话,Q=K=VQ=K=VQ=K=V
多头注意力
这部分也很好理解,就是通过多组不同的Q,K,VQ, K, VQ,K,V分别计算注意力,再Concat一下。这样可以学到不同空间的表示。
Positional Encoding
TO DO.
参考
[1] https://blog.csdn.net/longxinchen_ml/article/details/86533005
[2] https://zhuanlan.zhihu.com/p/104393915
BERT
引言
Pre-training of Deep Bidirectional Transformers for Language Understanding
文章链接
解析
TO DO.
参考
Transformer、BERT学习笔记相关推荐
- attention seq2seq transformer bert 学习总结 _20201107
https://blog.csdn.net/weixin_44388679/article/details/102575223 Seq2Seq原理详解 一文读懂BERT(原理篇) 2018年的10月1 ...
- 预训练BERT学习笔记_Storm*Rage的博客
Transformer的Attention Decoder的结构与Encoder相比多了一个Encoder-Decoder Attention,两个Attention分别用于计算输入和输出的权值: S ...
- Transformer论文学习笔记
<Attention Is All You Need>一文中所提出的Transformer模型,与传统的CNN架构完全不同.Transformer中的注意力机制(attention mec ...
- Transformer的学习笔记
1 前言 Transformer是一个很厉害的模型呀~ 请阅读文章<Attention Is All You Need> 2 Transformer的两大特点 2.1 第一特点--全局感受 ...
- Transformer模型学习笔记
Transformer模型 1 seq2seq方法对比 CNN:将序列分为多个窗口(卷积核),每个窗口具有相同的权重,可以带来平移不变性的好处:卷积核之间可以进行并行计算:根据局部关联性建模,若想获得 ...
- BERT通俗笔记:从Word2Vec/Transformer逐步理解到BERT
前言 我在写上一篇博客<22下半年>时,有读者在文章下面评论道:"july大神,请问BERT的通俗理解还做吗?",我当时给他发了张俊林老师的BERT文章,所以没太在意. ...
- 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记
[莫烦Python]机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记 教程与代码地址 P1 NLP行业大佬采访 P2 NLP简介 P3 1. ...
- transformer模型的奥秘-学习笔记
本文主要介绍了transformer模型的大概原理及模型结构.这篇学习笔记的学习资料主要是<Attention is All you Need>这篇神作,还有两位大神的指点(见 ...
- 计算机视觉算法——Transformer学习笔记
算机视觉算法--Transformer学习笔记 计算机视觉算法--Transformer学习笔记 1. Vision Transformer 1.1 网络结构 1.2 关键知识点 1.2.1 Self ...
最新文章
- Vue在Element UI下使用富文本框插件quill-editor(我个人不推荐用这个复杂的富文本插件)
- Nature:拟南芥根系微生物组的结构
- 经济学人使用Golang构建微服务历程回顾
- 菜鸟教程之Microsoft Windows Powershell
- Keil MDK-ARM下载 安装与和谐教程
- php mysql第4版高清_PHP和MySQL WEB开发(中文高清第4版)
- 基于容器服务 ACK 发行版打造 CNStack 社区版
- 可对Python运行原理进行可视化分析的工具
- 如何在硅谷一夜暴富?
- 几个例子弄懂JS 的setInterval的运行方式
- jdk Arrays类
- 【2022.3】尚硅谷Vue.js从入门到精通基础笔记(理论+实操+知识点速查)
- APP自动化-显示等待/强制等待/命令等待
- linux uwf开放80端口,SELinux - osc_a3uwfsx7的个人空间 - OSCHINA - 中文开源技术交流社区...
- 供应链业务架构设计概览
- 单片机USB2.0高速接口实现方案
- 在vue中使用wow动画插件(下载,配置,使用,参数)
- 《博德之门3》的许多设计,还不如上世纪的前作
- Pytorch:Unet网络代码详解
- SEI文献整理2:A Review of Radio Frequency Fingerprinting Techniques(2020)