NLP自然语言处理(八)—— 生成式聊天机器人(Seq2Seq模型)
语言模型简单来说就是一串词序列的概率分布
生成式聊天机器人中常见的是seq2seq模型
是一个encoder和decoder的结构
当前最为著名的Google翻译,就是完全基于Seq2Seq+Attention机制开发出来的
Seq2Seq模型
所谓Seq2Seq(Sequence to Sequence), 就是一种能够根据给定的序列,通过特定的方法生成另一个序列的方法。它被提出于2014年。它的输入是一个序列,输出也是一个序列
Seq2Seq模型又叫Encoder-Decoder模型,是RNN一个重要的变种
典型的RNN输入和输出序列是等长的,Seq2seq模型的输入输出是不等长的(这种情况一般是在机器翻译的任务中出现,将一句中文翻译成英文,那么这句英文的长度有可能会比中文短,也有可能会比中文长,所以输出的长度就不确定了)
为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c,拿到c之后,就用另一个RNN网络对其进行解码
Seq2Seq模型
这个例子是一个邮件的发送
翻译的例子
Seq2Seq模型的Encoder
一堆输入,通过一个编码方式,最终产生了一个语义向量C
Seq2seq模型的Decoder
Encoder得到的结果C,然后通过解码,得到结果
Seq2Seq模型的训练过程
从输入x1到xT转变成C,最终对于C去做softmax对于ht时刻的隐藏状态,去求一个最大似然的概率分布,去找到最合适的y
也就是由输入预测出最大概率的输出
Seq2Seq模型的不足
①长度限制
一般句子长度是10-20左右是最好的
②压缩损失信息
在进行编码的时候,往往是最后一个词它占的比重较大,解码的时候也是
就会损失一些信息
Seq2Seq模型的改进
①Attention机制
②Beam Search
集束搜索