本文介绍增强学习和自适应控制。
在监督学习中,算法是要输出尽量模仿训练集中的标签 y,标签给每个输入 x 一个清楚的正确答案。与此不同,对于许多序列决策和控制问题,就很难对算法给出这种明确的监督。例如,如果要造一个四足机器人,并编程让它行走,起初我们并不知道让它行走的正确行动,所以也不知道怎么模仿学习算法给出明确的监督。
在增强学习框架中,我给算法一个回报函数,告诉学习代理执行得好坏。在四足行走的机器人例子中,当机器人往前走时,回报函数就给予正反馈,退后或者摔倒就给予负反馈。学习算法的工作就是弄清楚怎么随着时间选择动作,以使总回报最大。
增强学习的应用非常广泛,如无人机、运动机器人、蜂窝电话网络路由、市场策略选择、工业控制和高效的页面排序。我们对增强学习的研究将从 MDP 马尔科夫决策过程开始,形式化增强学习遇到的问题。
1、马尔可夫决策过程
一个马尔可夫决策过程是元组 (S,A,{Psa},γ,R),其中:
- S 是状态集合。(例如,在无人机飞行中,S 可以是直升机所有可能的位置和方向)
- A 是动作集合。(例如,直升机操纵杆能够转动的所有方向)
- Psa 是状态转换概率。对每一个状态 s∈S 和动作 a∈A,Psa 是在状态空间上的分布。简单地说,Psa 给定的是,当在状态 s 采取行动 a,我们会变成哪种状态的分布概率。
- γ 是折扣因子。
- R:S×A—>R 是回报函数。(回报有时写成只有状态 S 的函数,R:S—>R)
MDP 执行的动态过程如下:从状态 s0 开始,在 MDP 中选择一些动作 a0∈A 来执行,作为选择的结果,根据 s1~Ps0a0, MDP 的状态随机切换到后继状态 s1,然后再选择另外一个动作 a1,作为动作的结果,根据 s2~Ps1a1,状态再次切换,然后选择 a2,等等。周期性的,这个过程可表示如下:
访问状态序列 s0,s1,...,并执行动作 a0,a1,...,总回报为:
或者,如果回报仅仅是状态的函数,那么总回报可写作:
对大部分应用来说,我们会使用更简单的状态回报 R(s),虽然状态动作回报 R(s,a) 的泛化也没有特别的困难。
增强学习的目标是随着时间选择动作以最大化总回报的期望值:
时间点 t 的回报通过乘以因子 γt 打了折扣,所以为使期望最大,我们希望正回报来得越早越好,负回报尽量往后面去。在经济应用中,R(·) 是挣钱的总金额,γ 自然可以解释为利率(今天的一英镑比明天的一英镑值钱)。
一个策略是一些从状态到动作的映射函数 π:S—>A。无论何时,我们在状态 s 执行了动作 a=π(s),就说在执行策略 π。定义 π 的值函数为:
V(s) 是从状态 s 开始,根据策略 π 采取行动,最终的折扣回报期望和。
给定固定策略 π,它的值函数 Vπ 满足 Bellman 方程:
也就是说,从 s 开始的折扣回报 Vπ(s) 的期望和由两部分组成:第一,从状态 s 开始的立即回报 R(s),第二,未来折扣回报的期望和。仔细检查第二项,和式可写为:
这是从状态 s‘ 开始的折扣回报的期望和,s‘ 符合分布 Psπ(s),也就是从状态 s 执行第一个动作 π(s) 后的状态分布,所以,第二项给的是在 MDP 中第一步后的折扣回报的期望和。
Bellman 方程能用于高效解出 Vπ,特别是在一个有限状态 MDP(|S|<∞),可以为每个状态写下这个方程 Vπ(s),这给定了一个有 |S| 个变量(每个状态都有个未知的 Vπ(S))的 |S| 个线性方程的集合,可以有效解出 Vπ(s)。
定义最优值函数:
也就是能使用策略得到的最好的折扣回报期望和。还有另一个版本的 Bellman 方程。
第一项跟之前一样是立即回报,第二项是执行动作 a 后的折扣回报未来期望和的最大值。
定义策略 π*:S—>A 如下:
π*(s) 给出了能使总回报最大的行动 a。
事实上,对每一个状态和每一个策略有:
第一个等式是说 Vπ*,π* 的值函数,等于对每个状态 s 来说的最优值函数 V*。第二个不等式是说,π* 的值至少跟其它策略一样大。换句话说,π* 就是最优策略。
注意到 π* 有一个有趣的属性,对所有的状态它都是个最优策略。特别的,并不是说,如果从 s 开始就有针对那个状态的最优策略,如果从其它的 s‘ 开始就有针对 s‘ 的其它最优策略。特别的,同样的策略 π* 对所有的状态都能获得最大值,这意味着我们可以使用同样的策略 π*,而不管 MDP 的初始状态是什么。
2、值迭代和策略迭代
参考资料:
[1] http://cs229.stanford.edu/notes/cs229-notes12.pdf