提交 e824594c 编写于 作者: M muli

update the first half of seq2seq

上级 2b92f248
......@@ -8,36 +8,33 @@
当输入输出都是不定长序列时,我们可以使用编码器—解码器(encoder-decoder)[1] 或者seq2seq模型 [2]。这两个模型本质上都用到了两个循环神经网络,分别叫做编码器和解码器。编码器对应输入序列,解码器对应输出序列。
下图演示了如何使用基于循环神经网络的编码器—解码器来训练将上述英语句子翻译成法语句子。首先将英语句子的句号替换成结束符“<EOS>”(end of sentence)后输入到编码循环神经网络来得到结束符输出的隐藏状态。接着我们使用以它为初始隐藏状态的解码循环神经网络来进行翻译。我们依次将开始符“<BOS>”(begin of sentence)和对应的法语句子输入到解码器中,期望解码器能输出正确的输入单词的下一词。
![编码器—解码器。](../img/seq2seq.svg)
下面我们来介绍编码器—解码器的设计。
接下来我们介绍编码器和解码器的定义。
## 编码器
编码器的把一个不定长的输入序列变换成一个定长的背景变量$\boldsymbol{c}$,并在该背景变量中编码输入序列信息。常用的编码器是循环神经网络
编码器的作用是把一个不定长的输入序列变换成一个定长的背景变量$\boldsymbol{c}$,并在该背景变量中编码输入序列信息。常用的编码器是循环神经网络,其隐藏状态输出则当做背景变量
让我们考虑批量大小为1的时序数据样本。
在时间步$t$,循环神经网络将输入$x_t$的特征向量$\boldsymbol{x}_t$和上个时间步的隐藏状态$\boldsymbol{h}_{t-1}$变换为当前时间步的隐藏状态$\boldsymbol{h}_t$。
其中,每个输入的特征向量可能是模型参数,例如[“循环神经网络的Gluon实现”](../chapter_recurrent-neural-networks/rnn-gluon.md)一节中需要学习的每个词向量。我们可以用函数$f$表达循环神经网络隐藏层的变换:
假设输入序列是$x_1,\ldots,x_T$,这里考虑批量大小为1的情况,例如$x_i$是输入句子中的第$i$个词。在时间步$t$中,循环神经网络将输入$x_t$的特征向量$\boldsymbol{x}_t$和上个时间步的隐藏状态$\boldsymbol{h}_{t-1}$变换为当前时间步的隐藏状态$\boldsymbol{h}_t$。我们可以用函数$f$表达循环神经网络隐藏层的变换:
$$\boldsymbol{h}_t = f(\boldsymbol{x}_t, \boldsymbol{h}_{t-1}). $$
假设输入序列的总时间步数为$T$。编码器通过自定义函数$q$将各个时间步的隐藏状态变换为背景变量
这里特征向量$\boldsymbol{x}_t$既可以是[“循环神经网络”](../chapter_recurrent-neural-networks/rnn.md)一节中介绍的one-hot表示,也可以是前面小节介绍的词嵌入。
接下来编码器通过自定义函数$q$将各个时间步的隐藏状态变换为背景变量
$$\boldsymbol{c} = q(\boldsymbol{h}_1, \ldots, \boldsymbol{h}_T).$$
例如,当选择$q(\boldsymbol{h}_1, \ldots, \boldsymbol{h}_T) = \boldsymbol{h}_T$时,背景变量是输入序列最终时间步的隐藏状态$\boldsymbol{h}_T$。
我们将这里的循环神经网络叫做编码器。
以上描述的编码器是一个单向的循环神经网络,每个时间步的隐藏状态只取决于该时间步及之前的输入子序列。我们也可以使用双向循环神经网络构造编码器。这种情况下,编码器每个时间步的隐藏状态同时取决于该时间步之前和之后的子序列(包括当前时间步的输入),并编码了整个序列的信息。
## 解码器
刚刚已经介绍,假设输入序列的总时间步数为$T$,编码器输出的背景变量$\boldsymbol{c}$编码了整个输入序列$x_1, \ldots, x_T$的信息。给定训练样本中的输出序列$y_1, y_2, \ldots, y_{T^\prime}$。假设其中每个时间步$t^\prime$的输出同时取决于该时间步之前的输出序列和背景变量。那么,根据最大似然估计,我们可以最大化输出序列基于输入序列的条件概率
刚刚已经介绍编码器输出的背景变量$\boldsymbol{c}$编码了整个输入序列$x_1, \ldots, x_T$的信息。给定训练样本中的输出序列$y_1, y_2, \ldots, y_{T'}$。假设其中每个时间步$t^\prime$的输出同时取决于该时间步之前的输出序列和背景变量。那么,根据最大似然估计,我们可以最大化输出序列基于输入序列的条件概率
$$
\begin{aligned}
......@@ -86,3 +83,7 @@ $$\boldsymbol{s}_{t^\prime} = g(y_{t^\prime-1}, \boldsymbol{c}, \boldsymbol{s}_{
[1] Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv preprint arXiv:1406.1078.
[2] Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to sequence learning with neural networks. In Advances in neural information processing systems (pp. 3104-3112).
```{.python .input}
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册