文章目录
Transformer
Application
for speech
-
实质上是seq2seq
-
语音辨识;机器翻译 ;语音翻译(比如闽南语–》中文 由于很多语言没有文字);共同的特征都是输入固定长度seq 输出的seq长度由模型自己决定
-
语音翻译
- 语音合成(输入中文 输出闽南语的声音讯号)
for chatbot
NLP
- 大部分NLP可以看成是QA
Multi-label Classification
-
一个object对应多个labels
-
让model决定输出多少长的seq
Object Detection
seq2seq
-
包含一个Encoder和Decoder
-
Encoder和Decoder可以用self-attention去完成
Encoder
- 需要做的是输入一排向量 输出一排向量
- 总体架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dV1yZaXz-1648265057036)(/home/hoyard/Pictures/2022-03-25 08-52-09 的屏幕截图.png)]
-
通过多个block
- 每个block input–》(self-attention + input)
-
self-attention的输出会加上输入的seq(residual)
-
再进行layer norm —》FC FC也采用residual的方式
-
FC —> Norm Layer
Decoder(Autoregressive)
-
将Encoder输出的向量放入Decoder
-
给decoder一个信号BOS(begin of seq)(one-hot vector)
-
decoder输出一个向量 向量长度是字典的字数 每一个字对应一个值 比如中文就是字典里的字数
-
选择向量分数最大的输出那个字
- 输入第二个seq 循环上述步骤 而第二个输入是decoder的第一个输出
- 故存在问题:一步错步步错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YC6z0RAn-1648265057039)(/home/hoyard/Pictures/2022-03-26 09-02-45 的屏幕截图.png)]
Decode网络结构
-
Masked
-
产生信息时不能用当前seq后面的seq信息
-
产生b2
-
-
why masked:decoder里面是先有a1 才能产生 a2
-
Decoder 自己学习产生seq的长度 故希望输出玩期望seq之后会输出end vector
NAT(None Autoregressive) Decoder
-
直接输入特定长度的Begin token 产生对应长度的vector
-
无法确定输入begin的长度
- learn一个classify model 输入是encoder的输入 输出一个数字 这个数字就是begin的长度
- 直接给出一个最大长度的begin 在output中找到end 之后的输出忽略
-
对比AT的优势:
- 平行处理
- 输出长度可控
Encoder2Decoder
Cross attention
- q来自于Decoder k v来自于Encoder
Training
-
希望输出的one-hot vector跟gt的one-hot vector越接近越好
-
类似于分类问题
-
每一个输出都有一个cross entropy 希望所有加起来的entropy总和最小
-
训练时候将gt作为input(Teaching Forcing)