目录
- 一、Transformer是什么
-
- 1、sequence-to-sequence
-
- (1)sequence-to-sequence应用
- (2)Encoder
- (3)Decoder
- 二、训练Transformer的Tips
-
- 1、Copy Mechanism
- 2、Guided Attention
- 3、Beam Search(波束搜索)
- 4、Scheduled Sampling
一、Transformer是什么
1、sequence-to-sequence
(1)sequence-to-sequence应用
a、sequence-to-sequence for 语音
- 输入序列,输出的序列长度由机器决定
-
语音辨识VS语音合成
eg:输入方言输出中文——语音辨识
输入中文输出语音——语音合成
-
现在的台语辨识是一个两阶段,第一阶段台语转中文,第二阶段中文转台语。第二阶段可以看成transformer的网络
b、sequence-to-sequence for chat
QA问题
c、sequence-to-sequence for 文法剖析 d、sequence-to-sequence for 多标签分类 -
一篇文章可以属于多个类别,而Sequence-to-Sequence输出是由机器决定长度,所以可以用Sequence-to-Sequence模型
e、sequence-to-sequence for Object Detection
Seq2Seq总结
(2)Encoder
- Encoder的做法:
- 一个block输入输出过程:
- transformer是对位置不敏感的模型,所以需要positional encoding
(3)Decoder
a、Autoregressive(以语音辨识为例介绍)
在Encoder中所做的工作是输入一段向量序列输出一段向量序列然后进入Decoder
b、Decoder的内部结构
mask attention
- 输出b2只考虑了a1、a2
- 为什么要用maskd呢?输出的东西是一个一个产生的
- 最后一个词输入要输出end这个符号
c、Non-Autoregressive
- 一下子输出一句话 d、Decoder的具体介绍
- cross attention
二、训练Transformer的Tips
1、Copy Mechanism
从输入复制东西
- chat-bot
- 摘要
2、Guided Attention
输入和输出要对齐(也就是输入的每一个内容都很重要,不能漏)
对语音合成、语音辨识比较重要
3、Beam Search(波束搜索)
- beam search是对贪心策略一个改进。思路也很简单,就是稍微放宽一些考察的范围。在每一个时间步,不再只保留当前分数最高的1个输出,而是保留num_beams个。当num_beams=1时集束搜索就退化成了贪心搜索
- 下图是一个实际的例子,每个时间步有ABCDE共5种可能的输出,即,图中的num_beams=2,也就是说每个时间步都会保留到当前步为止条件概率最优的2个序列
4、Scheduled Sampling
测试可能会某个输出错误而导致后面的错误
- 解决方法:训练的时候给错误的东西即scheduled sampling