什么是Transformer
目录
Encoder:
Decoder:
Decoder-Autoregressive
multi-head attention VS masked multi-head attention
Decoder-Non-Autoregressive
Encoder和Decoder联合工作
Training:
训练技巧
优化评估指标
推荐阅读:
整体结构
Transformer是一个Sequence to Sequence的模型,主要的结构是encoder和decoder
完整的网络结构如图:
Encoder:
encoder对应整体结构图中的左边的部分,由好几个block组成,每个block里是好几层layer
每一个block的结构:
首先,输入一排vector,做self-attention之后,得到一排vector a,每一个vector都是考虑了所有输入的vector得到的结果,vector a再加上原先的vector b(这样的架构就是residual connection,残差),得到了一个新的output1。
第二步,将上一步得到的output再经过layer Normalization(LN,与batch Normlization的区别就是,BN是列标准化,LN是行标准化)得到output2
第三步,将第二步得到的结果output2通过全连接层(Fully Connected Feed Forward Network,FC),得到一个向量,再加上FC原先的输入,做一下residual,得到新的输出
最后,将第三步得到的结果再做一次LN,得到最终block的结果。
对应于整体的结构图,Add就是residual,Norm就是LN
Decoder:
decoder则是整体结构图右边的部分,分为2种,一种是AutoRegressive Decoder,另一种则是Non-AutoRegressive Decoder,两者的区别在于,AT预测的时候,除了使用encoder的结果,还会使用到之前预测的结果,是一个一个字依次预测的,而NAT的话,则是一次性预测整个句子。
Decoder-Autoregressive
以语音识别为例:输出是所有中文词汇表+1(EOS,end of sentence,表示句子结束)大小的一个向量,输入是encoder和之前的预测结果,第一个字的话就是BOS,第二个字的输入就是encoder的结果+BOS+之前预测出来的机,预测结果经过softmax之后得到一个分布,取其中概率最大的字作为预测结果。
multi-head attention VS masked multi-head attention
encoder和decoder对比图:
可以发现,除去中间的部分之后,encoder和decoder剩下的部分几乎是一样的,除了attention部分用的是masked multi-head attention。那masked 是指什么意思呢?
刚刚将AT的时候讲到,每一个字训练的时候,会使用到之前的数据,而self-attention 则是一开始就看到了所有的向量再做决定,决定训练出什么向量,而在mask attention则是每一个向量预测的时候,只能够看之前的向量的结果,而不能看之后向量的结果。
Decoder-Non-Autoregressive
AT vs NAT
NAT:可以控制输出结果的长度,在语音合成时, 有一个分类器判断输出结果的长度,如果想要语速变快,就可以将分类器输出结果的长度除以2
Encoder和Decoder如何联合工作
在刚刚decoder的结构中,被遮挡住的,其实就是两者如何连接的部分。其实和self-attention的结构非常相似,只不过对应的q是来自于decoder,而k,v则是来自于encoder,这种结构我们称之为cross-attention
Training:
训练的目标是最小化输出的结果和原始结果之间的交叉熵
训练的时候使用的输入的是真实的数据,但是预测的时候使用的只能是之前预测出来的结果,这2者的不一致该如何解决呢?在训练时引入噪音,反而可以学的更好(Scheduled Sampling,下面会的技巧中会讲到)。
训练技巧
1.Copy Mechanism(复制机制),常见于对话机器人、摘要生成等工作
2.Guided Attention(引导注意力):引导机器做attention是有固定的方式的(比如语音合成,由左至右)
3.Beam Search(束搜索):相比于每次只保留最好的结果,beam search每次保留最好的k个结果。不一定每次都有效果,答案非常明确的工作(语音翻译这种),beam search会比较有帮助,需要创造力的那种,反而效果不好。
4.Scheduled Sampling():传统的Scheduled Sampling会伤害Transformer平行化的能力,所以有专门为transformer设计的Scheduled Sampling。https://arxiv.org/abs/1906.07651
评估指标
在validation set上,使用BLEU score而非交叉熵最高的那个模型。
推荐阅读:
https://arxiv.org/abs/1706.03762
(强推)李宏毅2021春机器学习课程_哔哩哔哩_bilibili
什么是Transformer相关推荐
- BERT大火却不懂Transformer?读这一篇就够了 重点 命名实体识别
bert_config.josn 模型中参数的配置 { "attention_probs_dropout_prob": 0.1, #乘法attention时,softmax后dro ...
- Dissecting BERT Part 1: The Encoder 解析BERT解码器(transformer)
原文:https://medium.com/dissecting-bert/dissecting-bert-part-1-d3c3d495cdb3 A meaningful representatio ...
- attention seq2seq transformer bert 学习总结 _20201107
https://blog.csdn.net/weixin_44388679/article/details/102575223 Seq2Seq原理详解 一文读懂BERT(原理篇) 2018年的10月1 ...
- transformer bert seq2seq 深度学习 编码和解码的逻辑-重点
参考文献: 详解从 Seq2Seq模型.RNN结构.Encoder-Decoder模型 到 Attention模型 [NLP]Attention Model(注意力模型)学习总结(https://ww ...
- Transformer的PyTorch实现
Google 2017年的论文 Attention is all you need 阐释了什么叫做大道至简!该论文提出了Transformer模型,完全基于Attention mechanism,抛弃 ...
- BERT大火却不懂Transformer?读这一篇就够了 原版 可视化机器学习 可视化神经网络 可视化深度学习...20201107
20211016 调节因子 20211004 [NLP]Transformer模型原理详解 - 知乎 论文所用 20210703 GPT模型与Transformer进行对比_znevegiveup1的 ...
- 浅谈Transformer 及Attention网络
1 Transformer 模型结构 处理自然语言序列的模型有 rnn, cnn(textcnn),但是现在介绍一种新的模型,transformer.与RNN不同的是,Transformer直接把一句 ...
- Attention is all your need 谷歌的超强特征提取网络——Transformer
过年放了七天假,每年第一件事就是立一个flag--希望今年除了能够将技术学扎实之外,还希望能够将所学能够用来造福社会,好像flag立得有点大了.没关系,套用一句电影台词为自己开脱一下--人没有梦想,和 ...
- 模型压缩95%:Lite Transformer,MIT韩松等人
模型压缩95%:Lite Transformer,MIT韩松等人 Lite Transformer with Long-Short Range Attention Zhanghao Wu, Zhiji ...
- ViT(vision transformer)原理快速入门
本专题需要具备的基础: 了解深度学习分类网络原理. 了解2017年的transformer. Transformer 技术里程碑: ViT简介 时间:2020年CVPR 论文全称:<An Ima ...
最新文章
- Data - 【转】数据分析的道与术
- 限制不能使用最近三次的历史密码
- Mac/Linux/Centos终端中上传文件到Linux云服务器
- linux 查看安装的系统版本,linux之查看版本信息命令
- 28留数及其应用(四)
- Code snippet of the day : Get Chinese Spell in C#
- 2019-2022广汽埃安AIONS/AIONY/AIONV/AIONLX维修手册电路图技术资料
- GNSS螺旋天线高精度定位
- 大学英语四新视野 课后习题+答案翻译 Unit1~Unit8
- stn算子_STN 口袋指南
- PLSQL连接Oracle11g64位操作步骤
- jBPM4的PVM实现解析
- 自动还原魔方算法数据结构
- JPBC实现基于RSA的CLSC算法问题在哪,怎么修改,帮我看看
- schedulewithfixeddelay
- pytorch版训练retinanet-csv数据集
- Windows10重装设置(个人)
- 京东2015校园招聘技术类笔试题及答案
- 线性规划模型--解决投资问题
- linux操作系统基础复习