这周数据学习的内容是关于强化学习(Reinforcement
Learning)的。不过课上睡着了,而且由于信息论时间太赶一直没有空看这节课的内容。
强化学习现在是非常流行的一个机器学习方法,当然它和其他的算法不一样,你用了这个就是这个,而强化学习更像是一种学习方式,也就是一直在线学习。AlphaGo赢了围棋冠军,OpenAI赢了Dota冠军,以及自动驾驶汽车飞机等都有它的身影。
什么是强化学习?
强化学习有点像是玩游戏的过程,实际上强化学习应用最多的地方也正是游戏。他属于无监督学习,但是又是根据奖励来决定下一个动作,怎么知道奖励?就是走到头。有点类似于有“长远的眼光”。这个长远的眼光可以说是经验,是通过一次次训练得到的,类似于你的人生可以来无数回,你会怎么做这件事。可能经过多次碰壁以后,我终于活成了一个成功人士。每次人生)训练周期)称为episode。
首先要知道对于序列决策问题,我们很难找到明确的监督策略来决定结果的好坏。在强化学习中,学习的过程是通过代理完成的。强化学习定义了一个奖励函数(reward
function)和environment,而代理(agent)要做的就是最大化累计的奖励。如下图:
### Markov Decision Process ###
我们首先学习一下马尔可夫决策过程。一个马尔可夫决策过程可以看作是一个五元组:,其中:
*
是一个状态集合(环境)
*
是一个动作集合
*
是状态转移概率
*
:,是一个奖励函数
*
,为折扣因子(discount
factor)

这幅图中,,而它的如下表:
|
|
|
|
|
0.5 |
0 |
0.5 |
|
0 |
0 |
1 |
|
0.7 |
0.1 |
0.2 |
|
0 |
0.95 |
0.05 |
|
0.4 |
0.6 |
0 |
|
0.3 |
0.3 |
0.4 |
现在考虑一个状态序列以及对应的采取的动作

则这个序列的总共的奖励为:
我们把问题想得简单一点,假设这个reward只和状态有关,则总的奖励为:
未来第步的奖励会被打的折扣。这说明离当前这个状态越远权重越小,这意味着我们把下一步的奖励看得最重要,接下来是下下一步的奖励,依次减少。
Policy & Value functions
强化学习的目标就是:选择action,使得总的奖励期望最大:
- 一个策略(policy)是任意一个函数:.
- 而该策略对应的值函数(value
function)为在从状态开始,根据来执行动作的条件下,总的奖励的期望值,也就是:
给定,值函数(value
function)满足Bellman等式:
所以,这实际上是一个递归的过程,本次状态的值函数,是由下一个可能的状态值决定的。而下一个可能的状态值又和你的策略相关。为了方便理解,我们再定义一个函数,为动作-值函数Q。它接受两个输入:当前的状态和当前状态采取的动作:
我们可以维护这一张关于Q值的表,这就是传说中的Q-learning。
Optimal value and policy
我们定义最优的值函数为:
最优的策略为实现了最优值函数的策略:
对于每一个状态以及每一个策略,
可以看到的是Q-learning是在维护一张表,而我们这里提到的和Q-learning非常相似,不过policy选的是最佳的动作,可以说Q-learning是实现这个目标学习的一种方法。
求解有限状态MDP下的最佳的value或者policy
实际上,我们可以看到只要解决了value和policy中一个,我们就能得到最佳的结果,因为实际上最佳策略也就是实现了最佳值的策略而已。因此这个解决过程就有两个方法。前提是,状态集合是有限的。
value iteration
假设MDP有有限的状态集合和动作空间,则值迭代如下: >1.For each
state
, initialize
> >2.Repeat until convergence { > >Update
for every state s > >}
在这里有两个办法来更新:
* 同步更新(Synchronous update): > Set
for all states
> >For each
:
>
* 非同步更新(Asynchronous update): > For each
:
>
policy iteration
1.Initialize
randomly
2.Repeat until convergence{
Let
For each state
,
}
其中步骤a可以通过求解Bellman等式来完成(一个集合的线性方程组)。
Discussion
值迭代和策略迭代都可以最终收敛到最佳的$\pi^\*$和$V^\*$. *
策略迭代对于小的MDP更加高效,可以更快速地收敛 *
值迭代对于更大的状态空间来说更实用
Learning a model for
finite-state MDP
如果奖励函数和转移概率是未知的。如何从数据中估计他们?
### Experience from MDP ###
给定政策如下:
|
|
|
|
|
|
|
|
在这个环境下重复地执行策略:

