目录

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相关推荐

  1. BERT大火却不懂Transformer?读这一篇就够了 重点 命名实体识别

    bert_config.josn 模型中参数的配置 { "attention_probs_dropout_prob": 0.1, #乘法attention时,softmax后dro ...

  2. Dissecting BERT Part 1: The Encoder 解析BERT解码器(transformer)

    原文:https://medium.com/dissecting-bert/dissecting-bert-part-1-d3c3d495cdb3 A meaningful representatio ...

  3. attention seq2seq transformer bert 学习总结 _20201107

    https://blog.csdn.net/weixin_44388679/article/details/102575223 Seq2Seq原理详解 一文读懂BERT(原理篇) 2018年的10月1 ...

  4. transformer bert seq2seq 深度学习 编码和解码的逻辑-重点

    参考文献: 详解从 Seq2Seq模型.RNN结构.Encoder-Decoder模型 到 Attention模型 [NLP]Attention Model(注意力模型)学习总结(https://ww ...

  5. Transformer的PyTorch实现

    Google 2017年的论文 Attention is all you need 阐释了什么叫做大道至简!该论文提出了Transformer模型,完全基于Attention mechanism,抛弃 ...

  6. BERT大火却不懂Transformer?读这一篇就够了 原版 可视化机器学习 可视化神经网络 可视化深度学习...20201107

    20211016 调节因子 20211004 [NLP]Transformer模型原理详解 - 知乎 论文所用 20210703 GPT模型与Transformer进行对比_znevegiveup1的 ...

  7. 浅谈Transformer 及Attention网络

    1 Transformer 模型结构 处理自然语言序列的模型有 rnn, cnn(textcnn),但是现在介绍一种新的模型,transformer.与RNN不同的是,Transformer直接把一句 ...

  8. Attention is all your need 谷歌的超强特征提取网络——Transformer

    过年放了七天假,每年第一件事就是立一个flag--希望今年除了能够将技术学扎实之外,还希望能够将所学能够用来造福社会,好像flag立得有点大了.没关系,套用一句电影台词为自己开脱一下--人没有梦想,和 ...

  9. 模型压缩95%:Lite Transformer,MIT韩松等人

    模型压缩95%:Lite Transformer,MIT韩松等人 Lite Transformer with Long-Short Range Attention Zhanghao Wu, Zhiji ...

  10. ViT(vision transformer)原理快速入门

    本专题需要具备的基础: 了解深度学习分类网络原理. 了解2017年的transformer. Transformer 技术里程碑: ViT简介 时间:2020年CVPR 论文全称:<An Ima ...

最新文章

  1. Data - 【转】数据分析的道与术
  2. 限制不能使用最近三次的历史密码
  3. Mac/Linux/Centos终端中上传文件到Linux云服务器
  4. linux 查看安装的系统版本,linux之查看版本信息命令
  5. 28留数及其应用(四)
  6. Code snippet of the day : Get Chinese Spell in C#
  7. 2019-2022广汽埃安AIONS/AIONY/AIONV/AIONLX维修手册电路图技术资料
  8. GNSS螺旋天线高精度定位
  9. 大学英语四新视野 课后习题+答案翻译 Unit1~Unit8
  10. stn算子_STN 口袋指南
  11. PLSQL连接Oracle11g64位操作步骤
  12. jBPM4的PVM实现解析
  13. 自动还原魔方算法数据结构
  14. JPBC实现基于RSA的CLSC算法问题在哪,怎么修改,帮我看看
  15. schedulewithfixeddelay
  16. pytorch版训练retinanet-csv数据集
  17. Windows10重装设置(个人)
  18. 京东2015校园招聘技术类笔试题及答案
  19. 线性规划模型--解决投资问题
  20. linux操作系统基础复习

热门文章

  1. 如何在inf文件中修改pid、vid
  2. 长难句结构分析最新经典一百句
  3. javascript之DOM简介
  4. java图片合成视频、音频及音频裁剪_MQ
  5. 产品设计之前,如何分析业务需求和用户痛点?
  6. 如何配置静态路由?这个实例详解交换机的静态路由配置
  7. 过程参数仪表与检测课后作业知识点总结
  8. Windows系统下为 Python安装 Pcapy模块的方法
  9. 转自千千:量化高频框架的搭建
  10. 咱们老百姓,今儿个真高兴