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.5 定向搜索的误差分析 Error analysis on beam search
在这五门课中的第三门课里,你了解了误差分析是如何能够帮助你集中时间做你的项目中最有用的工作,束搜索算法是一种近似搜索算法(an approximate search algorithm),也被称作启发式搜索算法(a heuristic search algorithm),它不总是输出可能性最大的句子,它仅记录着B为前3或者10或是100种可能。那么如果束搜索算法出现错误会怎样呢?
本节课中,你将会学习到误差分析和束搜索算法是如何相互起作用的,以及你怎样才能发现是束搜索算法出现了问题,需要花时间解决,还是你的RNN模型出了问题,要花时间解决。
我们先来看看如何对束搜索算法进行误差分析。
我们来用这个例子说明: “Jane visite l’Afrique en septembre”。假如说,在你的机器翻译的dev集中,也就是开发集(development set),人工是这样翻译的: Jane visits Africa in September,我会将这个标记为y∗y^*y∗,这是一个十分不错的人工翻译结果。
不过假如说,当你在已经完成学习的RNN模型,也就是已完成学习的翻译模型中运行束搜索算法时,它输出了这个翻译结果:Jane visited Africa last September,我们将它标记为y^\hat yy^。这是一个十分糟糕的翻译,它实际上改变了句子的原意,因此这不是个好翻译。
你的模型有两个主要部分,
- 一个是NN模型,或说是序列到序列模型(sequence to sequence model),我们将这个称作是RNN模型,它实际上是个编码器和解码器( an encoder and a decoder)。
- 另一部分是束搜索算法,以某个集束宽度B运行。
如果你能够找出造成这个错误,这个不太好的翻译的原因,是两个部分中的哪一个,不是很好吗? RNN (循环神经网络)是更可能是出错的原因呢,还是束搜索算法更可能是出错的原因呢?
你在第三门课中了解到了大家很容易想到去收集更多的训练数据,这总归没什么坏处。所以同样的,大家也会觉得不行就增大束宽,也是不会错的,或者说是很大可能是没有危害的。但是就像单纯获取更多训练数据,可能并不能得到预期的表现结果。相同的,单纯增大束宽也可能得不到你想要的结果,不过你怎样才能知道是不是值得花时间去改进搜索算法呢?
下面我们来分解这个问题弄清楚什么情况下该用什么解决办法。

RNN (循环神经网络)实际上是个编码器和解码器(the encoder and the decoder),它会计算P(y∣x)P(y|x)P(y∣x)。
举个例子,对于这个句子:Jane visits Africa in September,你将Jane visits Africa填入这里(上图右下解码器),我现在忽略了字母的大小写,后面也是一样,然后这个就会计算P(y∣x)P(y|x)P(y∣x)。结果表明,你此时能做的最有效的事就是用这个模型来计算P(y∗∣x)P(y^*|x)P(y∗∣x),同时也用你的RNN模型来计算P(y^∣x)P(\hat y|x)P(y^∣x),然后比较一下这两个值哪个更大。
有可能是P(y^∣x)P(\hat y|x)P(y^∣x)大于P(y∗∣x)P(y^*|x)P

本文介绍了如何使用误差分析来诊断机器翻译系统中的问题,特别是针对束搜索算法与RNN模型的错误来源。通过对比不同翻译结果的概率,可以判断是算法本身的问题还是模型训练不足。
最低0.47元/天 解锁文章
1231

被折叠的 条评论
为什么被折叠?



