Machine Learning Yearning 44-46阅读笔记:调试推理算法

44.优化验证实验

假设你正在做一个语音识别系统,给系统一个输入音频A,计算每一个句子S输出的概率 S c o r e A ( S ) 。你需要找到句子S使得 O u t p u t = a r g m a x S c o r e A ( S ) 。这里太多种组合,你需要应用一个近似搜索算法来找出S。例如集束搜索,在搜索过程中只保留K个最top的候选,像这样的算法不能保证找到最优解使得 S c o r e A ( S ) 最大。例如语音A内容是“I love machine learning”,但是系统输出的是“I love robots”,这里有两个原因可能导致这个错误“:

  1. 搜索算法的错误:没能找到最优解
  2. 目标函数的错误:具体来说 S c o r e A ( S ) 没有认识到“我爱机器学习”才是正确的翻译。

如果原因是错误1,你应该改进你的搜索函数。如果原因是错误2,那么你应该改进你的学习算法。
面对这个情况,要怎样才能系统地决定将精力投放在什么上面呢? S o u t 是输出“I love robots”, S 是正确的输出“I love machine learning”。为了搞清楚问题1还说2才是真正的原因,你可以做优化验证实验:首先计算 S c o r e A ( S o u t ) S c o r e A ( S ) ,比较大小,

  • Case 1: S c o r e A ( S o u t ) > S c o r e A ( S ) ,证明你最好将精力放在改进近似搜索算法上。例如对集束搜索,你可以尝试增加集束宽度。
  • Case 2: S c o r e A ( S o u t ) S c o r e A ( S ) ,你应该将精力放在改进如何学得或者近似得到不同S的 S c o r e A ( S )

这里举例的仅仅是单一样本,当你在实际中应用优化验证测试时,你应该在开发集上检查所有的错误,对于所有的错误,都应该检查是否 S c o r e A ( S o u t ) > S c o r e A ( S )
假设95%的错误来源于 S c o r e A ( ) ,只有5%源自优化算法,因此,这时,你应该将精力集中于改善 S c o r e A ( )

45.优化验证实验的一般形式

更一般的,给一个输入 x y 是正确的输出,而算法的输出为 y o u t ,与前一章讲的一样,你可以根据比较得分,来得到一个结果。这一章举了一个中文转英文的例子。

46.强化学习例子

假设你正在用机器学习的方法教一架直升机进行复杂的飞行演习。这里是一种叫做自动旋转的演习。它让直升机即使发动机停转,也能着陆,人类飞行员将这项演习当做他们训练的一部分,你的目标是用算法帮助直升机经过某一轨道 T 最后安全降落。
要应用强化学习,你必须开发一个奖励函数 R ,评价直升机的降落轨道的好坏。例如,如果 T 让飞机坠毁,那么可能奖励是 R ( T ) = 1000 一个巨大的负值, T 让直升机安全降落将会得到一个正值,并且具体取决于降落是否平滑。典型的,这个奖励函数是手动选取的来判断不同轨迹的理想程度。必须权衡如何颠簸地着陆,是否降落在合适的位置,对乘客来说是否会很难受,这不是一项简单的工作。
给出一个奖励函数,强化学习算法就是去控制直升机让其实现奖励函数最大化。但强化学习算法做了太多近似,可能无法完成这个最大化。
假设你已经选择了一些奖励函数,并开始跑你的学习算法,然而它表现的比人类飞行员差太多。你能否确定这个错误是强化学习算法的问题,还是奖励函数的问题?
试着进行优化验证实验,让 T h u m a n 是人类飞行员实现的轨迹, T o u t 为算法的输出,按照上面的描述, T h u m a n 好于 T o u t ,因此实验的关键是是否一直有 R ( T h u m a n ) > R ( T o u t )
Case1:如果答案是否,这表明将精力放在改善强化学习算法上是值得的。
Case2:如果答案是是,你应该将精力放在改善奖励函数,使其更好地覆盖良好着陆。
这个例子同之前的不同点在于,你直接同人类水平比较,我们假设人类水平非常好,即使不是最好。更一般的,如果你有一些比你现在输出更好的结果,那么就可以用它们做优化验证实验。

猜你喜欢

转载自blog.csdn.net/juranyaoyingwen/article/details/80752492
今日推荐