输入:
序列
输出:
序列
应用场景:
- 机器翻译
- 聊天机器人
- 文本摘要生成
- 图片描述生成
- 诗词生成
- 故事风格改写
- 代码补全??
主要思路:
通过一个深度神经网络模型(常用LSTM)将输入序列映射为输出序列
编码输入(encoder)与解码输出(decoder)两个环节,中间状态向量C
Seq2Seq的实现程序设计好之后的输入序列和输出序列长度是不可变的(?)
解码部分
Seq2Seq的核心部分是其解码部分,大部分改进基于此:
greedy search:基础解码方法
beam search:对greedy search的改进
attention:它的引入使得解码时,每一步可以有针对地关注与当前有关的编码结果,从而减小了编码器输出表示的学习难度,也更容易学到长期的依赖关系。
memory network:从外部获取知识。
其他方法:
- 堆叠多层RNN的Decoder
- 增加dropout机制
- 与Encoder建立残差连接
涉及其他知识点:
RNN
LSTM、GRU
预处理相关:One-hot,embedding降维