选择最可能的句子 (Picking the most likely sentence)

seq2seq机器翻译模型和我们在第一周课程所用的语言模型之间有很多相似的地方,但是它们之间也有许多重要的区别,让我们来一探究竟。

你可以把机器翻译想成是建立一个条件语言模型,在语言模型中上方是一个我们在第一周所建立的模型,这个模型可以让你能够估计句子的可能性,这就是语言模型所做的事情。你也可以将它用于生成一个新的句子,如果你在图上的该处(下图编号1所示),有 x<1>x^{<1>}x<1> 和 x<2>x^{<2>}x<2> ,那么在该例中 x<2>=y<1>x^{<2>}=y^{<1>}x<2>=y<1> ,但是 x<1>x^{<1>}x<1> 、 x<2>x^{<2>}x<2> 等在这里并不重要。为了让图片看起来更简洁,我把它们先抹去,可以理解为 x<1>x^{<1>}x<1> 是一个全为0的向量,然后 x<2>x^{<2>}x<2> 、 x<3>x^{<3>}x<3> 等都等于之前所生成的输出,这就是所说的语言模型。


而机器翻译模型是下面这样的,我这里用两种不同的颜色来表示,即绿色和紫色,用绿色(上图编号2所示)表示encoder网络,用紫色(上图编号3所示)表示decoder网络。你会发现decoder网络看起来和刚才所画的语言模型几乎一模一样,机器翻译模型其实和语言模型非常相似,不同在于语言模型总是以零向量(上图编号4所示)开始,而encoder网络会计算出一系列向量(上图编号2所示)来表示输入的句子。有了这个输入句子,decoder网络就可以以这个句子开始,而不是以零向量开始,所以我把它叫做条件语言模型(conditional language model)。相比语言模型,输出任意句子的概率,翻译模型会输出句子的英文翻译(上图编号5所示),这取决于输入的法语句子(上图编号6所示)。换句话说,你将估计一个英文翻译的概率,比如估计这句英语翻译的概率,“Jane is visiting Africa in September.”,这句翻译是取决于法语句子,“Jane visite I’Afrique en septembre.”,这就是英语句子相对于输入的法语句子的可能性,所以它是一个条件语言模型。


现在,假如你想真正地通过模型将法语翻译成英文,通过输入的法语句子模型将会告诉你各种英文翻译所对应的可能性。 xxx 在这里是法语句子"Jane visite l’Afrique en septembre.",而它将告诉你不同的英语翻译所对应的概率。显然你不想让它随机地进行输出,如果你从这个分布中进行取样得到 P(y∣x)P(y|x)P(y∣x) ,可能取样一次就能得到很好的翻译,“Jane is visiting Africa in September.”。但是你可能也会得到一个截然不同的翻译,“Jane is going to be visiting Africa in September.”,这句话听起来有些笨拙,但它不是一个糟糕的翻译,只是不是最好的而已。有时你也会偶然地得到这样的翻译,“In September, Jane will visit Africa.”,或者有时候你还会得到一个很糟糕的翻译,“Her African friend welcomed Jane in September.”。所以当你使用这个模型来进行机器翻译时,你并不是从得到的分布中进行随机取样,而是你要找到一个英语句子 yyy (上图编号1所示),使得条件概率最大化。所以在开发机器翻译系统时,你需要做的一件事就是想出一个算法,用来找出合适的 yyy 值,使得该项最大化,而解决这种问题最通用的算法就是束搜索(Beam Search),你将会在下节课见到它。

不过在了解束搜索之前,你可能会问一个问题,为什么不用贪心搜索(Greedy Search)呢?贪心搜索是一种来自计算机科学的算法,生成第一个词的分布以后,它将会根据你的条件语言模型挑选出最有可能的第一个词进入你的机器翻译模型中,在挑选出第一个词之后它将会继续挑选出最有可能的第二个词,然后继续挑选第三个最有可能的词,这种算法就叫做贪心搜索,但是你真正需要的是一次性挑选出整个单词序列,从 y<1>y^{<1>}y<1> 、 y<2>y^{<2>}y<2> 到 y<Ty>y^{<T_y>}y<Ty​> 来使得整体的概率最大化。所以这种贪心算法先挑出最好的第一个词,在这之后再挑最好的第二词,然后再挑第三个,这种方法其实并不管用,为了证明这个观点,我们来考虑下面两种翻译。

