Seq2Seq生成模型
Encoder和Decoder
Encoder
化繁为简,将句子转成标准的向量表达,提取最有用的特征;Decoder
将向量化表达转变成其他的表达形式,将压缩好的信息解压成另外一种形式
翻译
翻译可称作seq2seq,将一个 sequence 转换成另一个 sequence,即用Encoder压缩并提炼第一个sequence的信息,然后用Decoder将这个信息转换成另一种语言。
优化
避免前期捡了芝麻后期丢了西瓜,如果使用 beam search, 我们不仅仅关注当前最优策略, 而且每预测一个词时,还保持关注当时刻所有候选词的N个最优策略,结束预测时,就有很大概率能够找到全局比较优的路径。
举个例子,如果我们用beam search size = 2, 意味着每次预测都记录最优的两个预测,然后沿着这两个预测继续预测, 每次后续的预测都只挑选下一步最好的两个预测。 这样加大了搜索范围,使我们有机会接触到全局较优路径。
CNN的语言模型
上文使用的RNN模型产生句向量embedding,即RNN作encoder,其实CNN也可以作encoder。一句话概括该模型:用N个不同长度时间窗口,以CNN的卷积方法在句子中依次滑动,让模型拥有N种阅读的眼界宽度,综合N种宽度的信息总结出这句话的内容。
如何卷积
如何使用CNN做Encoder?
学者想利用CNN去利用不同长度的卷积核去观察句子中不同长度的局部特征。 然后CNN对句子的理解就是不同长度的局部特征拼凑起来的理解。比如:
- 卷积核A两个两个字一起看;
- 卷积核B三个三个字一起看;
- 卷积核C四个四个字一起看;
卷积核ABC利用自己看句子的独特视角,能够提炼出对句子不同的理解,然后如果再汇集这些不同理解,就有了一个对句子更加全面的理解。
局限性
CNN作encoding要求有个句子最长的限制,如果句子超过这个长度,最好截断它。类比图像,在给图像做卷积,图像也是要定长定宽的,不然卷积和池化会有尺度上的问题。