这一章我们就要学习强化学习(reinforcement learning)和适应性控制(adaptive control)了。
在监督学习(supervised learning)中,我们已经见过的一些算法,输出的标签类 y y y 都是在训练集中已经存在的。这种情况下,对于每个输入特征 x x x,都有一个对应的标签作为明确的“正确答案(right answer)”。与之相反,在很多的连续判断(sequential decisions making)和控制(control)的问题中,很难提供这样的明确的显示监督(explicit supervision)给学习算法。例如,假设咱们制作了一个四条腿的机器人,然后要编程让它能走路,而我们并不知道怎么去采取“正确”的动作来进行四条腿的行走,所以就不能给他提供一个明确的监督学习算法来进行模仿。在强化学习(reinforcement learning)的框架下,我们就并不提供监督学习中那种具体的动作方法,而是只给出一个奖励函数(reward function),这个函数会告知学习程序(learning agent) 什么时候的动作是好的,什么时候的是不好的。在四腿机器人这个样例中,奖励函数会在机器人有进步的时候给出正面回馈,即奖励,而有退步或者摔倒的时候给出负面回馈,可以理解成惩罚。接下来随着时间的推演,学习算法就会解决如何选择正确动作以得到最大奖励。
强化学习(Reinforcement learning,下文中缩写为 RL)已经成功用于多种场景了,例如无人直升机的自主飞行,机器人用腿来运动,手机的网络选择,市场营销策略筛选,工厂控制,高效率的网页索引等等。我们对强化学习的探索,要先从马尔可夫决策过程(Markov decision processes,缩写为 MDP)开始,这个概念给出了强化学习问题的常见形式。
1 马尔可夫决策过程(Markov decision processes)
一个马尔可夫决策过程(Markov decision process)由一个元组(tuple): ( S , A , P s a , γ , R ) (S, A, {P_{sa}}, γ, R) (S,A,Psa,γ,R) 组成,其中元素分别为:
-
S S S 是一个状态集合(a set of states)。(例如,在无人直升机飞行的案例中, S S S 就可以是直升机所有的位置和方向的集合。)
-
A A A 是一个动作集合(a set of actions)。(例如,还以无人直升机为例, A A A 就可以是遥控器上面能够操作的所有动作方向。)
-
P s a P_{sa} Psa 为状态转移概率(state transition probabilities)。对于每个状态 s ∈ S s ∈ S s∈S 和动作 a ∈ A a ∈ A a∈A, P s a P_{sa} Psa 是在状态空间上的一个分布(a distribution over the state space)。后面会再详细讲解,不过简单来说, P s a P_{sa} Psa 给出的是在状态 s s s 下进行一个动作 a a a 而要转移到的状态的分布。
-
γ ∈ [ 0 , 1 ] γ ∈ [0, 1] γ∈[0,1] 叫做折扣因子(discount factor)。
-
R : S × A → R R : S × A → R R:S×A→R 就是奖励函数(reward function)。(奖励函数也可以写成仅对状态 S 的函数,这样就可以写成 R : S → R R : S → R R:S→R。)
马尔可夫决策过程(MDP)的动力学(dynamics)过程如下所示:于某个起始状态 s 0 s_0 s0 启动,然后选择某个动作 a 0 ∈ A a_0 ∈ A a0∈A 来执行 MDP 过程。根据所选的动作会有对应的结果,MDP 的状态则转移到某个后继状态(successor state),表示为 s 1 s1 s1,根据 s 1 ∼ P s 0 a 0 s1 ∼ P_{s_0a_0} s1∼Ps0a0 得到。然后再选择另外一个动作 a 1 a1 a1,接下来又有对应这个动作的状态转移,状态则为 s 2 ∼ P s 1 a 1 s_2 ∼ P_{s_1a_1} s2∼Ps1a1。接下来在选择一个动作 a 2 a_2 a2,就这样进行下去。可以用下面的过程来作为表示:
s 0 → a 0 s 1 → a 1 s 2 → a 2 s 3 → a 3 … \begin{aligned} s_0 \xrightarrow{a_0}s_1 \xrightarrow{a_1}s_2\xrightarrow{a_2}s_3 \xrightarrow{a_3}\ldots \end{aligned} s0a0s1a1s2a2s3a3…
通过序列中的所有状态 s 0 , s 1 , . . . s_0, s_1, . . . s0,s1,... 和对应的动作 a 0 , a 1 , . . . a_0, a_1, . . . a0,a1,...,就你能得到给出的总奖励值,即总收益函数(total payoff)为
R ( s 0 , a 0 ) + γ R ( s 1 , a 1 ) + γ 2 R ( s 2 , a 2 ) + ⋅ ⋅ ⋅ R(s_0,a_0) + γR(s_1,a_1) + γ^2R(s_2,a_2) + ··· R(s0,a0)+γR(s1,a1)+γ2R(s2,a2)+⋅⋅⋅
如果把奖励函数只作为仅与状态相关的函数,那么这个值就简化成了
R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋅ ⋅ ⋅ R(s_0) + γR(s_1) + γ^2R(s_2) + ··· R(s0)+γR(s1)+γ2R(s2)+⋅⋅⋅
多数情况下,我们都用后面这种仅为状态的函数这种形式,虽然扩展到对应状态-动作两个变量的函数 R ( s , a ) R(s,a) R(s,a) 也并不难。
强化学习的目标就是找到的一组动作,能使得总收益函数(total payoff)的期望值最大:
E [ R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋅ ⋅ ⋅ ] E[R(s_0) + γR(s_1) + γ^2R(s_2) + ···] E[R(s0)+γR(s1)+γ2R(s2)+⋅⋅⋅]
注意,在时间步长(timestep) t t t 上的奖励函数(reward)通过一个参数(factor) γ t γ^t γt而进行了缩减(discounted)。因此,要使得期望最大化,就需要尽可能早积累符号为正的奖励(positive rewards),而尽量推迟负面奖励(negative rewards,即惩罚)的出现。在经济方面的应用中,其中的 R ( ⋅ ) R(·) R(⋅) 就是盈利金额(amount of money made), γ γ γ 也可以理解为利润率(interest rate)的表征,这样有自然的解释(natural interpretation),例如今天的一美元就比明天的一美元有更多价值。
有一种策略(policy),是使用任意函数 π : S → A π : S → A π:S→A,从状态(states)到动作(actions)进行映射(mapping)。如果在状态 s s s,采取动作 a = π ( s ) a = π(s) a=π(s),就可以说正在执行(executing)某种策略(policy) π π π。然后还可以针对策略函数(policy) π π π 来定义一个值函数(value function):
V π ( s ) = E [ R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋅ ⋅ ⋅ ∣ s 0 = s , π ] . \begin{aligned} V^{\pi}(s)=E[R(s_0) + γR(s_1) + γ^2R(s_2) + ···|s_0=s,\pi]. \end{aligned} Vπ(s)=E[R(s0)+γR(s1)+γ2R(s2)+⋅⋅⋅∣s0=s,π].
V π ( s ) V_π(s) Vπ(s) 就是从状态 s s s 开始,根据 π π π 给出的动作来积累的部分奖励函数(discounted rewards)的期望总和(expected sum)。1
给定一个固定的策略函数(policy) π π π,则对应的值函数 V π V^π Vπ 满足贝尔曼方程(Bellman equations):
这也就意味着,从状态 s s s 开始的这个部分奖励(discounted rewards)的期望总和(expected sum) V π ( s ) V^π(s) Vπ(s) 由两部分组成:首先是在状态 s s s 时候当时立即获得的奖励函数值 R ( s ) R(s) R(s),也就是上面式子的第一项;另一个就是第二项,即后续的部分奖励函数值(discounted rewards)的期望总和(expected sum)。对第二项进行更深入的探索,就能发现这个求和项(summation term)可以写成 E s ′ ∼ P s π ( s ) [ V π ( s ′ ) ] E_{s′∼P_{sπ(s)}} [V π(s')] Es′∼Psπ(s)[Vπ(s′)] 的形式。这种形式也就是从状态 s ′ s' s′ 开始的这个部分奖励(discounted rewards)的期望总和(expected sum) V π ( s ′ ) V^π(s') Vπ(s′),此处的 s ′ s' s′ 是根据 P s π ( s ) P_{sπ(s)} Psπ(s) 分布的,在 MDP 过程中从状态 s 采取第一个动作 π ( s ) π(s) π(s) 之后,确定了这个分布所在的空间。因此,上面的第二项实际上也就是给出了在 MDP 过程中第一步之后的部分奖励(discounted rewards)的期望总和(expected sum)。
贝尔曼等式(Bellman’s equations)可以有效地解出 V π V^π Vπ。尤其是在一个有限状态的 MDP 过程中,即 ( ∣ S ∣ < ∞ |S| < ∞ ∣S∣<∞),我们可以把每个状态 s s s 对应的 V π ( s ) V^π (s) Vπ(s) 的方程写出来。这样就得到了一系列的 ∣ S ∣ |S| ∣S∣ 个线性方程,有 ∣ S ∣ |S | ∣S∣ 个变量(也就是对应每个状态的未知的 V π ( s ) V^π(s) Vπ(s) ),这些 V π ( s ) V^π(s) Vπ(s) 都很容易解出来。
然后可以定义出最优值函数(optimal value function)
(1) V ∗ ( s ) = max π V π ( s ) \begin{aligned} V^\ast(s)=\max_\pi V^\pi (s)\tag{1} \end{aligned} V∗(s)=πmaxVπ(s)(1)
换一种说法,这个值也就是能用任意一种策略函数(policy)来获得的,最佳的可能折扣奖励(discounted rewards)的期望总和(expected sum)。另外对于最优值函数(optimal value function),也有一个版本的贝尔曼等式(Bellman’s equations):
(2) V ∗ ( s ) = R ( s ) + max a ∈ A γ ∑ s ′ ∈ S P s a ( s ′ ) V ∗ ( s ′ ) \begin{aligned} V^\ast(s)=R(s)+\max_{a\in A}\gamma\sum_{s'\in S}P_{sa}(s') V^\ast (s')\tag{2} \end{aligned} V∗(s)=R(s)+a∈Amaxγ<