第一串(上图编号1所示)翻译明显比第二个(上图编号2所示)好,所以我们希望机器翻译模型会说第一个句子的 P(y∣x)P(y|x)P(y∣x) 比第二个句子要高,第一个句子对于法语原文来说更好更简洁,虽然第二个也不错,但是有些啰嗦,里面有很多不重要的词。但如果贪心算法挑选出了"Jane is"作为前两个词,因为在英语中going更加常见,于是对于法语句子来说"Jane is going"相比"Jane is visiting"会有更高的概率作为法语的翻译,所以很有可能如果你仅仅根据前两个词来估计第三个词的可能性,得到的就是going,最终你会得到一个欠佳的句子,在 P(y∣x)P(y|x)P(y∣x) 模型中这不是一个最好的选择。

我知道这种说法可能比较粗略,但是它确实是一种广泛的现象,当你想得到单词序列 y<1>y^{<1>}y<1> 、 y<2>y^{<2>}y<2> 一直到最后一个词总体的概率时,一次仅仅挑选一个词并不是最佳的选择。当然,在英语中各种词汇的组合数量还有很多很多,如果你的字典中有10,000个单词,并且你的翻译可能有10个词那么长,那么可能的组合就有10,000的10次方这么多,这仅仅是10个单词的句子,从这样大一个字典中来挑选单词,所以可能的句子数量非常巨大,不可能去计算每一种组合的可能性。所以这时最常用的办法就是用一个近似的搜索算法,这个近似的搜索算法做的就是它会尽力地,尽管不一定总会成功,但它将挑选出句子 yyy 使得条件概率最大化,尽管它不能保证找到的 yyy 值一定可以使概率最大化,但这已经足够了。

最后总结一下,在本视频中,你看到了机器翻译是如何用来解决条件语言模型问题的,这个模型和之前的语言模型一个主要的区别就是,相比之前的模型随机地生成句子,在该模型中你要找到最有可能的英语句子,最可能的英语翻译,但是可能的句子组合数量过于巨大,无法一一列举,所以我们需要一种合适的搜索算法,让我们在下节课中学习集束搜索。

3.2 选择最可能的句子-深度学习第五课《序列模型》-Stanford吴恩达教授相关推荐

  1. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  2. 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

  3. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  4. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  5. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  6. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  7. 1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 理解 Dropout 回到目录 1.9 归一化输入 其他正则化方法 (Other Regularization Methods) 除了 L2L2L2 正则化和随机失活 ...

  8. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  9. 3.4 改进集束搜索-深度学习第五课《序列模型》-Stanford吴恩达教授

    改进集束搜索 (Refinements to Beam Search) 上个视频中, 你已经学到了基本的束搜索算法(the basic beam search algorithm),这个视频里,我们会 ...

最新文章

  1. SRWebSocket源码浅析(下)
  2. 【转载】#pragma once与#ifndef #define #endif的区别
  3. 关于IE某些原因导致下拉列表弹出阻止窗口的解决办法
  4. adminlte支持html5吗,spring boot:用adminlte做前端
  5. Spring boot 内部服务调用 (FeignClient)
  6. html文档中怎么区分节点对象节点类型,JavaScript文档对象模型-Element类型
  7. 2009年IT行业最重要的十大认证
  8. flume与log4j的整合
  9. 千脑——您的在线电脑
  10. miou 代码 VOC2012
  11. latex_列表和表格环境_给tabular加lable标签问题
  12. linux怎么下载ftp文件夹,命令行 - 如何在Linux上通过FTP递归下载文件夹
  13. Excel学习日记:L4-资料排序
  14. uniapp连接本地服务器请求超时
  15. 031-JVM-合并写(write combining)
  16. linux菜鸟入门之系统启动流程
  17. 应用程序“Parallels Desktop“无法打开MAC电脑打不开
  18. 模拟时针--微信小程序制作
  19. mysql里面的时间函数
  20. 2020华为软挑热身赛代码开源-思路大起底(华为软件精英挑战赛编程闯关)

热门文章

  1. Android下/data/data/package_name/files读写权限
  2. 去百度,还是去创新工厂
  3. 第四次游戏革命:全息游戏 from:http://www.cnblogs.com/alamiye010/archive/2012/08/15/2640881.html...
  4. 导航栏中加入自动弹出下拉菜单
  5. C++ STACK Queue
  6. ubuntu下wget下载Linux内核源码、make生成.config文件
  7. 首次使用three.js加载obj模型未成功
  8. Object.create()和Object.assign()
  9. C++primer 10.2.1节练习
  10. lintcode-49-字符大小写排序