本节为吴恩达教授机器学习课程笔记最后一部分,增强学习和自适应控制,主要包括:马尔可夫决策过程的形式化描述,值迭代和策略迭代两种求解方法以及马尔可夫模型极大似然参数学习方法。
在有监督学习中,学习算法尽量根据训练集来使得输出模仿标签数据,这种情况下,标签给出了每一个输入x的明确的正确答案。然而在很多序列决策制定以及自适应控制问题中,对于算法的这种明确的监督数据是难以获得的。比如如果我们制造了一个四条腿的机器人并且想要编程使其能够走路,那么初始化时我们并不知道能使机器人走路的正确的动作,所以也就不知道该如何去给算法提供一个可以模仿的监督数据。
在增强学习框架中,我们仅仅提供给算法一个激励函数,来指出智能体的好行为和坏行为。比如四足机器人的走路问题中,激励函数会在机器人向前移动时给出奖励,并在后退或者跌倒时给出惩罚。这样一来,学习算法的工作就是如何选择下一步的动作来获得最多的奖励。
增强学习的思路已经在包括包括无人直升机的自主飞行、机器人腿部运动,手机网络路由,营销策筛选,高效网页索引等多个方面取得成功,我们对增强学习的讨论将从马尔可夫决策过程(Markov decision process, MDP)开始,它为增强学习提供了一种形式化的定义。
一个马尔可夫决策过程是一个这样的元组 ( S , A , { P s a } , γ , R ) (S,A,\{P_{sa}\},\gamma,R) (S,A,{Psa},γ,R),其中:
马尔科夫决策的过程如下:初始状态 s 0 s_0 s0,并且选择一个动作 a 0 ∈ A a_0 \in A a0∈A,这样状态会发生转换变为 s 1 , s 1 ∼ P s 0 a 0 s_1,s_1 \sim P_{s_0a_0} s1,s1∼Ps0a0。然后我们选择另一个动作 a 1 a_1 a1,状态再次发生转换,变为 s 2 ∼ P s 1 a 1 s_2 \sim P_{s_1a_1} s2∼Ps1a1,然后选择另一个状态 a 2 a_2 a2,我们可以将这个过程描述为:
观测到带有动作 a 0 , a 1 , . . . a_0,a_1,... a0,a1,...的状态序列 s 0 , s 1 , . . . s_0,s_1,... s0,s1,...之后,全部的奖励由下式给出:
而且在大多数情况,我们使用更为简单的状态奖励函数 R ( s ) R(s) R(s)与使用一般的状态-动作奖励函数 R ( s , a ) R(s,a) R(s,a)的效果并无差别。
增强学习的目标是在一个序列上选择动作来最大化奖励的期望值即下式:
在时间点t奖励前要乘上乘法因子 γ t \gamma^t γt,因此,为了最大化这个期望,我们需尽可能积累符号为正的奖励且延缓符号为负的奖励的出现。
一种可行的策略是使用任意一个可以把状态映射到动作的函数 π \pi π。描述为如果我们处在状态 s s s,采取动作 a = π ( s ) a=\pi(s) a=π(s)就称我们在执行策略 π \pi π,根据下式针对策略 π \pi π定义一个值函数:
V π ( s ) V^{\pi}(s) Vπ(s)是初始状态为 s s s并且根据策略 π \pi π执行动作的奖励函数的期望总和。
给定一个固定的策略 π \pi π,它的值函数 V π V^{\pi} Vπ满足贝尔曼方程:
也就是说,从状态 s s s开始奖励函数的期望和 V π V^{\pi} Vπ由两部分组成,一部分是当前奖励 R ( s ) R(s) R(s),第二部分是将来的期望奖励和,更为具体地,第二部分中的求和计算中可以视为 E s ′ ∼ P s π ( a ) [ V π ( s ′ ) ] E_{s'\sim P_{s\pi(a)}}[V^{\pi}(s')] Es′∼Psπ(a)[Vπ(s′)],也就是状态 s ′ s' s′的奖励函数,其中 s ′ s' s′服从分布 P s π ( s ) P_{s\pi(s)} Psπ(s),即从状态s采取动作 π ( s ) \pi(s) π(s)后转换的状态 s ′ s' s′。
贝尔曼方程给出了 V π V^{\pi} Vπ的高效计算方式,具体来看在一个有限状态MDP中( ∣ S ∣ < ∞ |S| < \infty ∣S∣<∞),我们可对每一个状态写出这样一个求解 V π V^{\pi} Vπ的方程。这就得到了一系列线性方程,包含 ∣ S ∣ |S| ∣S∣个方程和 ∣ S ∣ |S| ∣S∣个变量。
定义一个最优值函数:
第一部分和之前一样也是当前的奖励,第二部分是遍采所有动作后得到的最大奖励。
同样地定义一个策略 π ∗ : S ↦ A \pi^*:S \mapsto A π∗:S↦A如下:
并且对于所有的状态 s s s和策略 π \pi π,都有:
注意到这里 π ∗ \pi^* π∗是对于所有状态的一个最优选择,也就是说,无论我们是从状态 s s s开始还是从其他的状态开始, π ∗ \pi^* π∗是不变的。
这是两种用于求解有限状态马尔可夫决策过程的两种高效算法,现在前提是有限动作和有限状态,即 ∣ S ∣ < ∞ , ∣ A ∣ < ∞ |S|<\infty,|A|<\infty ∣S∣<∞,∣A∣<∞。下面看第一个算法值迭代:
有两种方式来对算法内循环的值进行更新。第一种方式,首先计算每一个状态 s s s对应的 V ( s ) V(s) V(s),然后用新的值覆盖旧的值,这个过程叫做同步更新,这样算法就可以看作为一个“Bellamn backup operator”,其接受当前值函数估计的值为输入,然后将其映射为一个新的估计值(当然也可以异步更新)。
无论是同步还是异步更新,值迭代总会将 V V V向 V ∗ V^* V∗收敛,找到 V ∗ V^* V∗之后,就可以找到最优的策略。
还有一种方式叫做策略迭代算法,过程如下:
算法内循环不断为当前的策略计算值,然后选择值最大的策略,在一定次数的迭代之后, V V V会收敛到 V ∗ V^* V∗, π \pi π会收敛到 π ∗ \pi^* π∗。
值迭代和策略迭代都是求解MDPs的标准算法,两种算法同样高效。对于小型的MDPs策略迭代更快收敛,但是对于状态空间很大的MDPs策略迭代计算代价过大,值迭代就可以用在这里,所以实际中,值迭代要比策略迭代更常用。
我们上面的讨论都是基于状态转换概率和奖励已知的情况,但是在大多数实际问题中,状态转换概率和奖励都不会明确获取,而是需要从数据中进行估计。(通常情况下, S , A , γ S,A,\gamma S,A,γ都是已知的)
例如,倒立摆问题中,MDP如下:
s i ( j ) s_i^{(j)} si(j)是在t时间实验j的状态, a i ( j ) a_i^{(j)} ai(j)是对应状态采取的动作。实际文中,每个实验都会进行到MDP停止或者到某个大但是有限的次数。
给定包含一些列实验的MDP可以推导出状态转换概率的极大似然估计:
如果出现"0/0"的情况,那我们直接赋值为 1 / ∣ S ∣ 1/|S| 1/∣S∣。
注意,如果我们在MDP中观测到更多的实验,有一种高效的方式来对我们估计的状态转换概率及逆行更新,具体地,我们保持上卖弄式子中的分子分母不变,再次基础上观测到更多的实验,那么我们可以不断的积累奇数值,计算这些累计值的比值从而给出对 P s a P_{sa} Psa的估计。
同样的情况下如果 R R R是未知的,那么我们也可以用所有观测到的状态的建了个i的平均值来代替 R ( s ) R(s) R(s)。
构建了MDP的模型之后,我们可以根据估计的状态转换概率和奖励函数,使用值迭代或者策略迭代来求解MDP,把模型参数学习和MDP值迭代求解放到一起,就得到了下面这个用于状态转换概率未知情况的MDP的学习算法:
注意到对于这个特定的算法,有一个小的优化可以加快其运行速度,即算法内循环部分我们应用止跌大的步骤,如果值迭代的初始状态为 V = 0 V=0 V=0,我们就可以得到一个更好的初始状态,算法会收敛地更快。
MDP最优解求解问题是强化学习的目标,常见的解法有动态规划解法,蒙塔卡洛方法等等,之后遇到再进行学习。
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]