陈曦,朱小栋
第八部分 调试推论算法(Debugging inference algorithms)
第四十四章 优化验证测试(The Optimization Verfication test)
(这部分的内容看得不是非常明白,尝试着简单总结一下)
就语音识别系统的例子来说,输入是A那么:![]()
在A的条件下,得到句子S的概率Score值要最大。
即
假如出错,有两种可能:
- 搜索最大值的算法出错(Search algorithm problem)
- 目标(打分函数)出错(Objective/scoring function problem)
如何知道是哪一种错误呢?这里使用的就是优化验证测试的方法,假设正确的输出值为S*而实际输出为Sout那么有以下两种情况:
![]()
此时,是由于搜索算法出现了问题,才导致实际输出没有找到Score值最大的那个句子。
![]()
此时,是计算的目标(打分)函数出错了。
因此,到底是哪里出了问题就该着重改进哪里。
第四十五章 优化验证测试的普遍形式
(这里举了一个机器翻译的例子)
在人工智能领域,这是一种非常常见的 “设计模式”,首先要学习一个近似的打分函数Scorex(.) ,然后使用近似最大化算法(搜索output)。如果你能够明白这种模式,就能够使用优化验证测试来理解造成误差的来源。
第四十六章 加强学习的例子(Reinforcement learning example)
你的目标是使用一种学习算法,让直升机通过一个轨迹T安全地着陆。
这是就要用到加强学习的方法了,你要设计一个奖励函数(Reward function)。这个函数R(.)给轨迹T评估打分,假如直升飞机坠毁那么R(T)应该是-1000一个很大的负反馈。如果相反,降落的很平稳,则是一个正值。
同样,利用前面的理论,我们需要测试:![]()
第一种情况,不等式成立。说明强化学习算法找到的Tout不够好,需要改进算法。
第二种情况,不等式不成立。说明打分函数R(.)这个函数设置的不合理,需要改进。
在上面的例子中,得分函数即是奖励函数,Score(T)=R(T) ,而采用的优化算法是强化学习算法,目的是找到好的轨迹。这和前面的例子有一个区别,那就是,与其比较 “最优” 输出,不如将其与人类水平的表现 Thuman 进行比较。我们认为,即使Thuman 不是最优的,它也是相当不错的。