强化学习举例
假设你正在用机器学习来教直升机复杂的飞行动作。下面是一张延时照片,照片上是一台电脑控制器的直升机正在引擎关闭的情况下执行着陆。
这被称为“自旋”策略,即使引擎意外故障了,它也允许直升机着陆。这也是人类飞行员经常进行的训练。而你的目标是使用一种学习算法,让直升机通过一个轨迹
安全地着陆。
要应用强化学习策略,你必须设计一个 “奖励函数”
,它给出一个分数来衡量每一个可能轨迹 的好坏。例如,如果 导致直升机坠毁,那么奖励也许是 ,这是一个巨大的负反馈;而一个导致安全着陆的轨迹 可能会产生一个正的 值,它的精确值取决于着陆过程的平稳程度。奖励函数 通常是人为选择的,以量化不同轨迹 的理想程度。它必须权衡考虑着陆的颠簸程度,直升机是否降落在理想的位置,乘客的降落体验等因素。设计一个好的奖励函数并非易事。
给定一个奖励函数
,强化学习算法的工作是控制直升机,使其达到 . 然而,强化学习算法原理内部有许多近似操作,可能无法成功实现这种最大化需求。
假设你已经选择了某些奖励函数
作为反馈,并运行了学习算法。然而它的表现似乎比人类飞行员要糟糕得多——它更加颠簸,而且似乎不那么安全。你如何判断错误是否由强化学习算法造成——它试图找到一个轨迹 ,满足 ——或者错误来自于你的奖励函数——它尝试衡量并且指定一种在颠簸程度和着陆精度之间权衡的理想结果。
为了应用优化验证测试,让
表示人类飞行员所选择的轨迹,并让 代表算法所选择的轨迹。根据我们上面的描述, 是优于 的发展轨迹。因此,关键的测试点在于:不等式 是否成立?
情况1:如果不等式成立,奖励函数
正确地使 优于 ,但这表明我们的强化学习算法找到的 仍不够好,花时间去改进算法是很值得的。
情况2:如果上面不等式不成立,而是
. 这表明 的设计使得理应是更优策略的 得到了一个更糟的评分。你应当致力于改进 ,以更好地获得与良好着陆情况相对应的权衡。
许多机器学习应用程序使用这种优化某个近似的 “模式” 来确定得分函数
. 有时没有特定的输入 ,形式简化为 。在上面的例子中,得分函数即是奖励函数,,而采用的优化算法是强化学习算法,目的是找到好的轨迹 .
这和前面的例子有一个区别,那就是,与其比较 “最优” 输出,不如将其与人类水平的表现进行比较。我们认为,即使
不是最优的,它也是相当不错的。一般而言,只要有一个比当前学习算法性能更好的输出 (在这个例子中即是指 ),即使它不是 “最优” 的,优化验证测试也能够反映改进学习算法与改进得分函数之间哪一个更具前途。