Estimate model from
experience
Estimate
对状态转移概率的最大似然估计为: $$
P_ {sa}(s') = P(s'|s,a)=\frac{\\#\{s \rightarrow a \rightarrow s'\}
}{\\#\{s \rightarrow a \rightarrow \cdot\} }
$$
如果$\\#\{s \rightarrow a \rightarrow
\cdot\}=0$,那么设.
Estimate
我们定义为第t次试验中状态s的瞬时奖励,则:
Algorithm: MDP model learning
1.Initialize
randomly ,
for all
2.Repeat until convergence {
a.Execute
for
trails
b.Update
and
using the accumulated experience
c.ValueIteration
d.Update
greedily with respect to
:
ValueIteration()
1.Initialize
2.Repeat until convergence{
Update
for every state s
}
Continuous state MDPs
最后我们提一下连续的MDP,一个MDP的状态集合可能是无穷大的: * A car’s
state:
* A helicopter’s
state:
下面看一个有趣的例子:1D 倒立摆(Inverted
Pendulum),目标是平衡车上的栏杆,如图:

- 状态代表:
- 动作:作用在车上的力
- 奖励:每次这个栏杆是直立的时候+1
由于维度的“诅咒”,一般来说离散化只能在一维两维的情况下保持不错的效果。
如何直接估计而不用离散化?
主要的想法: *
获取MDP的模型或模拟器,可用于产生经验元组:
*
现在有来自状态空间S的样本,使用模型来估计他们的最佳期望奖励总和,也就是:
*
使用监督学习从来近似,让其作为一个状态的函数,例如:
### Obtaining a simulator ###
模拟器是一个黑盒子,在给定状态和动作的情况下来产生下一个状态。

一般来说有下面几种策略: * 使用物理法则,也就是倒立摆的运动方程:
$$
(M+m)\ddot{x}+b\dot{x} +ml\ddot \theta \cos(theta) - ml\dot \theta
^2\sin(\theta) = F\\
(l+ml^2)\ddot\theta+mgl\sin(\theta) = -ml\ddot x\cos(\theta)
$$ * 使用现成的仿真软件 * 游戏模拟器 ### Obtaining a model ###
在MDP中我们重复地执行动作,执行m次试验,每个试验进行了T次。 
通过选择来学习一个预测模型,而:
比较流行的预测模型有: *
线性模型:
*
带有特征映射的线性模型:
* 神经网络
应用模型: - 决策模型(Deterministic
Model):
- 随机模型(Stochastic
Model):
Value function approximation
如何直接近似而不使用离散化?
主要的想法: - 获得一个MDP的模型或者模拟器 *
现在有来自状态空间S的样本,使用模型来估计他们的最佳期望奖励总和,也就是:
*
使用监督学习从来近似,让其作为一个状态的函数,例如:
对于有限状态的MDP中,值函数的更新如下:
而对于连续状态的值函数如下:
对于每个状态,我们使用有限的样本(来自)计算来估计.
Algorithm:
Fitted value iteration(Stochastic Model)

Computing the optimal policy
在得到值函数的估计之后,对应的策略为:
根据经验来估计最优策略: > For each action
:
> 1. Sample
using a model > 2. Compute
,
除了线性回归,其他的学习算法也可以用来估计.
参考: Reinforcement
Learning and Control