R24 · 两个序列,由一个条件接口接起来
开场暂拿开的中文条件现在接回来了。沿用上一页的条件生成接口,把图像编码器换成源句编码器,检查两条长度和顺序不同的序列怎样相连。
状态 b0
源端逐片段编码,将中文汇到c_src。先看来源如何形成这次条件。
状态 b1
c_src初始化s₀,目标端随后读BOS、I、gave。对照固定源条件与持续变化的s,避免把两者都理解成冻结。
状态 b2
完整参考输出出现,yesterday移到后部且最后为EOS。两端不要求同长同序,但应描述同一给予事件。
公式与算例详情
回到“我昨天给了她一本书”与“I gave her a book yesterday.”。课堂把源句分成“我/昨天/给了/她/一本/书”,把英文词与句号分开;这只是便于追踪的位置约定,真实分词可不同。语对为参考目标,不是本页模型训练输出。
固定表示 seq2seq 先令 $h_t=f_{\rm enc}(h_{t-1},E_x(x_t))$,读完整个源句后取源条件 $c$(图中记为$c_{src}$,与LSTM内部cell不同)。图中选择用 $s_0=\operatorname{init}(c)$ 初始化解码状态,随后
$$s_i=f_{\rm dec}(s_{i-1},E_y(y_{i-1})),\qquad p_i=\operatorname{softmax}(W_ps_i+b_p).$$
$y_0=\mathrm{BOS}$,输出最后包括 EOS。对 LSTM,传递的编码表示可以包含多层 cell/hidden 状态并经过变换,不必只是一个单层 $h_n$。也有实现把 $c$ 在每一步显式输入解码器;本图明确采用初始化接口,避免把不同论文实现混成一个公式。
编码器和解码器各有参数,各自在自己的时间链上共享。源句的信息通过 $c$ 和后续状态传递,目标历史通过自回归递推进入。源侧表示不按当前输出位置重新读取;解码状态却一直变化。固定的是表示维度,输入长度和输出长度均可变。
这条接口把源信息压到固定维度中,会引出容量、优化和读取方式的研究问题,但不能由此推出“超过某个词数必定失败”的定理。不同长度分布、模型规模、训练方式与任务都有影响。参考:N-RNN PDF p53–58;Sutskever et al. 2014,§2。
原课页采用记录:M15 变长输入怎样变成变长输出。页码均按PDF物理页计。
继续学习
本页自学核对:沿源句末态到 s₀ 再到目标词追踪;整理成 c_src 接口图,区分 LSTM cell。
若固定源条件与变化解码状态仍分不清,可进入《2014:先拥有一个可工作的翻译器,再决定改哪里》;动手时打开LAB02的“D/E · 固定源序,比较两种读取接口”:核对课堂末态初始化与实验均值条件、零初态和逐步输入条件的区别,再读固定/动态接口对照。 实施范围见实验路线D。