目录
1.1 从Seq2Seq序列到Encoder-Decoder模型
1.1.1 什么是Seq2Seq:输入一个序列 输出一个序列
1.1.2 什么是Encoder-Decoder模型:RNN/LSTM与GRU
1.1 从Seq2Seq序列到Encoder-Decoder模型
1.1.1 什么是Seq2Seq:输入一个序列 输出一个序列
Seq2Seq(Sequence-to-sequence)正如字面意思:输入一个序列,输出另一个序列,当然,其中输入序列和输出序列的长度是可变的。
比如我们翻译英国经验派哲学家弗兰西斯・培根的一句名言“知识就是力量”,如下图:
只要满足「输入序列、输出序列」的目的,都可以统称为 Seq2Seq序列。
1.1.2 什么是Encoder-Decoder模型:RNN/LSTM与GRU
针对Seq2Seq序列问题,比如翻译一句话,可以通过Encoder-Decoder模型来解决。
从上文我们已经接触到编码的概念,有编码则自然有解码,而这种编码、解码的框架可以称之为Encoder-Decoder,中间一个向量C传递信息,且C的长度是固定的。
根据不同的任务可以选择不同的编码器和解码器,具体化可以是一个RNN、LSTM、GRU
都可以看作是一个Encoder-Decoder模型
为了建模序列问题,RNN引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据提取特征,接着再转换为输出。
在学习RNN之前,首先要了解一下最基本的单层网络,它的结构如下图所示:
输入是x,经过变换
和激活函数f,得到输出y。相信大家对这个已经非常熟悉了。
在实际应用中,我们还会遇到很多序列形的数据:
如:
- 自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推
- 语音处理。此时,x1、x2、x3……是每帧的声音信号
- 时间序列问题。例如每天的股票价格等等
而其中,序列形的数据就不太好用原始的神经网络处理了。
为了建模序列问题,RNN引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据提取特征,接着再转换为输出。
先从
计算开始看:
RNN可以被看做是上述同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个:
更多通常是其变种LSTM或者GRU