目录
李宏毅机器学习第五周—sequence to sequence
Multi-label Classification(多标签分类)
为什么在Self-attention和Fully Connected Layer之后都有一个“Add & Norm”单元?
李宏毅机器学习第五周—sequence to sequence
Seq2seq 模型应用广泛,尤其是在自然语言处理任务中,例如:语音识别,语音生成,语音翻译,聊天机器人等等还可以用来解决QA任务。
应用
Syntactic Parsing(语法分析)
将句子通过树的形式转化为序列。
Multi-label Classification(多标签分类)
Multi-class classification 一个物品可以有多个标签
Multi-label classification 一个物品一个标签,多个物品分类
Object Detection(目标检测)
Seq2Seq结构
1.encoder
N 个 Blocks,每个Block都是由Self-attention和Fully Connected Layer。
为什么在Self-attention和Fully Connected Layer之后都有一个“Add & Norm”单元?
Add :加上输入向量自身,可以理解为residual结构,Norm为Layer Normalization(对同一sample的不同维度做归一化),不同于Batch normalization批标准化(对不同sample的同一维度做归一化)
对于 Self-attention,不同的输入的句子长度不同。当输入句子长度变化大时,不同batch求得的均值方差抖动大。而且,如果测试时遇到一个很长的句子,对整体训练效果会造成比较大的影响。而Layer Normalization是在每个sample上做归一化,不受句子长度变化的影响。
2.decoder
Autoregressive (AT) 和 Non-autoregressive (NAT)
AT(前一时刻的输出,作为下一时刻的输入)
decoder 和 encoder对比:
多了一层Attention的残差结构,最后多接了一个全连接和softmax层,同时在attention层增加了Masked机制。
在Masked Self-attention中,输入vector的query只与它之前vectors的(key, value)做运算。
NAT(一次可以处理整个句子,并行化处理)
NAT可以调节输出sequence长度。比如在语音合成 (TTS)任务中,按前面提到的方法一,把encoder的输出送入一个Classifier,预测decoder输出sequence长度。通过改变这个 Classifier预测的长度,可以调整生成语音的语速。
用decoder中self attention层的输出vector生成q,与由encoder最后一层输出sequence产生的k,v做运算,如下图所示:
Training
目标函数:
cross entropy
Tips:
1. Copy Mechnism:直接复制输入
2.Guided Attention:指导其训练方向
3. Beam Search:寻找最优路径(需要任务有明确答案)
4. Optimizing Evaluation Metrics(BLEU score为两个句子间的相似程度,可以参考,但不能作为目标函数)
5. exposure bias:训练数据可以加入噪声干扰等,锻炼其泛用性。