Chapter 46、Reinforcement learning example
强化学习样本
假设你正在使用机器学习去教直升机复杂的演习。 这是计算机控制器直升机在发动机关闭时执行着陆时的延时照片。
这被称为“自动旋转”演习。即使发动机意外失效,它也允许直升机着陆。人类飞行员将该演习作为他们的训练的一部分。你的目标是使用学习算法通过以安全着陆为结尾的轨迹T飞行直升机。
为了应用增强学习,你必须开发一个“奖励函数”R(.),它给一个分数来衡量每个可能的轨迹T有多好。例如,如果T导致直升机坠毁,那么可能奖励是R(T)=-1000——大的负值奖励。导致安全着陆的轨迹T根据其着陆的平滑程度可能导致一个具体的正的R(T)值。通常通过手动选择奖励函数R(.)来量化不同轨迹T的理想程度。它必须权衡着陆时的颠簸程度,直升机是否准确着陆在期望地点,乘客下来的路有多崎岖,等等。设计一个好的奖励函数不简单。
给定一个奖励函数R(T),强化学习算法的工作是去控制直升机以便获取 max_T R(T)
。然而,强化学习算法产生很多近似值,并且可能不会成功实现它的最大化。
假设你选择了某个奖励R(.)并运行了你的学习算法。然而,它的表现比人类飞行员要差的远——比起人类飞行员,其着陆颠簸而且看起来不安全。你怎么知道该缺点与增强学习算法有关(算法试图执行一条达到max_T R(T)
的轨迹),或者与奖励函数有关(其试图衡量及指定乘坐颠簸和着陆点准确性之间的理想权衡)?
为了应用优化验证测试,让T_human作为人类飞行员实现的轨迹,T_out作为算法实现的轨迹。根据我们之前的描述,T_human是一条比T_out更好的轨迹。因此,关键测试如下:
不等式R(T_human) > R(T_out)
是否成立?
Case 1:如果该不等式成立,那么奖励函数R(.)正确地评估出T_human优于T_out。但我们的强化学习算法找到较差的T_out。这表明致力于提升强化学习算法是值得的。
Case 2:该不等式不成立:R(T_human) <= R(T_out)
。这意味着尽管T_human是更优的轨迹,R(.)仍然为其分配了一个更糟的分数。你应该致力于提升R(.)以更好捕获对应于良好着陆的折衷。
很多机器学习应用都有这种使用近似搜索算法来优化近似打分函数Score_x(.)的“模式”。有时,没有指定的输入x,所以这只会减少Score(.)。在我们上面的例子中,打分函数就是奖励函数Score(T)=R(T),优化函数是试图执行良好轨迹T的强化学习算法。
在该例子和以前例子的一个区别是,与其和“最优”输出进行比较,不如和人类水平的表现T_human进行比较。我们假设T_human是非常好的,即使不是最优的。一般来说,只要你有某个y*
(在该例子中是T_human),它是比你当前学习算法表现更好的输出(即使它不是“最优”输出),那么优化验证测试可以指示它是否更有希望提升优化算法或打分函数。