#alternate [ ] 原 神经 网络 机器 翻译 总结 2018年 01月 13日 10:14:30 littlely_ll 阅读 数 : 6412 所 属 专栏 : 自然 语言 处理 版权 声明 : 本文 为 博主 原创 文章 , 转载 时 请 附上 原文 链接 。 https : //blog.csdn.net/littlely_ll/article/details/79026870 神经 网络 机器 翻译 ( Neural Machine Translation , NMT ) 是 最近 几 年 提 出来 的 一 种 机器 翻译 方法 。 相比 于 传统 的 统计 机器 翻译 ( SMT ) 而言 , NMT 能够 训练 一 张 能够 从 一 个 序列 映射 到 另 一 个 序列 的 神经 网络 , 输出 的 可以 是 一 个 变长 的 序列 , 这 在 翻译 、 对话 和 文字 概括 方面 能够 获得 非常 好 的 表现 。 NMT 其实 是 一 个 encoder-decoder 系统 , encod er 把 源语言 序列 进行 编码 , 并 提取 源语言 中 信息 , 通过 decoder 再 把 这 种 信息 转换 到 另 一 种 语言 即 目标 语言 中来 , 从而 完成 对 语言 的 翻译 。 神经 网络 的 seq2seq 学习 序列 对 序列 的 学习 , 顾名思义 , 假设 有 一 个 中文 句子 “ 我 也 爱 你 ” 和 一 个 对应 英文 句子 “ I love you too ” , 那么 序列 的 输入 就 是 “ 我 也 爱 你 ” , 而 序列 的 输出 就 是 “ I love you too ” , 从而 对 这个 序列 对 进行 训练 。 对于 深度 学习 而言 , 如果 要 学习 一 个 序列 , 一 个 重要 的 困难 就 是 这个 序列 的 长度 是 变化 的 , 而 深度 学习 的 输入 和 输出 的 维 度 一般 是 固定 的 , 不过 , 有 了 RNN 结构 , 这个 问题 就 可以 解决 了 , 一般 在 应用 的 时候 encoder 和 decoder 使用 的 是 LSTM 或 GRU 结构 。 这里 写 图片 描述 如 上图 , 输入 一 个 句子 ABC 以及 句子 的 终结 符号 < EOS > , 输出 的 结果 为 XYZ 及 终结 符号 < EOS > 。 在 encoder 中 , 每 一 时间 步 输入 一 个 单词 直 到 输入 终结符 为止 , 然后 由 encoder 的 最后 一 个 隐藏 层 ht [ MATH : < msub > < mi > h < / mi > < mi > t < / mi > < / msub > : MATH ] 作为 decoder 的 输入 , 在 decoder 中 , 最初 的 输入 为 encoder 的 最后 一 个 隐藏层 , 输出 为 目标 序列 词 X , 然后 把 该 隐藏 层 以及 它 的 输出 X 作为 下 一 时间 步 的 输入 来 生成 目标 序列 中 第二 个 词 Y , 这样 依次 进行 直到 < EOS > 。 下面 看 它 详细 的 模型 。 给定 一 个 输入 序列 ( x1 , ⋯ , xT ) [ MATH : < mo stretchy = " false " > ( < / mo > < msub > < mi > x < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > x < / mi > < mi > T < / mi > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] , 经过 下面 的 方程 迭代 生成 输出 序列 ( y1 , ⋯ , yT′ ) [ MATH : < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] : ht = f ( Whxxt + Whhht−1 ) yt = Wyhht ( 1 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-1_1 " > < mtext > ( 1 ) < / mtext > < / mtd > < mtd > < msub > < mi > h < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mi > f < / mi > < mo stretchy = " false " > ( < / mo > < msup > < mi > W < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > h < / mi > < mi > x < / mi > < / mrow > < / msup > < msub > < mi > x < / mi > < mi > t < / mi > < / msub > < mo > + < / mo > < msup > < mi > W < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > h < / mi > < mi > h < / mi > < / mrow > < / msup > < msub > < mi > h < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < mspace linebreak = " newline " > < / mspace > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < msup > < mi > W < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > y < / mi > < mi > h < / mi > < / mrow > < / msup > < msub > < mi > h < / mi > < mi > t < / mi > < / msub > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , Whx [ MATH : < msup > < mi > W < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > h < / mi > < mi > x < / mi > < / mrow > < / msup > : MATH ] 为 输入 到 隐藏 层 的 权重 , Whh [ MATH : < msup > < mi > W < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > h < / mi > < mi > h < / mi > < / mrow > < / msup > : MATH ] 为 隐藏 层到 隐藏 层 的 权重 , ht [ MATH : < msub > < mi > h < / mi > < mi > t < / mi > < / msub > : MATH ] 为 隐藏 结点 , Wyh [ MATH : < msup > < mi > W < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > y < / mi > < mi > h < / mi > < / mrow > < / msup > : MATH ] 为 隐藏 层到 输出 的 权重 。 在 这个 结构 中 , 我们 的 目标 是 估计 条件 概率 p ( y1 , ⋯ , yT′ | x1 , ⋯ , xT ) [ MATH : < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > x < / mi > < mn > 1 < / mn > < / msub > < mo > , < / m o > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > x < / mi > < mi > T < / mi > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] , 首先 通过 encoder 的 最后 一 个 隐藏 层 获得 ( x1 , ⋯ , xT ) [ MATH : < mo stretchy = " false " > ( < / mo > < msub > < mi > x < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > x < / mi > < mi > T < / mi > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 的 固定 维度 的 向量 表示 v [ MATH : < mi > v < / mi > : MATH ] , 然后 通过 decoder 进行 计算 y1 , ⋯ , yT′ [ MATH : < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < m i > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > : MATH ] 的 概率 , 这里 的 初始 隐藏 层 设置 为 向量 v [ MATH : < mi > v < / mi > : MATH ] : p ( y1 , ⋯ , yT′ | x1 , ⋯ , xT ) = ΠT ′t=1p ( yt|v , y1 , ⋯ , yt−1 ) ( 2 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-2_1 " > < mtext > ( 2 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > x < / mi > < mn > 1 < / mn > < / msub > < mo > , < / m o > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > x < / mi > < mi > T < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < msubsup > < mi mathvariant = " normal " > Π < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msubsup > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mi > v < / mi > < mo > , < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 在 这个 方程 中 , 每个 p ( yt|v , y1 , ⋯ , yt−1 ) [ MATH : < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mi > v < / mi > < mo > , < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 为 一 个 softmax 函数 。 Sutskever 等 人 在 实际 建模 中 有 三 点 与 上述 描述 不同 : 1 . 使用 两 个 LSTM 模型 , 一 个 是 用于 encoder 的 , 另 一 个 用于 decoder 2 . 由于 深层 模型 比 浅层 模型 表现 要好 , 所以 使用 了 4 层 LSTM 结构 3 . 对 输入 序列 进行 翻转 , 即由 原来 的 输入 ABC 变成 CBA 。 假设 目标 语言 是 XYZ , 则 LSTM 把 CBA 映射 为 XYZ , 之所以 这样 做 是 因为 A 在 位置 上 与 X 相近 , B 、 C 分别 于 Y 、 Z 相近 , 实际上 使用 了 短期 依赖 , 这样 易于 优化 带 注意力 机制 的 seq2seq 学习 Bahdanau 等 人 在 Sutskever 研究 的 基础 上 又 提出 了 注意力 机制 , 这 种 机制 的 主要 作用 就是 在 预测 一 个 目标 词汇 的 时候 , 它 会 自动 的 查找 源语言 序 列中 哪 一 部分 与 它 相对应 , 并且 在 后续 的 查找 生词 中 可以 直接 复制 相对 应 的 源语言 词 , 这 在 后面 再讲 。 Encoder Bahdanau 等 人 使用 的 encoder 是 一 个 双向 RNN ( bi-directional RNN ) , 双向 RNN 有 前 向 和 后 向 RNN 组成 , 前 向 RNNf → [ MATH : < mover > < mi > f < / mi > < mo > → < / mo > < / mover > : MATH ] 正向 读取 输入 序列 ( 从 x1 [ MATH : < msub > < mi > x < / mi > < mn > 1 < / mn > < / msub > : MATH ] 到 xT [ MATH : < msub > < mi > x < / mi > < mi > T < / mi > < / msub > : MATH ] ) , 并 计算 前 向 隐藏 层 状态 ( h 1 → , ⋯ , hT −→ ) [ MATH : < mo stretchy = " false " > ( < / mo > < mover > < msub > < mi > h < / mi > < mn > 1 < / mn > < / msub > < mo > → < / m o > < / mover > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < mover > < msub > < mi > h < / mi > < mi > T < / m i > < / msub > < mo > → < / mo > < / mover > < mo stretchy = " false " > ) < / mo > : MATH ] , 而后 向 RNNf ← [ MATH : < mover > < mi > f < / mi > < mo > ← < / mo > < / mover > : MATH ] 从 反向 读取 输入 序列 ( 从 xT [ MATH : < msub > < mi > x < / mi > < mi > T < / mi > < / msub > : MATH ] 到 x1 [ MATH : < msub > < mi > x < / mi > < mn > 1 < / mn > < / msub > : MATH ] ) , 并 计算 反向 隐藏 状态 ( h 1 ← , ⋯ , hT ←− ) [ MATH : < mo stretchy = " false " > ( < / mo > < mover > < msub > < mi > h < / mi > < mn > 1 < / mn > < / msub > < mo > ← < / m o > < / mover > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < mover > < msub > < mi > h < / mi > < mi > T < / m i > < / msub > < mo > ← < / mo > < / mover > < mo stretchy = " false " > ) < / mo > : MATH ] 。 对于 每个 单词 xj [ MATH : < msub > < mi > x < / mi > < mi > j < / mi > < / msub > : MATH ] , 我们 把 它 对应 的 前 向 隐藏 状态 向量 hj → [ MATH : < mover > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo > → < / mo > < / mover > : MATH ] 和 后 向 隐藏 状态 向量 hj ← [ MATH : < mover > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo > ← < / mo > < / mover > : MATH ] 拼接 起来 来 表示 对 xj [ MATH : < msub > < mi > x < / mi > < mi > j < / mi > < / msub > : MATH ] 的 注解 ( annotation , 就 还是 个 隐藏 向量 呗 ) , 例如 hj = [ hj→ ; hj← ] [ MATH : < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo > = < / mo > < mo stretchy = " false " > [ < / mo > < mover > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo > → < / m o > < / mover > < mo > ; < / mo > < mover > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo > ← < / mo > < / mover > < mo stretchy = " false " > ] < / mo > : MATH ] , 这样 , 注解 hj [ MATH : < msub > < mi > h < / mi > < mi > j < / mi > < / msub > : MATH ] 就 包含 了 所有 词 的 信息 。 由于 RNN 对 最近 的 输入 表达 较好 , 所以 注解 hj [ MATH : < msub > < mi > h < / mi > < mi > j < / mi > < / msub > : MATH ] 主要 反映 了 xj [ MATH : < msub > < mi > x < / mi > < mi > j < / mi > < / msub > : MATH ] 周围 的 信息 。 Decoder 在 这个 新 的 结构 中 , 定义 条件 概率 : p ( y ) = ΠT ′t=1p ( yt | { y1 , ⋯ , yt−1 } , c ) p ( yt | { y1 , ⋯ , yt−1 } , c ) = g ( yt−1 , st , c ) ( 3 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-3_1 " > < mtext > ( 3 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < msubsup > < mi mathvariant = " normal " > Π < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msubsup > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo fence = " false " stretchy = " false " > { < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo fence = " false " stretchy = " false " > } < / mo > < mo > , < / mo > < mi > c < / mi > < mo stretchy = " false " > ) < / mo > < mspace linebreak = " newline " > < / mspace > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo fence = " false " stretchy = " false " > { < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo fence = " false " stretchy = " false " > } < / mo > < mo > , < / mo > < mi > c < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mi > g < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > s < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < mi > c < / mi > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , g [ MATH : < mi > g < / mi > : MATH ] 为 非线性 函数 , st [ MATH : < msub > < mi > s < / mi > < mi > t < / mi > < / msub > : MATH ] 是 decoder 的 隐藏 状态 , c [ MATH : < mi > c < / mi > : MATH ] 是 由 encoder 的 隐藏 序列 产生 的 上下文 向量 , 这个 具体 是 什么 等一会 说 。 把 ( 3 ) 式 的 条件 概率 写 为 : p ( yi|y1 , ⋯ , yi−1 , x ) = g ( yi−1 , si , ci ) ( 4 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-4 " > < mtext > ( 4 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > i < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / m o > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mi > g < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > s < / mi > < mi > i < / mi > < / msub > < mo > , < / mo > < msub > < mi > c < / mi > < mi > i < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , si [ MATH : < msub > < mi > s < / mi > < mi > i < / mi > < / msub > : MATH ] 是 时间 步 i [ MATH : < mi > i < / mi > : MATH ] 的 隐藏 状态 , 可由 下式 来 计算 : si = f ( si−1 , yi−1 , ci ) [ MATH : < msub > < mi > s < / mi > < mi > i < / mi > < / msub > < mo > = < / mo > < mi > f < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > s < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > c < / mi > < mi > i < / mi > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 下面 来说 说 这个 ci [ MATH : < msub > < mi > c < / mi > < mi > i < / mi > < / msub > : MATH ] 是 怎么 出来 的 。 上下文 向量 ci [ MATH : < msub > < mi > c < / mi > < mi > i < / mi > < / msub > : MATH ] 依赖于 一系列 的 注解 ( h 1 , ⋯ , hT ) [ MATH : < mo stretchy = " false " > ( < / mo > < msub > < mi > h < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > h < / mi > < mi > T < / mi > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] , 这些 注解 上面 我们 已经 讲过 。 上下文 向量 是 由 这些 注解 hj [ MATH : < msub > < mi > h < / mi > < mi > j < / mi > < / msub > : MATH ] 加权 求和 算出来 的 : ci = ΣTj=1αijhj ( 5 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-5 " > < mtext > ( 5 ) < / mtext > < / mtd > < mtd > < msub > < mi > c < / mi > < mi > i < / mi > < / msub > < mo > = < / mo > < msubsup > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > j < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mi > T < / mi > < / msubsup > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > j < / mi > < / mrow > < / msub > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 每个 注解 hj [ MATH : < msub > < mi > h < / mi > < mi > j < / mi > < / msub > : MATH ] 的 权重 αij [ MATH : < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > j < / mi > < / mrow > < / msub > : MATH ] 由下式 计算 : αij = exp ( eij ) Σ Tk=1exp ( eik ) ( 6 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-6 " > < mtext > ( 6 ) < / mtext > < / mtd > < mtd > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > j < / mi > < / mrow > < / msub > < mo > = < / mo > < mf rac > < mrow > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > j < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < / mrow > < mrow > < msubsup > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > k < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mi > T < / mi > < / msubsup > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > k < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < / mrow > < / mfrac > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , eij = a ( si−1 , hj ) [ MATH : < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > j < / mi > < / mrow > < / msub > < mo > = < / mo > < mi > a < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > s < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 为 对位 模型 ( alignment model ) , 由于 它 计算 位置 j [ MATH : < mi > j < / mi > : MATH ] 周围 的 输入 与 位置 i [ MATH : < mi > i < / mi > : MATH ] 的 输出 相 匹配 的 得分 , 所以 又 称为 得分 函数 。 而 向量 αi = ( αi1 , αi2 , ⋯ , αiT ) [ MATH : < msub > < mi > α < / mi > < mi > i < / mi > < / msub > < mo > = < / mo > < mo stretchy = " false " > ( < / mo > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < ms ub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mn > 2 < / mn > < / mrow > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > T < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 为 注意力 向量 , 又为词 对位 向量 。 整个 过程 的 图示 如下 : 这里 写 图片 描述 训练 训练 集 WMT ’ 14 英语 - 法语 , 字典 30000 常 用词 , 不 在 字典 中的 生词 用 [ unk ] 表示 , 没有 改变 大小写 , 没有 进行 词 干化 。 * 两 个 模型 , 一 个 RNN encoder-decoder 模型 ( RNNencdec ) , 另 一 个 为 建议 模型 ( RNNsearch ) , 训练 两 次 , 一 次 句子 长度 最大 30 , 另一 次 最大 50 * RNNencdec 的 encoder 和 decoder 各 有 1000 个 隐藏 单元 。 RNNsearch 的 encoder 前后 向 RNN 各 1000 隐藏 单元 , decoder 1000 个 隐藏 单元 * 输出 使用 maxout 函数 , L2 正 则 化 损失 函数 * 带有 Adadelta ( ϵ = 10 − 6 , ρ=095 [ MATH : < mi > ϵ < / mi > < mo > = < / mo > < msup > < mn > 10 < / mn > < mrow class = " MJX-TeXAtom-ORD " > < mo > − < / mo > < mn > 6 < / mn > < / mrow > < / msup > < mo > , < / mo > < mi > ρ < / mi > < mo > = < / mo > < mn > 095 < / mn > : MATH ] ) 的 minbatch SGD , min-batch=80 Bahdanau 与 Sutskever 的 几 点 不同 : 1 . 在 结构 上 , Sutskever 使用 了 单向 的 RNN , 而 Bahdanau 使用 了 双向 的 RNN 2 . Sutskever 使用 了 encoder 的 最后 一 个 隐藏 状态 来 作为 decoder 的 输入 并且 后续 的 过程 中 不再 把 decoder 的 隐藏 层 作为 下 一 时间 步的 输入 , 而 Bahdanau 使用 了 所有 的 encoder 的 隐藏 状态 并 经过 注意力 机制 与 decoder 的 隐藏 层 一起 作为 decoder 的 初始 输入 , 并且 在后 续 中前 一 decoder 的 隐藏 层 和 输出 作为 下 一 时间 步 的 输入 3 . Bahdanau 加入 了 注意力 机制 , 获得 了 注意力 向量 αi = ( αi1 , αi2 , ⋯ , αiT ) [ MATH : < msub > < mi > α < / mi > < mi > i < / mi > < / msub > < mo > = < / mo > < mo stretchy = " false " > ( < / mo > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < ms ub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mn > 2 < / mn > < / mrow > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > T < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 注意力 机制 的 改进 在 Bahdanau 提出 注意力 机制 后 不久 , Luong 又 在 其 基础 上 把 注意力 机制 分为 全局 注意力 ( globale attention ) 机制 和局 部 注意力 ( local attention ) 机制 。 简单 的 来说 , 是 使用 全部 的 encoder 的 隐藏 层 还是 部分 。 要 进行 预测 , 首先 还是 要 获得 这个 上下文 向量 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] , 这个 上下文 向量 用来 捕获 源语言 的 相关 信息 来 预测 目标 词 yt [ MATH : < msub > < mi > y < / mi > < mi > t < / mi > < / msub > : MATH ] , 然后 把 decoder 的 隐藏 状态 st [ MATH : < msub > < mi > s < / mi > < mi > t < / mi > < / msub > : MATH ] 与 这个 上下文 向量 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] 拼接 起来 通过 非线性 函数 产生 注意力 隐藏 状态 ( attentional hidden state ) : ht ~ = tanh ( Wc [ ct ; st ] ) ( 7 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-7 " > < mtext > ( 7 ) < / mtext > < / mtd > < mtd > < mrow class = " MJX-TeXAtom-ORD " > < mover > < msub > < mi > h < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ~ < / mo > < / mover > < / mrow > < mo > = < / mo > < mi > t < / mi > < mi > a < / mi > < mi > n < / mi > < mi > h < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > W < / mi > < mi > c < / mi > < / msub > < mo stretchy = " false " > [ < / mo > < msub > < mi > c < / mi > < mi > t < / mi > < / msub > < mo > ; < / mo > < msub > < mi > s < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ] < / mo > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 最后 , 使用 softmax 函数 进行 预测 : p ( yt|y < t , x ) = softmax ( Wsht ~ ) ( 8 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-8 " > < mtext > ( 8 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mi > s < / mi > < mi > o < / mi > < mi > f < / mi > < mi > t < / m i > < mi > m < / mi > < mi > a < / mi > < mi > x < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > W < / mi > < mi > s < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mover > < msub > < mi > h < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ~ < / mo > < / mover > < / mrow > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 现在 的 重点 还是 怎么 获得 上下文 向量 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] 。 Global Attention 其实 global attention 与 Bahdanau 的 一样 , 都 是 使用 了 全部 的 encoder 的 隐藏 状态 。 在 模型 中 , 注意力 向量 αt = ( αt1 , αt2 , ⋯ , αtT ) [ MATH : < msub > < mi > α < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mo stretchy = " false " > ( < / mo > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < ms ub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mn > 2 < / mn > < / mrow > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > T < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] , 每 一 个 αtj = exp ( etj ) Σ Tk=1exp ( etk ) [ MATH : < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > j < / mi > < / mrow > < / msub > < mo > = < / mo > < mf rac > < mrow > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > j < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < / mrow > < mrow > < msubsup > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > k < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mi > T < / mi > < / msubsup > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > k < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < / mrow > < / mfrac > : MATH ] , 而 etj = ⎧⎩⎨⎪⎪s′thj , s′tWαhj , v′αtanh ( Wα [ st ; hj ] ) , dotgeneralconcat ( 9 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-9 " > < mtext > ( 9 ) < / mtext > < / mtd > < mtd > < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > j < / mi > < / mrow > < / msub > < mo > = < / mo > < mr ow > < mo > { < / mo > < mtable columnalign = " left left " rowspacing = " . 2em " columnspacing = " 1em " displaystyle = " false " > < mtr > < mtd > < msubsup > < mi > s < / mi > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo > , < / mo > < / mtd > < mtd > < mi > d < / mi > < mi > o < / mi > < mi > t < / mi > < / mtd > < / mtr > < mtr > < mtd > < msubsup > < mi > s < / mi > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < msub > < mi > W < / mi > < mi > α < / mi > < / msub > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo > , < / mo > < / mtd > < mtd > < mi > g < / mi > < mi > e < / mi > < mi > n < / mi > < mi > e < / mi > < mi > r < / mi > < mi > a < / mi > < mi > l < / mi > < / mtd > < / mtr > < mtr > < mtd > < msubsup > < mi > v < / mi > < mi > α < / mi > < mr ow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mi > t < / mi > < mi > a < / mi > < mi > n < / mi > < mi > h < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > W < / mi > < mi > α < / mi > < / msub > < mo stretchy = " false " > [ < / mo > < msub > < mi > s < / mi > < mi > t < / mi > < / msub > < mo > ; < / mo > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > < mo stretchy = " false " > ] < / mo > < mo stretchy = " false " > ) < / mo > < mo > , < / mo > < / mtd > < mtd > < mi > c < / mi > < mi > o < / mi > < mi > n < / mi > < mi > c < / mi > < mi > a < / mi > < mi > t < / mi > < / mtd > < / mtr > < / mtable > < mo fence = " true " stretchy = " true " symmetric = " true " > < / mo > < / mrow > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , etj [ MATH : < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > j < / mi > < / mrow > < / msub > : MATH ] 就是 上面 所 说 的 对应 模型 , 也 是 得分 函数 , 而 s′t [ MATH : < msubsup > < mi > s < / mi > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > : MATH ] 为 decoder 第t 时间 步 隐藏 层 状态 的 转置 , hj [ MATH : < msub > < mi > h < / mi > < mi > j < / mi > < / msub > : MATH ] 为 encoder 的 第j [ MATH : < mi > j < / mi > : MATH ] 时间 步 的 隐藏 状态 , Wα , vα [ MATH : < msub > < mi > W < / mi > < mi > α < / mi > < / msub > < mo > , < / mo > < msub > < mi > v < / mi > < mi > α < / mi > < / msub > : MATH ] 是 可 训练 参数 。 最后 算出 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] : ct = ΣTj=1αtjhj [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < msubsup > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > j < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mi > T < / mi > < / msubsup > < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > j < / mi > < / mrow > < / msub > < msub > < mi > h < / mi > < mi > j < / mi > < / msub > : MATH ] ( 这里 注意 一点 , 不 要 认为 计算 etj [ MATH : < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > j < / mi > < / mrow > < / msub > : MATH ] 的 时候 应该 用 st−1 [ MATH : < msub > < mi > s < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > : MATH ] , 因为 这个 模型 在 计算 计算 st [ MATH : < msub > < mi > s < / mi > < mi > t < / mi > < / msub > : MATH ] 的 时候 没有 用到 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] , 要 与 Bahdanau 的 相 区别 ) global attention 的 图示 如下 : 这里 写 图片 描述 Local Attention Local attention 就是 选择 一 个 较 小 的 上下文 向量 窗口 , 具体 来说 , 模型 在 时间 步 t [ MATH : < mi > t < / mi > : MATH ] 首先 为 每个 目标 词 产生 一 个 对应 位置 pt [ MATH : < msub > < mi > p < / mi > < mi > t < / mi > < / msub > : MATH ] , 而 这个 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] 就是 在 这个 对应 位置 上下文 窗口 [ pt−D , pt+D ] [ MATH : < mo stretchy = " false " > [ < / mo > < msub > < mi > p < / mi > < mi > t < / mi > < / msub > < mo > − < / mo > < mi > D < / mi > < mo > , < / mo > < msub > < mi > p < / mi > < mi > t < / mi > < / msub > < mo > + < / mo > < mi > D < / mi > < mo stretchy = " false " > ] < / mo > : MATH ] 中 encoder 的 隐藏 状态 的 加权 平均 , 这个 D [ MATH : < mi > D < / mi > : MATH ] 是 自己 选择 的 ( 如果 这个 窗口 到达 了 句子 的 边界 , 那么 只 考虑 在 窗口 中词 , 忽略 其他 部分 ) 。 不同于 global attention 的 αt [ MATH : < msub > < mi > α < / mi > < mi > t < / mi > < / msub > : MATH ] , local attention 的 αt [ MATH : < msub > < mi > α < / mi > < mi > t < / mi > < / msub > : MATH ] 是 一 个 固定 维度 的 向量 , 即 ∈R2D+1 [ MATH : < mo > ∈ < / mo > < msup > < mi > R < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mn > 2 < / mn > < mi > D < / mi > < mo > + < / mo > < mn > 1 < / mn > < / mrow > < / msup > : MATH ] 。 而 local attention 又 有 两 个 变体 : 1 . Monotonic alignment ( local-m ) , 即 认为 目标 序列 与 源 序列 是 单调 对应 的 , 所以 设置 pt = t [ MATH : < msub > < mi > p < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mi > t < / mi > : MATH ] , 然后 计算αt [ MATH : < msub > < mi > α < / mi > < mi > t < / mi > < / msub > : MATH ] 2 . Predictive alignment ( local-p ) , 此 方法 是 预测 一 个 对应 位置 : pt = L∗sigmoid ( v′ptanh ( Wpst ) ) ( 10 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn - 10 " > < mtext > ( 10 ) < / mtext > < / mtd > < mtd > < msub > < mi > p < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mi > L < / mi > < mo > ∗ < / mo > < mi > s < / mi > < mi > i < / mi > < mi > g < / mi > < mi > m < / mi > < mi > o < / mi > < mi > i < / mi > < mi > d < / mi > < mo stretchy = " false " > ( < / mo > < msubsup > < mi > v < / mi > < mi > p < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mi > t < / mi > < mi > a < / mi > < mi > n < / mi > < mi > h < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > W < / mi > < mi > p < / mi > < / msub > < msub > < mi > s < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , Wp 和 vp [ MATH : < msub > < mi > W < / mi > < mi > p < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo > 和 < / mo > < / mrow > < msub > < mi > v < / mi > < mi > p < / mi > < / ms ub > : MATH ] 是 预测 未知 的 参数 , 可用 梯度 下降 法 计算 , L [ MATH : < mi > L < / mi > : MATH ] 为 源语言 句子 的 长度 , pt ∈[0 , L] [ MATH : < msub > < mi > p < / mi > < mi > t < / mi > < / msub > < mo > ∈ < / mo > < mo stretchy = " false " > [ < / mo > < mn > 0 < / mn > < mo > , < / mo > < mi > L < / mi > < mo stretchy = " false " > ] < / mo > : MATH ] 。 然后 Luong 使用 了 一 个 高斯 分布 来 修正 词 对位 权重 αt [ MATH : < msub > < mi > α < / mi > < mi > t < / mi > < / msub > : MATH ] : αt = : αtexp ( − ( x−pt ) 22σ2 ) [ MATH : < msub > < mi > α < / mi > < mi > t < / mi > < / msub > < mo > = : < / mo > < msub > < mi > α < / mi > < mi > t < / mi > < / msub > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < mo > − < / mo > < mfrac > < mrow > < mo stretchy = " false " > ( < / mo > < mi > x < / mi > < mo > − < / mo > < msub > < mi > p < / mi > < mi > t < / mi > < / msub > < msup > < mo stretchy = " false " > ) < / mo > < mn > 2 < / mn > < / msup > < / mrow > < mrow > < mn > 2 < / mn > < msup > < m i > σ < / mi > < mn > 2 < / mn > < / msup > < / mrow > < / mfrac > < mo stretchy = " false " > ) < / mo > : MATH ] 其中 , 设置 的 标准差 为 σ = D/2 [ MATH : < mi > σ < / mi > < mo > = < / mo > < mi > D < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > / < / mo > < / mrow > < mn > 2 < / mn > : MATH ] , 注意 , pt [ MATH : < msub > < mi > p < / mi > < mi > t < / mi > < / msub > : MATH ] 是 一 个 实数 , 而 x [ MATH : < mi > x < / mi > : MATH ] 是 以 pt [ MATH : < msub > < mi > p < / mi > < mi > t < / mi > < / msub > : MATH ] 为 中心 窗口 内 的 整数 。 具体 的 local attention 结构 表示 图 如下 : 这里 写 图片 描述 Input-feeding 方法 其实 这 一 步 与 Bahdanau 的 方法 一样 , 是 把 最后 的 注意力 隐藏 状态 ht ~ [ MATH : < mrow class = " MJX-TeXAtom-ORD " > < mover > < msub > < mi > h < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ~ < / mo > < / mover > < / mrow > : MATH ] 与 输出 拼接 后 作为 下 一 时间 步 的 输入 , 这样 模型 能 有效 获得 前面 的 对位 信息 , 图示 如下 : 这里 写 图片 描述 训练 Luong 的 训练 使用 的 是 WMT ’ 14 训练集 , 两 种 语言 字典 大小 50K , 不 在 字典 内 的 词用 < unk > 表示 * 过滤 掉 超过 50 字 的 句子 并 进行 混洗 * 4 层 LSTM , 每层 1000 个 cell , 1000 维度 的 词向量 * 参数 使用 均匀 分布 [ -0.1 , 0.1 ] 初始化 * 使用 SGD 训练 10 轮 * 首先 用 学习率 1 开始 , 5 轮 后 , 每 轮 对 学习率 减半 * min-batch 大 小 为 128 * dropout = 0.2 , 使用 dropout 时 , 进行 12 轮 , 8 轮 后 每 轮 对 学习率 减半 * 对于 local attention 模型 , 设置 D 为 10 Luong 与 Bahdanau 模型 的 不同 之 处 : 1 . 使用 结构 不同 , Bahdanau 使用 双向 RNN , 而 Luong 又 变为 单向 的 RNN 。 2 . Luong 在 Bahdanau 的 基础 上 把 注意力 机制 分为 global attention 和 local attention 方法 3 . 在 计算 decoder 的 st [ MATH : < msub > < mi > s < / mi > < mi > t < / mi > < / msub > : MATH ] 的 时候 , Bahdanau 使用 了 st−1 , yt−1 , ct [ MATH : < msub > < mi > s < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] , 而 Luong 用 了 st−1 , yt−1 , h ~ t−1 [ MATH : < msub > < mi > s < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mrow class = " MJX-TeXAtom-ORD " > < mover > < mi > h < / mi > < mo stretchy = " false " > ~ < / mo > < / mover > < / mrow > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > : MATH ] , 没有 用 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] , 这 在 前面 计算 Luong 的 得分 etj [ MATH : < msub > < mi > e < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mi > j < / mi > < / mrow > < / msub > : MATH ] 的 时候 也 说了 4 . 在 计算 输出 概率 的 时候 , Bahdanau 是 把 上下文 向量 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] 与 decoder 的 隐藏 状态 st [ MATH : < msub > < mi > s < / mi > < mi > t < / mi > < / msub > : MATH ] 直接 作为 参数 经过 非线性 变换 得到 概率 p ( yt | y1 , ⋯ , yt−1 , x ) [ MATH : < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / m o > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > : MATH ] , 而 Luong 是 先 把 ct [ MATH : < msub > < mi > c < / mi > < mi > t < / mi > < / msub > : MATH ] 和 st [ MATH : < msub > < mi > s < / mi > < mi > t < / mi > < / msub > : MATH ] 拼接 在一起 , 经过 非线性 变换 得到 注意力 隐藏 向量 ht ~ [ MATH : < mrow class = " MJX-TeXAtom-ORD " > < mover > < msub > < mi > h < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ~ < / mo > < / mover > < / mrow > : MATH ] , 最后 再 经过 softmax 函数 进行 预测 神经 网络 机器 翻译 的 几 个 问题 神经 网络 机器 翻译 相比 于 其他 统计 机器 翻译 有 很多 的 优势 , 例如 NMT 需要 很少 的 领域 知识 , 整个 系统 可以 一起 优化 以及 占用 内存 较 小 等 。 尽管 有 很多 优点 , 但 还 有一些 其他 问题 困扰 着 NMT , 例如 目标 词汇 数量 可能 受到 限制 , 这 是 由于 训练 的 复杂性 而 引起 的 。 实践 中 大多 使用 的 目标 词 汇为 30000 至 80000 , 其他 生词 用 [ UNK ] 表示 , 但 如果 翻译 后 的 目标 语言 中 有 [ UNK ] 怎么 处理 呢 。 对于 这个 问题 一般 有 两 种 解法 : 一 是 仍然 使用 大 的 目标 词汇 字典 , 但 可 使用 不同 的 方法 提高 运算 效率 , 把 最后 的 softmax 改成 别的 函数 , 如 NCE ( Noise Contrastive Estimation ) 、 Hierarchical softmax 等 ; 二 是 仍然 使用 有限 的 字典 , 不过 是 要 处理 翻译 出 的 [ UNK ] , 例如 基于 字符 的 方法 , 混合 的 方法 等 。 本次 主要 讲 两 种 方法 , 一 种 是 使用 大 的 目标 字典 的 方法 , 另 一 种 是 解决 输出 [ UNK ] 的 方法 。 基于 大 的 目标 字典 的 方法 Jean 根据 Bahdanau 的 模型 使用 了 一 个 非常 大 的 目标 字典 来 训练 NMT , 但是 由于 输出 的 概率 是 使用 softmax 计算 , 如下式 : p ( yt|y < t , x ) = 1 Zexp { w′tϕ ( yt−1 , st , ct ) + bt } ( 11 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-11_3 " > < mtext > ( 11 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mfrac > < mn > 1 < / mn > < mi > Z < / mi > < / mfrac > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo fence = " false " stretchy = " false " > { < / mo > < msubsup > < mi > w < / mi > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mi > ϕ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > s < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < msub > < mi > c < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > + < / mo > < msub > < mi > b < / mi > < mi > t < / mi > < / msub > < mo fence = " false " stretchy = " false " > } < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 而 计算 成本 最 高 的 就是 softmax 的 正则 化项Z [ MATH : < mi > Z < / mi > : MATH ] , 所以 Jean 在 大目 字典 上 提出 了 一 种 近似 学习 方法 首先 考虑 对 ( 11 ) 式 求 对数 梯度 : ▽logp ( yt|y < t , x ) = ▽ϵ ( yt ) −Σk : yk∈Vp ( yk|y < t , x ) ▽ϵ ( yk ) ( 12 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-12_3 " > < mtext > ( 12 ) < / mtext > < / mtd > < mtd > < mo > ▽ < / mo > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mo > ▽ < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > − < / mo > < msub > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > k < / mi > < mo > : < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo > ∈ < / mo > < mi > V < / mi > < / mrow > < / msub > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > ▽ < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , 能量 函数 ϵ ( yj ) = w′jϕ ( yj−1 , sj , cj ) +bj [ MATH : < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > j < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < msubsup > < mi > w < / mi > < mi > j < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mi > ϕ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > j < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > s < / mi > < mi > j < / mi > < / msub > < mo > , < / mo > < msub > < mi > c < / mi > < mi > j < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > + < / mo > < msub > < mi > b < / mi > < mi > j < / mi > < / msub > : MATH ] 公式 ( 12 ) 右边 的 第二 项 就是 能量 函数 梯度 的 期望 : EP [ ▽ϵ ( y ) ] ( 13 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-13_3 " > < mtext > ( 13 ) < / mtext > < / mtd > < mtd > < msub > < mi > E < / mi > < mi > P < / mi > < / msub > < mo stretchy = " false " > [ < / mo > < mo > ▽ < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo stretchy = " false " > ) < / mo > < mo stretchy = " false " > ] < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , P [ MATH : < mi > P < / mi > : MATH ] 表示 为 p ( y|y < t , x ) [ MATH : < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > : MATH ] 现在 是 怎样 估计 或 近似 这个 期望 Jean 使用 了 重要性 抽样 ( importance sampling ) 方法 , 即 找到 一 个 提议 分布 ( proposal distribution ) Q [ MATH : < mi > Q < / mi > : MATH ] 和 从 提议 分布 中 抽取 的 样本 Vs [ MATH : < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > s < / mi > < / mrow > < / msup > : MATH ] , 那么 可由 下式 近似 估计 ( 13 ) 式 : EP [ ▽ϵ ( y ) ] ≈Σk : yk∈VsωkΣk′ : yk′∈ Vsωk′ [ ▽ϵ ( yk ) ] ( 14 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-14_3 " > < mtext > ( 14 ) < / mtext > < / mtd > < mtd > < msub > < mi > E < / mi > < mi > P < / mi > < / msub > < mo stretchy = " false " > [ < / mo > < mo > ▽ < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo stretchy = " false " > ) < / mo > < mo stretchy = " false " > ] < / mo > < mo class = " MJX-variant " > ≈ < / mo > < msub > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > k < / mi > < mo > : < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo > ∈ < / mo > < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > s < / mi > < / mrow > < / msup > < / mrow > < / msub > < mfrac > < m sub > < mi > ω < / mi > < mi > k < / mi > < / msub > < mrow > < msub > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > k < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < mo > : < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > k < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mo > ∈ < / mo > < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > s < / mi > < / mrow > < / msup > < / mrow > < / msub > < msub > < mi > ω < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > k < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < / mrow > < / mfrac > < mo stretchy = " false " > [ < / mo > < mo > ▽ < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo stretchy = " false " > ] < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 : ωk = exp {ϵ ( yk ) −logQ ( yk ) } ( 15 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-15_3 " > < mtext > ( 15 ) < / mtext > < / mtd > < mtd > < msub > < mi > ω < / mi > < mi > k < / mi > < / msub > < mo > = < / mo > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo fence = " false " stretchy = " false " > { < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > − < / mo > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < mi > Q < / m i > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo fence = " false " stretchy = " false " > } < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 在 这里 只是 使用 了 一 个 目标 字典 的 较 小 的 一 个 子集 Vs [ MATH : < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > s < / mi > < / mrow > < / msup > : MATH ] 就 能 计算 出 正则 项 。 但是 怎么 选择 这个 提议 分布 呢 ? 首先 Jean 在 实践 中 把 训练 语料 进行 分区 , 在 训练 前 , 对 每个 分区 定义 一 个 目标 词汇 子集 V′ [ MATH : < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > : MATH ] , 然后 顺序 扫描 句子 , 抽取 不同 的 单词 , 直 到 到达 一 个 阈值 τ = | V′ | [ MATH : < mi > τ < / mi > < mo > = < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > : MATH ] , 这些 句子 就 作为 一 个 分区 , 而 这个 词汇 子集 就 用于 这个 分区 的 训练 , 重复 上述 过程 直 到 把 训练 目标 句子 分区 完 。 假设 第 i [ MATH : < mi > i < / mi > : MATH ] 个 分区 用 的 目标 词典 为 V′i [ MATH : < msubsup > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > : MATH ] , 对于 每 一 个 分区 都 对应 一 个 Qi [ MATH : < msub > < mi > Q < / mi > < mi > i < / mi > < / msub > : MATH ] , 在 V′i [ MATH : < msubsup > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > : MATH ] 内 , 每 一 个 目标 词 都 具有 相同 的 概率 , 而 不 在 V′i [ MATH : < msubsup > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > : MATH ] 内 的 概率 为 0 : Qi ( yk ) = { 1|V′i|0ifyt∈ V′iotherwise ( 16 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-16_3 " > < mtext > ( 16 ) < / mtext > < / mtd > < mtd > < msub > < mi > Q < / mi > < mi > i < / mi > < / msub > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mrow > < mo > { < / mo > < mtable columnalign = " left left " rowspacing = " . 2em " columnspacing = " 1em " displaystyle = " false " > < mtr > < mtd > < mfrac > < mn > 1 < / mn > < mrow > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msubsup > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < / mrow > < / mfrac > < / mtd > < mtd > < mi > i < / mi > < mi > f < / mi > < mspace width = " 1em " > < / mspace > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mo > ∈ < / mo > < msubsu p > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < / mtd > < / mtr > < mtr > < mtd > < mn > 0 < / mn > < / mtd > < mtd > < mi > o < / mi > < mi > t < / mi > < mi > h < / mi > < mi > e < / mi > < mi > r < / mi > < mi > w < / mi > < mi > i < / mi > < mi > s < / mi > < mi > e < / mi > < / mtd > < / mtr > < / mtable > < mo fence = " true " stretchy = " true " symmetric = " true " > < / mo > < / mrow > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 而 这个 提议 分布 可以 抵消 ( 15 ) 式 的 校正 项 −logQ ( yk ) [ MATH : < mo > − < / mo > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < mi > Q < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] , 非常 简单 , 我们 来 推导 一下 : ωk = exp {ϵ ( yk ) −logQ ( yk ) } = exp {ϵ ( yk ) −log1|V′i | } = exp {ϵ ( yk ) + log | V′i | } = exp {ϵ ( y k ) +logτ } [ MATH : < msub > < mi > ω < / mi > < mi > k < / mi > < / msub > < mo > = < / mo > < mi > e < / mi > < mi > x < / mi > < mi > p < / m i > < mo fence = " false " stretchy = " false " > { < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > − < / mo > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < mi > Q < / m i > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo fence = " false " stretchy = " false " > } < / mo > < mspace linebreak = " newline " > < / mspace > < mo > = < / mo > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < m o fence = " false " stretchy = " false " > { < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > − < / mo > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < mfrac > < mn > 1 < / mn > < mrow > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msubsup > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < / mrow > < / mfrac > < mo fence = " false " stretchy = " false " > } < / mo > < mspace linebreak = " newline " > < / mspace > < mo > = < / mo > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < m o fence = " false " stretchy = " false " > { < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > + < / mo > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msubsup > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo fence = " false " stretchy = " false " > } < / mo > < mspace linebreak = " newline " > < / mspace > < mo > = < / mo > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < m o fence = " false " stretchy = " false " > { < / mo > < mi > ϵ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > + < / mo > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < mi > τ < / m i > < mo fence = " false " stretchy = " false " > } < / mo > : MATH ] 最后 得到 与 ( 11 ) 式 近似 的 概率 : p ( yt|y < t , x ) = exp { w′tϕ ( yt−1 , st , ct ) + bt } Σk : yk∈V′exp { w′kϕ ( yt−1 , st , ct ) + bk } ( 17 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-17_3 " > < mtext > ( 17 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mfrac > < mrow > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo fence = " false " stretchy = " false " > { < / mo > < msubsup > < mi > w < / mi > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mi > ϕ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > s < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < msub > < mi > c < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > + < / mo > < msub > < mi > b < / mi > < mi > t < / mi > < / msub > < mo fence = " false " stretchy = " false " > } < / mo > < / mrow > < mrow > < msub > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > k < / mi > < mo > : < / mo > < msub > < mi > y < / mi > < mi > k < / mi > < / msub > < mo > ∈ < / mo > < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mi > e < / mi > < mi > x < / mi > < mi > p < / mi > < mo fence = " false " stretchy = " false " > { < / mo > < msubsup > < mi > w < / mi > < mi > k < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > < mi > ϕ < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > s < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < msub > < mi > c < / mi > < mi > t < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < mo > + < / mo > < msub > < mi > b < / mi > < mi > k < / mi > < / msub > < mo fence = " false " stretchy = " false " > } < / mo > < / mrow > < / mfrac > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 这里 的 V′ [ MATH : < msup > < mi > V < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > : MATH ] 就是 V′i [ MATH : < msubsup > < mi > V < / mi > < mi > i < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msubsu p > : MATH ] , 注意 , 提议 分布 Q [ MATH : < mi > Q < / mi > : MATH ] 得到 的 估计 式 有 偏 的 。 在 解码 的 时候 , 我们 可以 使用 整个 目标 字典 , 但是 计算 成本 很 大 , 一 个 自然 地 想法 就是 使用 一部分 目标 字典 而 不 是 整个 , Jean 使用 了 一 个 候选 列表 ( cand idate list ) 构建 字典 子集 , 这个 候选 列表 包括 两部分 : 一部分 是 在 训练 集中 使用 词 对位 模型 ( Bahdanau 模型 , αij [ MATH : < msub > < mi > α < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > i < / mi > < mi > j < / mi > < / mrow > < / msub > : MATH ] 越 大 , 则 第i 个 目标 词 与 第j 个 源语言 词 对位 的 概率 越大 ) 对应 源语言 和 目标 语言 的 单词 , 并 构建 一 个 字典 , 根据 这个 字典 , 找到 每个 源语言 句子 的 每个 单词 的 前 K′ [ MATH : < msup > < mi > K < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > : MATH ] 个 最 相近 的 目标 词 ; 第二 部分 是 对 每 一 个 源语言 句子 , 构建 一 个 由 前 K [ MATH : < mi > K < / mi > : MATH ] 个 最大 频率 词 ( 可以 根据 一 元 模型 计算 ) 组成 的 目标 词 汇集 ( 在 这里 每个 句子 的 前 K [ MATH : < mi > K < / mi > : MATH ] 个 最大 频率 词 应该 是 一样 的 ) 。 如下 图 表示 : 这里 写 图片 描述 处理 [ UNK ] 单词 不管是 使用 大 的 目标 词 字典 还是 小 的 目标 词 字典 , 总 会 有 出现 的 生词 , 而 在 翻译 中 生词 都 是 表示 为 [ UNK ] 字符 , 这 会 造成 信息 的 缺失 , 所以 还原 单词 信息 是 翻 译中 非常 重要 的 一 步 。 对于 这 种 问题 , Gulcehre 认为 要么 是 从 源语言 中 直接 复制 单词 过去 要么 是 用 模型 进行 解码 生成 单词 。 如 下图 所 示 : 这里 写 图片 描述 他们 把 这 两 种 方式 整合 到 一 个 模型 中去 。 所以 他们 提出 了 pointer softmax 模型 。 他们 额 模型 仍然 以 Bahdanau 为 基础 , 对 输出 概率 形式 进行 改进 。 Gulcehre 的 模型 使用 两 种 softmax , shortlist softmax 和 location softmax , 前 一 种 就 是 普通 的 softmax , 每 一 维度 对应 一 个 字典 中 的 词 , 后 一 种 是 每 一 个 输出 维度 对应 源语言 序列 一 个 单词 的 位置 , 然后 把 该 单词复 制 过去 。 关键 是 怎么 选择 这 两 种 softmax , Gulcehre 使用 的 是 一 个 开关 网络 , 它 输出 的 是 一 个 二 元 变量 zt [ MATH : < msub > < mi > z < / mi > < mi > t < / mi > < / msub > : MATH ] , 其 表明 是 使用 shortlist softmax ( 当 zt = 1 [ MATH : < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 1 < / mn > : MATH ] ) 还是 使用 location softmax ( 当 zt = 0 [ MATH : < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 0 < / mn > : MATH ] ) , 如果 时间 步 中 期望 产生 的 单词 既 不 在 字典 中 , 也 没有 复制 源语言 句子 的 单词 , 那么 开关 网络 就 选择 shortlist softmax , 这样 会 产生 一 个 [ UNK ] 。 整个 示意图 如下 : 这里 写 图片 描述 具体 来说 , 给定 一 个 输入 序列 x = ( x1 , x2 , ⋯ , xT ) [ MATH : < mi > x < / mi > < mo > = < / mo > < mo stretchy = " false " > ( < / mo > < msub > < mi > x < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < msub > < mi > x < / mi > < mn > 2 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > x < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > T < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] , 我们 的 目标 就 是 最大化 目标 单词 序列y = ( y1 , y2 , ⋯ , yT′ ) [ MATH : < mi > y < / mi > < mo > = < / mo > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < msub > < mi > y < / mi > < mn > 2 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 和 单词 生成 z = ( z1 , z2 , ⋯ , zT′ ) [ MATH : < mi > z < / mi > < mo > = < / mo > < mo stretchy = " false " > ( < / mo > < msub > < mi > z < / mi > < mn > 1 < / mn > < / msub > < mo > , < / mo > < msub > < mi > z < / mi > < mn > 2 < / mn > < / msub > < mo > , < / mo > < mo > ⋯ < / mo > < mo > , < / mo > < msub > < mi > z < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] : pθ ( y , z|x ) = ΠT ′t=1pθ ( yt , zt|y < t , z < t , x ) ( 18 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-18 " > < mtext > ( 18 ) < / mtext > < / mtd > < mtd > < msub > < mi > p < / mi > < mi > θ < / mi > < / msub > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < msubsup > < mi mathvariant = " normal " > Π < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msubsup > < msub > < mi > p < / mi > < mi > θ < / mi > < / msub > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > y < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < ms ub > < mi > z < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , 产生 的 yt [ MATH : < msub > < mi > y < / mi > < mi > t < / mi > < / msub > : MATH ] 可以 是 shortlist softmax 产生 的 单词 wt [ MATH : < msub > < mi > w < / mi > < mi > t < / mi > < / msub > : MATH ] , 也 可以 是 location softmax 产生 的 位置 lt [ MATH : < msub > < mi > l < / mi > < mi > t < / mi > < / msub > : MATH ] ( 这个 lt [ MATH : < msub > < mi > l < / mi > < mi > t < / mi > < / msub > : MATH ] 就是 前面 所 说 的 词 对应 权重 αt [ MATH : < msub > < mi > α < / mi > < mi > t < / mi > < / msub > : MATH ] ) 。 把 上 式 因式 分解 : p ( y , z|x ) = Πt∈ Twp ( wt , zt | ( y , z ) < t , x ) ×Π t′∈ Tlp ( lt′ , zt′ | ( y , z ) < t′ , x ) ( 19 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn - 19 " > < mtext > ( 19 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < msub > < mi mathvariant = " normal " > Π < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > ∈ < / mo > < msub > < mi > T < / mi > < mi > w < / mi > < / msub > < / mrow > < / msub > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > w < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > × < / mo > < msub > < mi mathvariant = " normal " > Π < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < mo > ∈ < / mo > < msub > < mi > T < / mi > < mi > l < / mi > < / msub > < / mrow > < / msub > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > l < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mo > , < / mo > < msub > < mi > z < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < msup > < mi > t < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , Tw [ MATH : < msub > < mi > T < / mi > < mi > w < / mi > < / msub > : MATH ] 是 zt = 1 [ MATH : < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 1 < / mn > : MATH ] 的 时间 步 集合 , Tl [ MATH : < msub > < mi > T < / mi > < mi > l < / mi > < / msub > : MATH ] 是 zt = 0 [ MATH : < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 0 < / mn > : MATH ] 的 时间 步 集合 , Tw⋃ Tl = { 1 , 2 , ⋯ , T′ } [ MATH : < msub > < mi > T < / mi > < mi > w < / mi > < / msub > < mo > ⋃ < / mo > < msub > < mi > T < / mi > < mi > l < / mi > < / msub > < mo > = < / mo > < mo fence = " false " stretchy = " false " > { < / mo > < mn > 1 < / mn > < mo > , < / mo > < mn > 2 < / mn > < mo > , < / mo > < mo > ⋯ < / m o > < mo > , < / mo > < msup > < mi > T < / mi > < mrow class = " MJX-TeXAtom-ORD " > < msup > < mi > < / mi > < mo > ′ < / mo > < / msup > < / mrow > < / msup > < mo fence = " false " stretchy = " false " > } < / mo > : MATH ] , Tw⋂ Tl = ∅ [ MATH : < msub > < mi > T < / mi > < mi > w < / mi > < / msub > < mo > ⋂ < / mo > < msub > < mi > T < / mi > < mi > l < / mi > < / msub > < mo > = < / mo > < mi mathvariant = " normal " > ∅ < / mi > : MATH ] 等式 右边 的 概率 可以 分别 表示 如下 : p ( wt , zt | ( y , z ) < t ) = p ( wt | zt , ( y , z ) < t ) ×p ( zt = 1 | ( y , z ) < t ) ( 20 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn - 20 " > < mtext > ( 20 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > w < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > w < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > , < / m o > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < mo > × < / mo > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 1 < / mn > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] p ( lt , zt | ( y , z ) < t ) = p ( lt | zt = 0 , ( y , z ) < t ) ×p ( zt = 0 | ( y , z ) < t ) ( 21 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-21 " > < mtext > ( 21 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > l < / mi > < mi > t < / mi > < / msub > < mo > , < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > l < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / m o > < mn > 0 < / mn > < mo > , < / mo > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < mo > × < / mo > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 0 < / mn > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 这里 都 省略 了 x [ MATH : < mi > x < / mi > : MATH ] , 其中 , p ( wt | zt , ( y , z ) < t , x ) [ MATH : < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > w < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > , < / m o > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > : MATH ] 为 shortlist softmax , p ( lt | zt = 0 , ( y , z ) < t ) [ MATH : < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > l < / mi > < mi > t < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / m o > < mn > 0 < / mn > < mo > , < / mo > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo stretchy = " false " > ) < / mo > : MATH ] 为 location softmax 。 而 开关 概率 可以 作为 一 个 有 二 元 输出 的 多层 感知机 : p ( zt = 1 | ( y , z ) < t , x ) = σ ( f ( x , ht−1 ; θ ) ) ( 22 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-22 " > < mtext > ( 22 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 1 < / mn > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mi > σ < / mi > < mo stretchy = " false " > ( < / mo > < mi > f < / mi > < mo stretchy = " false " > ( < / mo > < mi > x < / mi > < mo > , < / mo > < msub > < mi > h < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > ; < / mo > < mi > θ < / mi > < mo stretchy = " false " > ) < / mo > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] p ( zt = 0 | ( y , z ) < t , x ) = 1 −σ ( f ( x , ht−1 ; θ ) ) ( 23 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-23 " > < mtext > ( 23 ) < / mtext > < / mtd > < mtd > < mi > p < / mi > < mo stretchy = " false " > ( < / mo > < msub > < mi > z < / mi > < mi > t < / mi > < / msub > < mo > = < / mo > < mn > 0 < / mn > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < mo stretchy = " false " > ( < / mo > < mi > y < / mi > < mo > , < / mo > < mi > z < / mi > < msub > < mo stretchy = " false " > ) < / mo > < mrow class = " MJX-TeXAtom-ORD " > < mo > < < / mo > < mi > t < / mi > < / mrow > < / msub > < mo > , < / mo > < mi > x < / mi > < mo stretchy = " false " > ) < / mo > < mo > = < / mo > < mn > 1 < / mn > < mo > − < / mo > < mi > σ < / mi > < mo stretchy = " false " > ( < / mo > < mi > f < / mi > < mo stretchy = " false " > ( < / mo > < mi > x < / mi > < mo > , < / mo > < msub > < mi > h < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > t < / mi > < mo > − < / mo > < mn > 1 < / mn > < / mrow > < / msub > < mo > ; < / mo > < mi > θ < / mi > < mo stretchy = " false " > ) < / mo > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 其中 , σ [ MATH : < mi > σ < / mi > : MATH ] 为 sigmoid 函数 。 那么 , 给定 N [ MATH : < mi > N < / mi > : MATH ] 个 源语言 句子 和 目标 语言 句子 对 , 训练 的 目标 就 是 最大化 下式 : max1NΣNn=1logpθ ( yn , zn | xn ) ( 24 ) [ MATH : < mtable displaystyle = " true " > < mlabeledtr > < mtd id = " mjx-eqn-24 " > < mtext > ( 24 ) < / mtext > < / mtd > < mtd > < mi > m < / mi > < mi > a < / mi > < mi > x < / mi > < mspace width = " 1em " > < / mspace > < mfrac > < mn > 1 < / mn > < mi > N < / mi > < / mfrac > < msubsup > < mi mathvariant = " normal " > Σ < / mi > < mrow class = " MJX-TeXAtom-ORD " > < mi > n < / mi > < mo > = < / mo > < mn > 1 < / mn > < / mrow > < mi > N < / mi > < / msubsup > < mi > l < / mi > < mi > o < / mi > < mi > g < / mi > < msub > < mi > p < / mi > < mi > θ < / mi > < / msu b > < mo stretchy = " false " > ( < / mo > < msub > < mi > y < / mi > < mi > n < / mi > < / msub > < mo > , < / mo > < msub > < mi > z < / mi > < mi > n < / mi > < / msub > < mrow class = " MJX-TeXAtom-ORD " > < mo stretchy = " false " > | < / mo > < / mrow > < msub > < mi > x < / mi > < mi > n < / mi > < / msub > < mo stretchy = " false " > ) < / mo > < / mtd > < / mlabeledtr > < / mtable > : MATH ] 使用 Google 的 一 篇 文章 对 它 的 评价 作为 结束 : this approach is both unreliable at scale — the attention mechanism is unstable when the network is deep — and copying may not always be the best strategy for rare words — sometimes transliteration is more appropriate 主要 参考 文献 【 Ilya Sutskever , Oriol Vinyals , Quoc V. Le 】 Sequence to Sequence Learning with Neural Networks 【 Dzmitry Bahdanau , KyungHyun Cho , Yoshua Bengio 】 NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE 【 Minh - Thang Luong , Hieu Pham , Christopher D. Manning 】 Effective Approaches to Attention-based Neural Machine Translation 【 S´ebastien Jean , Kyunghyun Cho , Roland Memisevic , Yoshua Bengio 】 On Using Very Large Target Vocabulary for Neural Machine Translation 【 Caglar Gulcehre , Sungjin Ahn , Ramesh Nallapati , Bowen Zhou , Yoshua Bengio 】 Pointing the Unknown Words 阅读 更 多 收藏 分享 [ anonymous-User-img.png ] ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 发表 评论 添加 代码片 * HTML/XML * objective-c * Ruby * PHP * C * C++ * JavaScript * Python * Java * CSS * SQL * 其它 还 能 输入 1000 个 字符 发表 评论 ( BUTTON ) 三 分钟 看懂 神经 网络 机器 翻译 11-07 243 神经 网络 机器 翻译 ( NMT ) 已 成为 本地化 行业 中 最 热门 的 话题 之一 , 与 以往 基于 统计 的 机器 翻译 ( SMT ) 相比 , 可以 使 翻译 质量 提升 30% , 同时 解决 了 远距离 语言 对的 复杂性 问题 , 如 中文 到 英语 、 日语 到 英语 . . . 来自 : SDL_China 的 博客 神经 机器 翻译 ( Neural machine translation , NMT ) 学习 笔记 11-22 72 神经 机器 翻译 ( Neural machine translation , NMT ) 是 最近 提出 的 机器 翻译 方法 。 与 传统 的 统计 机器 翻译 不同 , NMT 的 目标 是 建立 一 个 单一 的 神经 网络 , 可以 共同 调整 以 最大化 翻译 性能 。 最 . . . 来自 : wxw 060709 的 专栏 神经 机器 翻译 ( Neural Machine Translation ) 系列 教程 - ( 七 ) 机器 翻译 - 缩写 - 大 攻略 09-24 411 1 术语 缩写 : NLP : Natural Language Processing MT : Machine Translation RBMT : Rule-Based Machine Translatio... 来自 : 智创亿方 NMT : 神经 网络 机器 翻译 08-05 829 前言 SMT 是 在 神经 网络 之前 最 主流 的 翻译 模式 , 统计 机器 翻译 。 NMT 则是 基于 神经 网络 的 翻译 模式 , 也 是 当前 效果 最 好 的 翻译 模式 。 现在 基于 几 篇 paper 来讲 解下 各 个 神经 网络 下 的 翻译 模型 。 NMT... 来自 : yujianmin 1990 的 专栏 神经 机器 翻译 中 的 Attention 机制 10-17 1559 传统 的 机器 翻译 系统 通常 依赖 于 基于 文本 统计 特性 的 复杂 特征 工程 , 需要 投入 大量 工程 大 见 他们 。 神经 机器 翻译 系统 NMT , 把 一 句 话 的 意思 映射 到 一 个 固定 长度 的 特征 向量 , 然后 基于 此 进行 翻译 。 由于 NMT 不再 依赖于 n... 来自 : 一直 在 路上 市面 上 的 神经 机器 翻译 ( NMT ) 概况 06-10 346 ( 未完 ) NMT 是以 神经 网络 作为 基础 的 机器 翻译 , 开始 在 全面 超越 此前 以 统计 模型 为 基础 的 统计 机器 翻译 ( SMT ) , 并 快速 成为 在线 翻译 系统 的 主流 标配 。 目 前 , 广泛 应用于 机器 翻译 的 是 长 短时 记忆 ( LSTM , Long ... 来自 : kudou 1994 的 博客 神经 机器 翻译 ( Neural Machine Translation ) 系列 教程 - ( 一 ) 神经 机器 翻译 - 开源 项目 07-10 3804 项目 名称 地址 备注 EUREKA-MangoNMT https : //github.com/jiajunzhangnlp/EUREKA-MangoNMT 中科院 - 张家俊 . . . 来自 : 智创亿方 无 监督 神经 机器 翻译 ( UNSUPERVISED NEURAL MACHINE TRANSLATION ) 学习 笔记 12-06 782 无 监督 神经 机器 翻译 学习 笔记 几 个 月 前 MikelArtetxe 和 KyunghyunCho 等 人 提出 了 一 种 极 具 潜力 的 无监督 神经 机器 翻译 ( UNSUPER VISED NEURAL MACHINE TRANSLAT... 来自 : qq_38768581 的 博客 神经 网络 机器 翻译 Neural Machine Translation ( 1 ) : Encoder-Decoder Architecture 04-03 2.3万 端到端 的 神经 网络 机器 翻译 ( End-to-End Neural Machine Translation ) 是 近 几 年 兴起 的 一 种 全新 的 机器 翻译 方法 。 本文 首先 将 简要 介绍 传统 的 统计 机器 翻译 方法 以及 神经 网络 在 机器 翻 . . . 来自 : Clear . 的 博客 文章 热 词 神经 网络 机器 翻译 数据 加载 机器 翻译 网络 架构 机器 翻译 数据 加载 机器 翻译 模型 训练 相关 热词 c + + 神经 网络 bootstrap 总结 bp 神经 网络 算法 c + + c # 神经 网络 库 lstm 神经 网络 c + + 实现 神经 网络 python 教程 人工 智能 之 神经 网络 特训班 神经 机器 翻译 ( NMT ) 开源 工具 10-27 6881 工具 名称 : dl4mt 地址 : https : //github.com/nyu-dl/dl4mt-tutorial/tree/master/session2 简介 : Attention-based enc... 来自 : 自然 语言 处理 大菜鸟 - - HsingWang 搜狗 机器 翻译 技术 分享 和 WMT-CWMT 2017 比赛 系统 10-30 - 机器 翻译 07-17 209 总 时间 限制 : 1000 ms 内存 限制 : 262144kB 描述 VariantF 的 电脑 上 安装 了 一 个 机器 翻译 软件 , 他 经常 用 这个 软件 来 翻译 英语 文章 。 这个 翻译 软件 的 原理 很 简单 , 它 只是 从头到尾 , 依次 将 每个 英文 单 . . . 来自 : 算法 菜鸟 下载 机器 翻译 .doc 06-10 noip 2010 第一 题 上 课时 的 讲义 , 我 用 三 疑 三 探 的 方式 上 的 奥赛 辅导 课 神经 网络 05-21 在 机器 学习 领域 , “ 没有 免费 的 午餐 ” 是 一 个 不 变 的 定理 。 简而言之 , 没有 一 种 算法 是 完美 的 , 可以 作为 任何 问题 的 佳 解决 方案 。 认清 这 一 点 , 对于 解决 监督 学习 问题 ( 如 预测 建模 问题 ) 尤其 重要 。 深度 学习 项目 实战 - Seq2 Seq 序列 生 模型 07-21 - 机器 翻译 模型 Transformer 代码 详细 解析 10-24 224 看到 这个 博客 代码 讲 的 真的 是 通俗 易懂 , 原理 也 比较 简单 了 , 花 时间 去 看 的话 , 原文 地址 : http : //lib.csdn.net/article/aif ramework/68187 谷歌 一 个 月 前 发 了 一 篇 论文 A... 来自 : luoyexuge 的 专栏 翻译们 又 要 失业 ? Facebook 最新 无 监督 机器 翻译 成果 , BLEU 提升 10 个 点 ! 09-04 308 ... 来自 : AI 科技 大本营 Neural Machine Translation ( NMT ) 技术 概述 02-11 2773 在 神经 网络 语言 模型 处理 NLP 领域 , 我 做 的 研究 一直 都 和 文本 分类 相关 , 其实 还 有 很多 其他 的 应用 领域 , 比方说 : 语言 翻译 、 词性 标注 、 命名 实体 识别 等 。 感觉 还是 有 必要 了解 一下 如何 用 神经 网络 语言 模型 对 这些 应用 进行 建模 . .. 来自 : guoyuhaoaaa 的 博客 神经 网络 机器 翻译 模型 介绍 - 总结 10-26 198 来自 : mudongcd 0419 的 博客 Neural Machine Translation 论文 阅读 笔记 06-23 4550 Massive Exploration of Neural Machine Translation Architectures , Google Brain 2017 该 文章 主要 做 了 大量 的 实验 , 可 做为 ove... 来自 : AprilNing 的 博客 AI 人工 智能 专业 词汇 集 08-01 6116 作为 最 早 关注 人工 智能 技术 的 媒体 , 机器 之 心 在 编译 国外 技术 博客 、 论文 、 专家 观点 等 内容 上 已经 积累 了 超过 两 年 多 的 经验 。 期间 , 从无到有 , 机器 之 心 的 编译 团 队 一直 在 积累 专业 词汇 。 虽然 有 很多 的 文章 因为 专业性 我们 没 能 尽 . . . 来自 : xmt 1139057136 的 专栏 机器 学习 专业 英语 单词 12-12 1557 常 用 英语 词汇 - andrew Ng 课程 [ 1 ] intensity 强度 [ 2 ] Regression 回归 [ 3 ] Loss function 损失 函数 [ 4 ] non-conv... 来自 : linker 的 专栏 小 白 必 看 - 机器 学习 常见 词汇 英文 简称 09-27 529 人名 Geoffrey Hinton : 「 深度 学习 之 父 」 「 神经 网络 先驱 」 人工 智能 三 大 马车 : 杰弗里·辛顿 ( Geoffrey Hinton ) 、 延恩·勒昆 ( Yann LeCun ) 和 约书亚·本吉奥 . . . 来自 : idhealth 的 博客 神经 网络 常见 名词 小结 12-09 2903 若 发现 有 违反 侵权 地方 , 请 通知 我 删除 ! 谢谢 Preprocess_data ( 数据 预处理 ) 数据 预处理 具有 很 重要 的 意义 , 由于 直接 得到 的 数据 具有 很大 差异性 , 数据 的 归一 化 有利于 算法 达到 最优 的 效果 。 ... 来自 : 神经 网络 常见 结构 小结 Sampled Softmax 论文 笔记 : On Using Very Large Target Vocabulary for Neural Machine Translation 04-02 4889 前言 记录 下 Sampled Softmax 的 一些 原理 , 相当于 论文 《 On Using Very Large Target Vocabulary for Neural Machine Translat... 来自 : MebiuW 的 专栏 资源 | 28 本 必读 的 经典 机器 学习 / 数据 挖掘 书籍 02-15 3284 资源 | 28 本 必读 的 经典 机器 学习 / 数据 挖掘 书籍 全部 pdf 免费 下载 链接 : http : //www.aibbt.com/a/13787.htmlReal World Machine Learning ( 现实 世界 中 . . . 来自 : HowardWood 的 博客 深度 卷积 神经 网络 在 目标 检测 中的 进展 08-20 2.9万 近些 年 来 , 深度 卷积 神经 网络 ( DCNN ) 在 图像 分类 和 识别 上 取得 了 很 显著 的 提高 。 回顾 从 2014 到 2016 这 两 年 多 的 时间 , 先后 涌现 出 了 R-CNN , F ast R-CNN , Faster R-CNN , ION , ... 三 张 图 读懂 机器 学习 : 基本 概念 、 五 大 流派 与 九 种 常见 算法 12-11 521 本 文 经 机器 之 心 ( 微信 公众 号 : almosthuman 2014 ) 授权 转载 选自 PwC 作者 : Alan Morrison 、 Anand Rao 机器 之 心 编译 参与 : 吴 攀 、 晏奇 机器 学习 正在 进步 , 我 . . . 来自 : Don't worry , be happy 机器 学习 ( 周志华 ) 参考 答案 第五 章 神经 网络 05-18 1.4万 机器 学习 ( 周志华 ) 参考 答案 第五 章 神经 网络 机器 学习 ( 周志华 西瓜 书 ) 参考 答案 总目录 http : //blog.csdn.net/icefire_tyh/article/details/520649... 来自 : 我 的 博客 从 感知机 到 深度 神经 网络 , 带 你 入 坑 深度 学习 01-16 3888 机器 学习 工程师 Adi Chris 最近 学习 完 吴恩达 在 Coursera 上 的 最新 课程 后 , 决定 写 篇 博客 来 记录 下 自己 对 这 一 领域 的 理解 。 他 建议 通过 这 种 方式 可以 有效 地 深入 理解 一 个 学习 主题 。 除此之外 , 也 希望 这 . . . 来自 : 机器 之心 多 目标 优化 _ 学习 笔记 ( 三 ) MOEA / D 03-26 4822 前言 本 篇 博客 出于 学习 交流 目的 , 主要 是 用来 记录 自己 学习 多 目标 优化 中 遇到 的 问题 和 心路 历程 , 方便 之后 回顾 。 过程 中 可能 引用 其他 大 牛 的 博客 , 文 末 会 给出 相应链 接 , 侵删 ! REMARK : 本人 纯 小 . . . 来自 : Erpim 的 博客 Deep Learning | Andrew Ng ( 05-week1 ) — 循环 序列 模型 02-27 593 【 第 5 部分 - 序列 模型 - 第一 周 】 在 吴恩达 深度 学习 视频 基础 上 , 笔记 总结 , 添加 个人 理解 。 后期 复习 阶段 参考 大树 先生 的 博客 链接 看 这里 大 树 先生 - ZJ Coursera 课程 | deeplea... 来自 : Self Improvement Lab 噪音 对比 估计 ( NCE ) 02-04 3722 噪音 对比 估计 ( NCE , Noise Contrastive Estimation ) 是 一 种 新 的 统计 模型 估计 方法 , 由 Gutmann 和 Hyv¨arinen 提 出来 , 能够 用来 解决 神经 网络 的 复杂 计算 问题 , 因此 在 图 . . . 来自 : littlely_ll 的 博客 【 目标 跟踪 】 Long-term Correlation Tracking 阅读 笔记 03-07 1356 Long-term Correlation Tracking 论文 地址 : https : //www.cv-foundation.org/openaccess/content_cvpr_2015/p... 来自 : 工 药叉 的 经文 Transformer 新型 神经 网络 在 机器 翻译 中 的 应用 07-06 随着 深度 学习 技术 的 发展 , 基于 神经 网络 的 机器 翻译 系统 已 成为 业界 的 主流 系统 。 本 课程 将 详细 讲解 Transformer 新型 神经 网络 及其 在 机器 翻译 中 的 应 用 , 并 从 工业 实践 和 评测 竞赛 的 角度 更 全面 的 展现 其 实用 价值 。 笔记 ( 总结 ) - 神经 语言 模型 和 词 向量 07-09 363 之前 笔记 ( 总结 ) - 统计 语言 模型 主要 介绍 了 统计 语言 模型 。 可以 看到 , 最终 对 句子 的 建模 为 ( 以 二元 文法 为 例 ) : P ( S ) = p ( w1 ) p ( w2|w1 ) ...p ( wn | wn−1 ) P ( S ) = p ( w1 ) p ( w2|w... 来自 : ZSY 的 大 后台 EMNLP 2018 最 佳 论文 : Facebook 提升 11 BLEU 的 无 监督 机器 翻译 09-21 122 https : //mp.weixin . qq.com/s?__biz = MzI5NTIxNTg0OA = = & amp ; amp ; mid=224749257 9& ; amp ; idx = 1&amp ; sn=08... 来自 : kawhi 849 无需 双语 语料库 的 无 监督 式 机器 翻译 01-14 1046 去年 , Facebook 发表 论文 《 Unsupervised Machine Translation Using Monolingual Corpora Only 》 , 提出 使用 单语 语料库 的 无 监督 式 机器 翻译 . . . 来自 : 机器 之心 下载 机器 翻译 : 从 统计 到 神经 网络 08-28 机器 翻译 : 从 统计 到 神经 网络 陈博 兴 加拿大 国家 研究 委员会 ( NRC ) 提纲 • 机器 翻译 的 概 机器 翻译 的 概 机器 翻译 的 概 念 • NRC 的 机器 翻 译 • 统计 机器 翻译 ( SMT ) • 神经 网络 机器 翻译 ( NMT... 神经 机器 翻译 的 前世 今生 -- 转自 散文 网 04-15 2742 本 文 转自 散文 网 , 原文 链接 如下 : http : //sanwen.net/a/mjyslpo.html 神经 机器 翻译 2016-11-13 03:17 雅译 公司 推荐 100 次 . . . 来自 : LucyGill 的 博客 深度 学习 中 的 注意力 机制 11-02 3.7万 作者 | 张俊林 责编 | 何永灿 最近 两 年 , 注意力 模型 ( Attention Model ) 被 广泛 使用 在 自然 语言 处理 、 图像 识别 及 语音 识别 等 各 种 不同 类型 的 深度 学习 任务 中 , 是 深度 . .. 来自 : CSDN 大 数据 神经 机器 翻译 ( NMT ) 详细 资料 整理 08-31 350 1 简介 自 2013年 提出 了 神经 机器 翻译 系统 之后 , 神经 机器 翻译 系统 取得 了 很 大 的 进展 。 最近 几 年 相关 的 论文 , 开源 系统 也 是 层出不穷 。 本文 主要 梳理 了 神经 机器 翻译 入门 、 进阶 所 需要 阅读 的 资料 和 论文 , 并 . . . 来自 : 木东 的 博客 神经 机器 翻译 ( NMT ) 资料 10-27 4548 资料 : https : //arxiv.org/abs/1409.0473 说明 : 基于 注意力 机制 的 神经 机器 翻译 ( Attention-based NMT ) 的 论文 , 首 次 将 注意力 机制 引入 神经 机器 翻译 。 资料 . . . 来自 : 自然 语言 处理 大菜鸟 - - HsingWang 神经 机器 翻译 ( Neural Machine Translation ) 系列 教程 - ( 九 ) 自己 动手 - 搭建 - 神经 机器 翻译 -- nematus 神经 机器 翻译 11-01 934 一 、 简介 nematus 是 英国 爱丁堡 大学 自然 语言 处理 小组 基于 theano 开发 的 一 套 开源 的 神经 机器 翻译 系统 , 无论 在 学术界 还是 产业界 都 有 一定 影响力 。 实验室 网址 : http : //edinburghnlp . i... 来自 : 智创亿方 机器 翻译 中 的 深度 学习 技术 : CNN , Seq2 Seq , SGAN , Dual Learning 04-20 7641 机器 翻译 是 深度 学习 技术 与 NLP 结合 使用 最 活跃 的 , 最 充满 希望 的 一 个 方向 。 从 最初 完全 基于 靠人 编纂 的 规则 的 机器 翻译 方法 , 到 后来 基于 统计 的 SMT 方法 , 再到 现在 神经 机器 翻译 NMT , 机器 翻译 技术 在 过去 60 多 年 的 时 . . . 来自 : lqfarmer 的 博客 Transformer 新型 神经 网络 在 机器 翻译 中 的 应用 | 公开 课 笔记 10-07 351 ... 来自 : AI 科技 大本营 神经 网络 总结 ( 初稿 ) 07-05 4720 神经 网络 是 由 大量 处理 单元 ( 神经元 ) 相互 连接 而 成 的 网络 , ANN ( Artificial Neural Network ) 是 生物 神经 系统 的 一 种 抽象 、 简化 和 模拟 。 神经 网络 的 信息 处理 是 通过 神经元 的 相互 作用 来 实现 的 . . . 来自 : ZhangPY 的 专栏 CNN 神经 网络 的 个人 总结 06-22 171 CNN 神经 网络 的 总结 : [ 英文 链接 ] ( https : //medium.com/@RaghavPrabhu/understanding-of-con volutional-neural-network-cnn... 来自 : 小 码仔 BP 神经 网络 - 总结 02-11 3873 本 文 讲解 BP 网络 学习 算法 的 实质 、 最速 下降 算法 、 BP 算法 , 并 总结 了 BP 神经 网络 在 实用 中的 设计 经验 。 ... 来自 : StevenSun 的 博客 空间 神经 网络 机器 翻译 模型 介绍 - GNMT 10-26 241 来自 : mudongcd 0419 的 博客 Eclipse 中 离线 安装 ADT 插件 详细 教程 07-18 49489 在 搭建 Android 开发 环境 的 时候 , 我们 需要 为 Eclipse 安装 ADT ( Android Development Tools ) 插件 , 这个 插件 可以 为 用户 提供 一 个 强大 的 Android 集成 开发 环境 。 通过 给 Ec... 来自 : Dr.Neo 的 专栏 将 Excel 文件 导入 数据库 ( POI+Excel+MySQL+jsp 页面 导入 ) 第一 次 优化 09-05 5322 本 篇 文章 是 根据 我 的 上篇 博客 , 给出 的 改进 版 , 由于 时间 有限 , 仅 做 了 一 个 简单 的 优化 。 相关 文章 : 将 excel 导入 数据库 2018年 4月 1日 , 新增 下载 地址 链接 : 点击 打开 源码 下载 地址 十分 抱歉 , 这个 链接 地址 没有 在 这篇 ... 来自 : Lynn_Blog jquery/js 实现 一 个 网页 同时 调用 多个 倒 计时 ( 最新 的 ) 11-25 5021 jquery/js 实现 一 个 网页 同时 调用 多个 倒 计时 ( 最新 的 ) 最近 需要 网页 添加 多个 倒计时 . 查阅 网络 , 基本上 都 是 千 遍 一律 的 不好用 . 自己 按 需 写 了 个 . 希望 对 大家 有用 . 有用 请 赞 一 个 哦 ! ... 来自 : websites 前后 端 分离 之 Springboot 后端 12-12 9834 这 是 上 一 篇 博客 前后 端 分离 之 Java 后端 的 重写 . 源码 前后 端 分离 的 后端 主要 解决 的 就 2 个 问题 : 跨域 访问 ( CORS ) 和 token 校验 , 下面 快速 说明 . 1 . 项目 环境 使用 Intellij IDE . 项 . . . 来自 : jimo_lonely 的 博客 人脸 检测 工具 face_recognition 的 安装 与 应用 08-11 7820 人脸 检测 工具 face_recognition 的 安装 与 应用 来自 : roguesir 的 博客 linux 上 安装 Docker ( 非常 简单 的 安装 方法 ) 06-29 78671 最近 比较 有空 , 大四 出来 实习 几 个 月 了 , 作为 实习 狗 的 我 , 被 叫 去 研究 Docker 了 , 汗汗 ! Docker 的 三 大 核心 概念 : 镜像 、 容器 、 仓库 镜像 : 类似 虚拟机 的 镜像 、 用 俗话 说 就是 安装 文件 。 容器 : 类似 一 个 轻量 . . . 来自 : 我 走 小 路 的 博客 Docker 下 实战 zabbix 三 部 曲 之一 : 极 速 体验 08-10 14019 用 docker 来 缩减 搭建 时间 , 让 读者们 尽快 投入 zabbix 系统 的 体验 和 实践 来自 : boling_cavalry 的 博客 Java 面试 题 全集 ( 上 ) 04-08 912537 2013年 年底 的 时候 , 我 看到 了 网上 流传 的 一 个 叫做 《 Java 面试 题 大全 》 的 东西 , 认真 的 阅读 了 以后 发现 里面 的 很多 题目 是 重复 且 没有 价值 的 题目 , 还有 不 少的 参考 答案 也 是 错误 的 , 于是 我 花了 半 个 月 时间 对 这个 所谓 的 《 ... 来自 : 骆昊 的 技术 专栏 关于 计算 时间 复杂度 和 空间 复杂度 09-04 33644 相信 学习 编程 的 同学 , 或多或少 都 接触 到 算法 的 时间 复杂度 和 空间 复杂度 了 , 那 我 来讲讲 怎么 计算 。 常用 的 算法 的 时间 复杂度 和 空间 复杂度 一 , 求解 算法 的 时间 复杂度 , 其 具体 步骤 是 : ⑴ 找出 算法 . . . 来自 : 杨威 的 博客 关于 SpringBoot bean 无法 注入 的 问题 ( 与 文件 包 位置 有关 ) 12-16 27791 问题 场景 描述 整个 项目 通过 Maven 构建 , 大致 结构 如下 : 核心 Spring 框架 一 个 module spring-boot-base service 和 dao 一 个 module server-core 提供 系统 . . . 来自 : 开发 随笔 ZooKeeper 系列 之二 : Zookeeper 常用 命令 10-25 284072 ZooKeeper 服务 命令 : 在 准备 好 相应 的 配置 之后 , 可以 直接 通过 zkServer.sh 这个 脚本 进行 服务 的 相关 操作 1 . 启动 ZK 服务 : sh bin/zkServer... 来自 : xiaolang85 的 专栏 12 种 排序 算法 详解 03-03 26626 作者 : 寒小阳 时间 : 2013年 9月 。 出处 : http : //blog.csdn.net/han_xiaoyang/article/details/12163251 。 声明 : 版权 所有 , 转载 请 . . . 来自 : u014682691 的 专栏 Java 设计 模式 学习 08 —— 组合 模式 11-02 696 一 、 组合 模式 适用 场景 把 部分 和 整体 的 关系 用 树形 结构 来 表示 , 从而 使 客户端 可以 使用 统一 的 方式 对 部分 对象 和 整体 对象 进行 管理 。 二 、 组合 模式 结构 抽象 构件 ( Conponent ) 角色 : 所有 类 的 共 有 接口 , 定义 了 叶子 和 ... 来自 : 小小 本科生 成长 之 路 [ feedLoading.gif ] 没有 更 多 推荐 了 , 返回 首页 [ 3_littlely_ll.jpg ] littlely_ll 关注 原创 107 粉丝 134 喜欢 58 评论 56 等级 : 访问 : 30万 + 积分 : 3774 排名 : 1 万 + 勋章 : 专栏 达 人 授予 成功 创建 个人 博客 专栏 的 用户 。 专栏 中 添加 五 篇 以上 博文 即 可 点亮 ! 撰写 博客 专栏 浓缩 技术 精华 , 专栏 达 人 就是 你 ! 持之以恒 授予 每个 自然 月内 发布 4 篇 或 4 篇 以上 原创 或 翻译 IT 博文 的 用户 。 不积跬 步 无 以至 千 里 , 不 积 小 流 无以 成 江海 , 程序 人生 的 精彩 需要 坚持 不懈 地 积累 ! 最新 文章 * Cython 基础 * pandas DataFrame 的 使用 * 使用 sqlalchemy ORM 创建 表及 数据 的 插入 * MySQL 表 分区 * spyder 快捷键 博主 专栏 * 特征 提取 与 选择 文章 数 : 7 篇 访问量 : 41726 * 自然 语言 处理 文章 数 : 7 篇 访问量 : 12513 * R语言 caret 包 应用 文章 数 : 9 篇 访问量 : 13647 个人 分类 * R语言 基础 10 篇 * 机器 学习 42 篇 * 自然 语言 处理 10 篇 * 深度 学习 7 篇 * 特征 提取 与 选择 7 篇 * 插值 法 3 篇 * 网络 数据 抓取 5 篇 * python 20 篇 * 金融 计量 9 篇 * R 数据 预处理 3 篇 * 并行 运算 1 篇 * R语言 caret 包 翻译 9 篇 * R&Hive 2 篇 * 模拟 及 优化 算法 5 篇 * mysql 5 篇 * hadoop 数据 分析 2 篇 * pyspark 7 篇 * matplotlib 3 篇 * java 2 篇 * C/C++ 1 篇 * 图像 处理 1 篇 * 推荐 系统 1 篇 * git 1 篇 * MongoDB 1 篇 * 数据 结构 与 算法 1 篇 * sqlalchemy 1 篇 * Cython 基础 1 篇 展开 归档 * 2018年 12月 1 篇 * 2018年 10月 1 篇 * 2018年 9月 2 篇 * 2018年 8月 3 篇 * 2018年 7月 1 篇 * 2018年 5月 1 篇 * 2018年 4月 3 篇 * 2018年 3月 2 篇 * 2018年 2月 4 篇 * 2018年 1月 6 篇 * 2017年 12月 1 篇 * 2017年 11月 1 篇 * 2017年 10月 4 篇 * 2017年 9月 3 篇 * 2017年 8月 3 篇 * 2017年 7月 3 篇 * 2017年 6月 4 篇 * 2017年 5月 17 篇 * 2017年 4月 9 篇 * 2017年 3月 6 篇 * 2017年 2月 25 篇 * 2017年 1月 6 篇 * 2016年 12月 12 篇 展开 热门 文章 * 单位根 检验 、 协整 检验 和 格兰杰 因果 检验 三 者 之间 的 关系 阅读量 : 21354 * 三 次 Hermite 插值 阅读量 : 13985 * 离群 点 检验 方法 阅读量 : 13540 * 特征 选择 之 支持 向量机 递归 特征 消除 ( SVM-RFE ) 阅读量 : 13071 * GARCH 模型 案例 分析 阅读量 : 11674 最新 评论 * 三 次 Hermite 插值 anshaoxu0530 : 阿尔法 0 的 表达式 好像 少 了 一 个 平方 ? * 特征 选择 之 支持 向量机 递归 特征 消除 ( ... bjt 2091655702 : 请问 博主 在 哪里 找 这个 方法 的 代码 , 论文 里 相 比较 一下 * 特征 选择 之 支持 向量机 递归 特征 消除 ( ... qq_43128935 : 做完 之后 只有 变量 的 重要性 排序 , 怎样 确定 最终 变量 个数 呢 , 谢谢 * K-Prototypes 聚类 的 Py... weixin_43869328 : 楼主 求助 ~ ~ 硕毕 论文 需要 用到 这个 方法 , 但 本科 文科 , 完全 看 不同 代码 。 求 问 代码 中 都 是 什么 意思 呀 ? 要是 没 . . . * 特征 选择 之 基于 相关性 的 特征 选择 ( C... qq_29226865 : 感谢 楼 主 的 这 篇 笔记 , 当时 看 论文 原文 没 看懂 , 现在 豁然 开朗 , 十分 感谢 ! ! ! 关注 的 博客 IT 全栈 华强 工作室 松阳 v_JULY_v peghoty zouxy 09 的 专栏 zhiyong_will - 柚子 皮 - 白马 负金羁 私密 私密 原因 : 请 选择 设置 私密 原因 * 广告 * 抄袭 * 版权 * 政治 * 色情 * 无意义 * 其他 其他 原因 : _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________ 120 取消 确定 出错 啦 系统 繁忙 , 请 稍后 再试 取消 确定 2019 人工 智能 薪资 趋势 Python 实战 技巧 数据库 沙龙 2018 年 度 课程 榜单 登录 注册 ( BUTTON ) * ( BUTTON ) 点 赞 取消 点 赞 0 * 评论 * ( BUTTON ) 目录 ( BUTTON ) ( BUTTON ) * ( BUTTON ) 收藏 * ( BUTTON ) 手机 看 * 上 一 篇 * 下 一 篇 * * 更多 + 上 一 篇 + 下 一 篇 猿学习 * [ 201812181221437658.png ] * [ 20190108 1453403307.jpg ] * [ 20181109 1258589141.png ] 人工 智能 工程师 * [ 201811231432284520.jpg ]