2020-11-17 吴恩达DL学习-C5 序列模型-W3 序列模型和注意力机制(3.2 选择最可能的句子-条件语言模型,选择最可能结果。采用近似搜索,而不是贪心搜索)

274 篇文章 24 订阅
233 篇文章 0 订阅

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

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

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

你可以把机器翻译想成是建立一个条件语言模型(Language model),在语言模型中上方是一个我们在第一周所建立的模型,这个模型可以让你能够估计句子的可能性 P ( y < 1 > , . . . , y < T y > ) P(y^{<1>},...,y^{<T_y>}) P(y<1>,...,y<Ty>),这就是语言模型所做的事情。你也可以将它用于生成一个新的句子,如果你在图上的该处,有 x < 1 > x^{<1>} x<1> x < 2 > x^{<2>} x<2>,那么在该例中 x < 2 > = y ^ < 1 > x^{<2>}=\hat 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>等都等于之前所生成的输出,这就是所说的语言模型。
在这里插入图片描述

而机器翻译模型(Machine translation)是下面这样的,我这里用两种不同的颜色来表示,即绿色和紫色,

  • 用绿色表示encoder网络,
  • 用紫色表示decoder网络。

你会发现decoder网络看起来和刚才所画的语言模型几乎一模一样,机器翻译模型其实和语言模型非常相似,不同在于语言模型总是以零向量( a < 0 > a^{<0>} a<0>)开始,而encoder网络会计算出一系列向量来表示输入的句子(encoder网络输出)。有了这个输入句子,decoder网络就可以以这个句子开始,而不是以零向量开始,所以我把它叫做条件语言模型(conditional language model)。

对比一下

  • 语言模型:输出任意句子的概率 P ( y < 1 > , . . . , y < T y > ) P(y^{<1>},...,y^{<T_y>}) P(y<1>,...,y<Ty>)
  • 翻译模型:输出句子的英文翻译,这取决于输入的法语句子 P ( y < 1 > , . . . , y < T y > ∣ x < 1 > , . . . , x < T x > ) P(y^{<1>},...,y^{<T_y>}|x^{<1>},...,x^{<T_x>}) P(y<1>,...,y<Ty>x<1>,...,x<Tx>),其中
    • P ( y < 1 > , . . . , y < T y > ) P(y^{<1>},...,y^{<T_y>}) P(y<1>,...,y<Ty>),英文翻译的概率
    • x < 1 > , . . . , x < T x > x^{<1>},...,x^{<T_x>} x<1>,...,x<Tx>,输入的法语句

换句话说,你将估计一个英文翻译的概率,比如估计这句英语翻译的概率,“Jane is visiting Africa in September.”,这句翻译是取决于法语句子,“Jane visite I’Afrique en septembre.”, 这就是英语句子相对于输入的法语句子的可能性,所以它是一个条件语言模型
在这里插入图片描述

现在,假如你想真正地通过模型将法语翻译成英文,通过输入的法语句子模型将会告诉你各种英文翻译所对应的可能性。 x x x在这里是法语句子"Jane visite l’Afrique en septembre.",而它将告诉你不同的英语翻译所对应的概率。

显然你不想让它随机地进行输出,如果你从这个分布中进行取样得到 P ( y ∣ x ) P(y|x) P(yx)

  • 可能取样一次就能得到很好的翻译,“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.”。

所以当你使用这个模型来进行机器翻译时,你并不是从得到的分布中进行随机取样 P ( y ∣ x ) P(y|x) P(yx),而是你要找到一个英语句子 y y y,使得条件概率最大化(arg max)。

所以在开发机器翻译系统时,你需要做的一件事就是想出一个算法,用来找出合适的 y y y值,使得该项最大化,而解决这种问题最通用的算法就是束搜索(Beam Search),你将会在下节课见到它。

不过在了解束搜索之前,你可能会问一个问题,为什么不用贪心搜索(Greedy Search)呢?
在这里插入图片描述

贪心搜索是一种来自计算机科学的算法,生成第一个词的分布以后,它将会根据你的条件语言模型挑选出最有可能的第一个词进入你的机器翻译模型中,在挑选出第一个词之后它将会继续挑选出最有可能的第二个词,然后继续挑选第三个最有可能的词,这种算法就叫做贪心搜索

但是你真正需要的是一次性挑选出整个单词序列,从 y ^ < 1 > \hat y^{<1>} y^<1> y ^ < 2 > \hat y^{<2>} y^<2> y ^ < 3 > \hat y^{<3>} y^<3>来使得整体的概率最大化。所以这种贪心算法先挑出最好的第一个词 y ^ < 1 > \hat y^{<1>} y^<1>,在这之后再挑最好的第二词 y ^ < 3 > \hat y^{<3>} y^<3>,然后再挑第三个 y ^ < 3 > \hat y^{<3>} y^<3>,这种方法其实并不管用,为了证明这个观点,我们来考虑下面两种翻译。
在这里插入图片描述

第一串(上图上面句子)翻译明显比第二个(上图下面句子)好,所以我们希望机器翻译模型会说第一个句子的 P ( y ∣ x ) P(y|x) P(yx)比第二个句子要高,第一个句子对于法语原文来说更好更简洁,虽然第二个也不错,但是有些啰嗦,里面有很多不重要的词。

但如果贪心算法挑选出了"Jane is"作为前两个词,因为在英语中going更加常见,于是对于法语句子来说"Jane is going"相比"Jane is visiting"会有更高的概率作为法语的翻译,所以很有可能如果你仅仅根据前两个词 y ^ < 1 > \hat y^{<1>} y^<1> y ^ < 2 > \hat y^{<2>} y^<2>来估计第三个词 y ^ < 3 > \hat y^{<3>} y^<3>的可能性,得到的就是going,最终你会得到一个欠佳的句子,在模型 P ( y ∣ x ) P(y|x) P(yx)中这不是一个最好的选择。

我知道这种说法可能比较粗略,但是它确实是一种广泛的现象,当你想得到单词序列 y < 1 > y^{<1>} y<1> y < 2 > y^{<2>} y<2>一直到最后一个词总体的概率时,一次仅仅挑选一个词并不是最佳的选择。

当然,在英语中各种词汇的组合数量还有很多很多,如果你的字典中有10,000个单词,并且你的翻译可能有10个词那么长,那么可能的组合就有10,000的10次方这么多,这仅仅是10个单词的句子,从这样大一个字典中来挑选单词,所以可能的句子数量非常巨大,不可能去计算每一种组合的可能性。所以这时最常用的办法就是用一个近似的搜索算法,这个近似的搜索算法做的就是它会尽力地,尽管不一定总会成功,但它将挑选出句子 y y y使得条件概率最大化,尽管它不能保证找到的 y y y值一定可以使概率最大化,但这已经足够了。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值