跟李沐学AI:序列到序列seq2seq
机器翻译
给定一个源语言的句子,自动翻译成目标语言
两个句子可以有不同的长度
例子:机器翻译
Seq2Seq
是一个encoder和decoder的架构。编码器是一个RNN,读取输入句子(可以是双向RNN或LSTM、GRU的模型)。随后将最后一个隐状态传给解码器,解码器使用另一个RNN进行输出。
编码器是一个没有输出的RNN。编码器最后时间步的隐状态作为解码器的初始隐状态。
训练与推理
训练时解码器使用目标句子targets作为输入进行训练。推理时只能用上一时刻的输出作为输入。
衡量生成序列好坏的BLEU
seq2seq需要一次性预测一个句子而不是预测一个词。因此不能使用困惑度proplexity作为衡量指标。
是预测中所有n-gram的精度,即从uni-gram、bi-gram...n-gram的精度。例子:
标签序列label:ABCDEF和预测序列ABBCD。其中。因为预测序列有5个uni-gram字符,而有4个字符在label中出现,故。同理,,。
获取后即可计算BLEU:
预测长度不能过短,果断产生负数,产生惩罚。同时长匹配有高权重:中的n越大越大(<1)。
总结
Seq2Seq从一个句子生成另外一个句子。
Seq2Seq的编码器和解码器都是RNN。
将编码器最后时间的hidden state作为解码器的初始hidden stae来完成信息传递。
seq2seq常用BLEU来衡量生成序列的好坏。