本文主要介绍强化学习的一些基本概念:包括MDP、Bellman方程等, 而且讲述了如何从 MDP 过渡到 Reinforcement Learning。html
这里仍是放上David Silver的课程的图,能够很清楚的看到整个交互过程。这就是人与环境交互的一种模型化表示,在每一个时间点,大脑agent会从能够选择的动做集合A中选择一个动做$a_t$执行。环境则根据agent的动做给agent反馈一个reward $r_t$,同时agent进入一个新的状态。web
根据上图的流程,任务的目标就出来了,那就是要能获取尽量多的Reward。Reward越多,就表示执行得越好。每一个时间片,agent根据当前的状态来肯定下一步的动做。也就是说咱们须要一个state找出一个action,使得reward最大,从 state 到 action 的过程就称之为一个策略Policy,通常用$\pi $表示。算法
强化学习的任务就是找到一个最优的策略Policy从而使Reward最多。函数
在运行强化学习算法以前,首先须要获得一系列的状态,动做和反馈,这个过程一般是agent随机获得的:学习
$$ (s_1,a_1,r_1,s_2,a_2,r_2,…s_t,a_t,r_t) $$优化
这就是一系列的样本Sample。强化学习的算法就是须要根据这些样原本改进Policy,从而使得获得的样本中的Reward更好。lua
因为这种让Reward愈来愈好的特性,因此这种算法就叫作强化学习Reinforcement Learning。htm
强化学习的问题均可以模型化为MDP(马尔可夫决策过程)的问题,MDP 其实是对环境的建模;MDP 与常见的 Markov chains 的区别是加入了action 和 rewards 的概念。blog
所以,一个基本的 MDP 能够用一个五元组$(S,A,P,R, \gamma)$表示,其中:ci
所以,MDP 的核心问题就是找到一个策略 $\pi(s)$ 来决定在状态 $s$ 下选择哪一个动做,这种状况下MDP就变成了一个 Markov chain,且此时的目标跟咱们前面提到的强化学习的目标是一致的。
状态的好坏等价于对将来回报的指望。所以,引入回报(Return) 来表示某个时刻$t$的状态将具有的回报:
$$ G_t = R_{t+1} + \gamma R_{t+2} + … = \sum_{k=0}^\infty\gamma^kR_{t+k+1} $$
上面 $R$ 是 Reward 反馈,$\gamma$ 是 discount factor(折扣因子),跟前面 MDP 中的符号的含义一致。
从上面的式子能够, 除非整个过程结束,不然咱们没法获取全部的 reward 来计算出每一个状态的 Return,所以,再引入一个概念:价值函数(value function),记为 $V(s)$,经过 $V(s)$ 来表示一个状态将来的潜在价值。从定义上看,value function 就是回报的指望:
$$ V(s) = \mathbb E[G_t|S_t = s] $$
引出价值函数,对于获取最优的策略Policy这个目标,咱们就能够经过估计 value function 来间接得到优化的策略。道理很简单,经过价值函数能够知道每一种状态的好坏,这样咱们就知道该怎么选择了(如选择动做使得下一状态的潜在价值最大),而这种选择就是咱们想要的策略。
咱们须要估算 Value Function,只要可以计算出价值函数,那么最优决策也就获得了。所以,问题就变成了如何计算Value Function?
根据前面 $G_t$ 和 $V(s)$ 的定义,有:
$$ \begin{align} V(s) & = \mathbb E[G_t|S_t = s]\\ & = \mathbb E[R_{t+1}+\gamma R_{t+2} + \gamma ^2R_{t+3} + …|S_t = s]\\ & = \mathbb E[R_{t+1}+\gamma (R_{t+2} + \gamma R_{t+3} + …)|S_t = s]\\ & = \mathbb E[R_{t+1}+\gamma G_{t+1}|S_t = s]\\ & = \mathbb E[R_{t+1}+\gamma v(S_{t+1})|S_t = s] \end{align} $$
则有:
$$ V(s) = \mathbb E[R_{t+1} + \gamma V(S_{t+1})|S_t = s] $$
上面这个公式就是Bellman方程的基本形态。从公式上看,当前状态的价值和下一步的价值以及当前的反馈Reward有关, 其中透出的含义就是价值函数的计算能够经过迭代的方式来实现。
回到 MDP 问题,若是咱们知道了转移几率 $P$ 和奖励函数 $R$,那么即可经过下面的方法求出最优策略 $\pi(s)$, 首先,结合上面提到的价值函数和Bellman方程有:
公式1:
$$ \pi(s):=\arg \max_a\ {\sum_{s’}P_{a}(s,s’)(R_{a}(s,s’)+\gamma V(s’))} $$
公式2:
$$ V(s) := \sum_{s’}P_{\pi(s)}(s,s’)(R_{\pi(s)}(s,s’) + \gamma V(s’)) $$
公式 1 表示在状态 $s$ 下的采起的最优动做,公式 2 表示在状态 $s$ 下的价值,能够看到二者有依存关系;
而在 转移几率 $P$ 和奖励函数 $R$已知的状况下,求解 MDP 问题常见作法有 Value iteration 或 Policy iteration.
在 Value iteration 中,策略函数 $\pi$ 没有被使用,迭代公式以下:
$$ V_{i+1}(s) := \max_a \sum_{s’} P_a(s,s’)(R_a(s,s’) + \gamma V_i(s’)) $$
下标 $i$ 表示第 $i$ 次迭代,在每轮迭代中须要计算每一个状态的价值,而且直到两次迭代结果的差值小于给定的阈值才能认为是收敛。
计算的出收敛的价值函数后,经过公式1就可以得出策略函数 $\pi$ 了,其迭代过程以下图所示:
Policy iteration同时更新价值 $V$ 和策略 $\pi$, 且通常可分红两步:
Policy Evaluation,策略评估,就是上面公式2的过程。目的是在策略固定的状况下更新Value Function 直到 value 收敛,从另外一个角度来说就是为了更好地估计基于当前策略的价值
Policy Improvement,策略改进,就是上面公式1的过程。就是根据更新后的 Value Function 来更新每一个状态下的策略直到策略稳定
这个方法本质上就是使用当前策略($\pi$)产生新的样本,而后使用新的样本更好的估计策略的价值($V(s)$),而后利用策略的价值更新策略,而后不断反复。理论能够证实最终策略将收敛到最优.
具体的算法流程以下所示:
问题来了,上面的 Policy Iteration 和 Value Iteration有什么区别, 为何一个叫policy iteration,一个叫value iteration?
缘由其实很好理解,policy iteration 最后收敛的 value $V$ 是当前 policy 下的 value 值(也作对policy进行评估),目的是为了后面的policy improvement获得新的policy;因此是在显式地不停迭代 policy。
而value iteration 最后收敛获得的 value 是当前state状态下的最优的value值。当 value 最后收敛,那么最优的policy也就获得的。虽然这个过程当中 policy 在也在隐式地更新,可是一直在显式更新的是 value,因此叫value iteration。
从上面的分析看,value iteration 较 之policy iteration更直接。不过问题也都是同样,都须要知道转移几率 $P$ 和奖励函数 $R$。
可是对于 Reinforcement Learning 这一类问题,转移几率 $P$ 每每是不知道,知道转移几率 $P$ 也就称为得到了模型 Model,这种经过模型来获取最优动做的方法也就称为 Model-based 的方法。可是现实状况下,不少问题是很可贵到准确的模型的,所以就有 Model-free 的方法来寻找最优的动做,像 Q-learning,Policy Gradient,Actor Critic这一类方法都是 model-free 的。
前面的方法问题是须要已知转移几率 $P$, 目的是为了遍历当前状态后的全部可能的状态,所以若是采用贪婪的思想,那么就不须要不遍历后面全部的状态,而是直接采起价值最大的状态动做来执行。
Q-learning 实际上就是采用这种思想的,Q-Learning的基本思想是根据 value iteration 获得的,但要明确一点是 value iteration 每次都对全部的Q值更新一遍,也就是全部的状态和动做。但事实上在实际状况下咱们没办法遍历全部的状态,还有全部的动做,所以,咱们只能获得有限的系列样本。具体的算法流程会再下一篇文章具体介绍。
综上,本文主要介绍了强化学习的任务和一些概念,以及从 MDP 如何过渡到 Reinforcement,在后续的文章中会介绍value-based的Q-learning 和DQN方法,Policy gradient 类方法以及结合二者的 Actor Critic 及DDPG方法。
参考资料: