参考视频:周博磊强化学习纲要
阅读本文前需要对强化学习model-free领域有一定的了解,可以查看我之前的文章:《强化学习实践教学》,《强化学习纲要(周博磊课程)》
之前介绍的算法例如DQN,DDPG,PPO都是**model-free(无模型)**的,这也是比较多人的研究领域,这些算法是智能体直接和环境互动获得数据,不需要拟合环境模型,智能体对环境的认知只能通过和环境不断大量的交互来实现。这样做的优点是通过无数次与环境的交互可以保证智能体得到最优解。往往在游戏这样的没有采样成本的环境中都可以用model-free。
接下来我介绍强化学习的另一个领域model-based(基于模型),在这个领域中,智能体通过与环境进行交互获得数据,根据这些数据对环境进行建模拟合出一个模型,然后智能体根据模型来生成样本并利用RL算法优化自身。一旦模型拟合出来,智能体就可以根据该模型来生成样本,因此智能体和环境直接的交互次数会急剧减少,缺点是拟合的模型往往存在偏差,因此model-based的算法通常不保证能收敛到最优解。但是在现实生活中是需要一定的采样成本的,因此采样效率至关重要,因此model-free是一个提升采样效率的重要方式。
model-based的强化学习算法分为两类,一类是值函数优化(value optimization),一类是策略优化(policy optinmization)。
在model-based RL中不仅仅有原来model-free中的结构,还多了一个model,因此原本在model-free中用来训练价值函数和策略函数的experience有了第二个用处,那就是model learning,拟合出一个适当的环境模型。
环境模型的构成
环境通常由两部分构成,第一就是状态转移矩阵,也就是说在知道现在的状态和采取的动作的情况下,转移到其他各个状态的概率。第二就是奖励函数,在知道现在的状态和采取的动作的情况下,我们可以得到的奖励是多少。
例如在围棋中的规则是十分清楚的,因此状态之间的转移也是十分清楚的,因此能够打败人类的围棋AI AlphaGO也是用model-based强化学习算法得到的。还有一种是物理模型,现实中的物理模型往往有固定的计算公式,也可以轻松得到其状态转移。
通常假定状态转移和奖励函数是相互独立的关系。
环境模型的训练
那么如何训练一个环境使其符合预期呢?
这里我们只需要用监督学习的方法,收集真实环境中的数据 S t , A t → R t + 1 , S t + 1 {S_t,A_t \rightarrow R_{t+1},S_{t+1}} St,At→Rt+1,St+1,通过收集很多组这样的数据就能把这个当成样本,输入到环境的神经网络中进行学习。
这里列举几个常用的模型:
- Table Lookup Model
- Linear Expectation Model
- Linear Gaussian Model
- Gaussian Process Model
- Deep Belief Network Model
我们通常要对模型的准确率进行评估,如果准确率低,那么应当采用model-free的方法。
Dyna
这是Richard Sutton在1991年提出的算法,在现阶段的强化学习算法中并不足够强,但是是我们理解model-based方法的例子。在通过真实的经验数据学习出来的环境模型中,我们刻意采集大量的虚拟数据,这样就能和填补真实数据采集不到的空白,一起去训练值函数模型和策略网络。
Model-based 的策略优化(Policy Optimization)
在model-free的policy gradient中,条件转移概率是不需要的。但是在model-based知道转移概率的情况下,就能改进我们的策略优化。
基于环境模型的策略优化受控制论的影响是非常深远的。因为控制问题也是优化一个controller,而环境通常叫做system dynamics,可以定义成知道现在状态和采取的控制措施,得到的下一个状态。这也是最优控制(optimal controls)的内容,在满足动态转移条件的情况下去优化控制方法,降低cost函数。这和强化学习有很深远的联系。
a
r
g
m
i
n
a
1
,
.
.
.
,
a
T
∑
t
=
1
T
c
(
s
t
,
a
t
)
s
u
b
j
e
c
t
t
o
s
t
=
f
(
s
t
−
1
,
a
t
−
1
)
arg min_{a_1,...,a_T} \sum_{t=1}^T c(s_t,a_t) \ \ \ \ subject \ to \ s_t = f(s_{t-1},a_{t-1})
argmina1,...,aTt=1∑Tc(st,at) subject to st=f(st−1,at−1)
在环境模型未知的情况下,我们可以结合模型学习和轨迹优化两种方法。
第一种算法是用监督学习训练出环境模型之后,直接采用控制算法(如LQR)来计算最优路径。
第二种算法是为了防止训练数据采样不充分,在训练出环境模型之后,自己产生新的数据加入训练当中。
第三种算法是一种非常有名的算法MPC(Model Predictive Control),是自动驾驶和控制中的常用算法。我们对整个轨迹进行优化,但是我们实际执行时只执行第一步,然后把这一步的数据加入到训练数据集中,个人理解是第一步的误差都是比较小的,数据都比较可靠。
最后第四种算法是把policy learning、model learning、optimal control结合起来。
-
初始化策略函数产生随机策略对真实环境的数据进行收集。
-
用收集的数据训练自己的环境模型。
-
通过环境模型产生的数据来对策略进行优化。
-
用优化后的策略去环境模型中产生新的轨迹,并将新的轨迹数据加入训练数据当中
-
返回第二条。
下面是两种模型的选择:
model-based RL在机器人的应用
首先是摄像机捕捉画面得到一个3D坐标,我们需要把3D坐标转换成机械臂各个部位旋转的角度,我们可以把奖励函数设置成和Target坐标的距离来进行训练。这里用了Gaussin Process来做环境模型。像这种低成本的机械臂有很大的误差,需要对不确定性有很好的建模。