Lecture 05 · 两个序列,由一个条件接口接起来

R24 · 两个序列,由一个条件接口接起来

开场暂拿开的中文条件现在接回来了。沿用上一页的条件生成接口,把图像编码器换成源句编码器,检查两条长度和顺序不同的序列怎样相连。

状态 b0

源端逐片段编码,将中文汇到c_src。先看来源如何形成这次条件。

编码源句 → 固定源条件 → 初始化解码状态我h1昨天h2给了h3她h4一本h5书h6源条件 c_src源条件固定

状态 b1

c_src初始化s₀,目标端随后读BOS、I、gave。对照固定源条件与持续变化的s,避免把两者都理解成冻结。

编码源句 → 固定源条件 → 初始化解码状态我h1昨天h2给了h3她h4一本h5书h6源条件 c_src初态 s₀s₁BOSs₂Is₃gave……源条件固定s 随已知前缀更新

状态 b2

完整参考输出出现,yesterday移到后部且最后为EOS。两端不要求同长同序,但应描述同一给予事件。

编码源句 → 固定源条件 → 初始化解码状态我h1昨天h2给了h3她h4一本h5书h6源条件 c_src初态 s₀s₁BOSs₂Is₃gave……输出: I gave her a book yesterday . EOS源条件固定s 随已知前缀更新

公式与算例详情

回到“我昨天给了她一本书”与“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。