Lecture 05 · 已经能译,为什么还要回头读?

S13 · 已经能译,为什么还要回头读?

短给书句不是固定摘要必然失败的证据;它用于把新接口的职责具体化。不同输出时刻可以提出不同读取需求。

状态 b0

左侧源位置压成一个c,右侧保留每处h_j;新的接口让不同目标步可重新读取。

我 / 昨天 / 给了 / 她 / 一本 / 书固定摘要 c保留逐位置 H我昨天给了她一本书单个摘要 c我昨天给了她一本书h1h2h3h4h5h6写到不同目标词,能否重新读取?2014 Bahdanau:保留循环;增加按当前目标状态读取源位置的通路。

状态 b1

前缀BOS,当前需表达给书者,源位置“我”承担本例相应信息。

我 / 昨天 / 给了 / 她 / 一本 / 书Bahdanau:加性打分 eₜⱼ = vᵀ tanh(Wₛsₜ₋₁ + Wₕhⱼ)我昨天给了她一本书h1h2h3h4h5h6BOS本步读取 cₜ词表预测:I需求来自当前 decoder 状态;亮线标明本例需要的信息。沿源位置打分 → 源位置 softmax → 加权内容 → 下一词分布

状态 b2

前缀BOS I gave,当前需表达接收者,源位置“她”提供相关信息。

我 / 昨天 / 给了 / 她 / 一本 / 书Bahdanau:加性打分 eₜⱼ = vᵀ tanh(Wₛsₜ₋₁ + Wₕhⱼ)我昨天给了她一本书h1h2h3h4h5h6BOS I gave本步读取 cₜ词表预测:her需求来自当前 decoder 状态;亮线标明本例需要的信息。沿源位置打分 → 源位置 softmax → 加权内容 → 下一词分布

状态 b3

前缀BOS I gave her a book,当前需表达时间,源位置“昨天”提供相关信息。

我 / 昨天 / 给了 / 她 / 一本 / 书Bahdanau:加性打分 eₜⱼ = vᵀ tanh(Wₛsₜ₋₁ + Wₕhⱼ)我昨天给了她一本书h1h2h3h4h5h6BOS I gave her a book本步读取 cₜ词表预测:yesterday需求来自当前 decoder 状态;亮线标明本例需要的信息。沿源位置打分 → 源位置 softmax → 加权内容 → 下一词分布

公式与算例详情

保存源位置表示 $H=(h_1,\ldots,h_6)$,不再要求所有目标位置只读同一个摘要。每个生成步骤由 decoder 的当前状态产生需求,计算源位置权重,并形成条件内容 $c_t=\sum_j\alpha_{tj}v_j$;输出头仍需根据 decoder 状态与 $c_t$ 形成词表分布。权重不是目标词,内容向量也不是答案。

主图采用六段源切分“我/昨天/给了/她/一本/书”,目标包含 I gave her a book yesterday . EOS 八项。BOS 是起点,EOS 也需要预测。画中箭头表示任务所需要的信息,不是把“她→her”的人工对齐直接交给模型。

先读再更新与先更新再读是可区分的实现约定。LAB02 是先以旧 decoder 状态读取,再把上一步词 embedding 与条件内容送入更新,词表头使用更新后的状态与内容;不能把尚未送入本次更新的最后一个前缀 token 说成已经包含于旧状态。后续三源数值是独立算子放大,不冒充这一六位置模型的同次前向。

2014 Bahdanau使用可学习的加性打分,例如$e_{tj}=v^T anh(W_s s_{t-1}+W_hh_j)$,沿源位置归一化后加权源内容。源encoder与目标decoder仍为循环网络。亮线标明课堂任务的信息需要,不冒充保存模型的实测attention权重。

继续学习

2014:先拥有一个可工作的翻译器,再决定改哪里 · LAB02:D/E · 固定源序,比较两种读取接口

读取之后,系统怎样决定写 her · LAB02:E · 只改 q 或只改 V,分别会改变什么?

保留的完整推导:R30 · R31 · R37。

原始来源