百度强化学习训练营培训心得


最近因为科研的需要和个人的兴趣,打卡了百度的强化学习训练营。通过几日的学习,梳理了之前零零散散地学习的强化学习知识,让我对强化学习建立了更为系统的理解,从而能够更好地应用到自己的研究和学习中。
课程主体分为6个部分。分别是百度自研的PaddlePaddle介绍以及深度学习基础、强化学习的基本概念介绍、基于表格型方法求解强化学习、基于神经网络方法求解强化学习、基于策略梯度求解强化学习以及在连续动作空间上求解强化学习。

1.平台和框架介绍

课程所用到的平台和框架主要是百度自研的AI Studio和PaddlePaddle框架。因为之前学习用到的框架主要是pytorch、tensorflow和keras,对此了解并不是很多。但是如果之前有相关的研究基础的话,还是比较容易上手的。Paddle框架下也提供了各种定义好的神经网络,直接调用也就ok了。课程比较合理的地方在于,AI studio也提供了GPU的算力卡,如果用Paddle框架的话比较方便在上面调用。
另外值得一提的是所开发的Parl库,这个库里面提供了各种经典强化学习算法的代码实现,很多也可以直接调用。对于初学者来说也是比较容易上手的。

2.强化学习基础

该部分内容主要引入了强化学习的基本概念和应用场景。强化学习中的最重要的研究对象是 a g e n t agent agent e n v i r o n m e n t environment environment a g e n t agent agent是需要控制的对象。基础部分研究的是单个 a g e n t agent agent的控制,当然在实际工程中很多也是多个 a g e n t agent agent交互的场景。 E n v i r o n m e n t Environment Environment是和 a g e n t agent agent交互的环境,当agent的动作产生之后,也会对 e n v i r o n m e n t environment environment进行一定的改变。实际上强化学习比较强调的是正是 a g e n t agent agent e n v i r o m e n t enviroment enviroment之间的交互。强化学习的三要素: s t a t e state state状态、 a c t i o n action action动作和 r e w a r d reward reward奖励。

在这里插入图片描述

3.基于表格型方法求解强化学习

这部分主要讲了强化学习中两种重要的value-based方法,Q-learning方法和sarsa。需要了解的是马尔科夫过程中的四元组<S,A,P,R>。value-based方法的核心在于把每个离散的状态的value进行了表征,从而在当前的状态下,可以利用每个状态对应的action到达下一状态下value最好的状态。
Sarsa算法是一种固定策略的方法,其估计的是动作值函数 q ( s , a ) q(s, a) q(s,a), 即估计在策略\pi下对于任意状态s上所有可能执行动作a的动作值函数 q π ( s , a ) q_{\pi}(s,a) qπ(s,a)。其动作值更新的公式为:
q ( s t , a t ) ← q ( s t , a t ) + α [ r t + 1 + γ q ( s t + 1 , a t + 1 ) − q ( s t , a t ) ] q(s_{t},a_{t})\leftarrow q(s_{t},a_{t})+\alpha [r_{t+1}+\gamma q(s_{t+1},a_{t+1})-q(s_{t},a_{t})] q(st,at)q(st,at)+α[rt+1+γq(st+1,at+1)q(st,at)]
Q-learning算法是一种非固定策略的强化学习方法,其动作值更新公式如下:
q ( s t , a t ) ← q ( s t , a t ) + α [ r t + 1 + γ m a x a ( q ( s t + 1 , a t ) ) − q ( s t , a t ) ] q(s_{t},a_{t})\leftarrow q(s_{t},a_{t})+\alpha [r_{t+1}+\gamma \underset{a}{max} (q(s_{t+1},a_{t}))-q(s_{t},a_{t})] q(st,at)q(st,at)+α[rt+1+γamax(q(st+1,at))q(st,at)]
可以看到在动作值更新的过程中,选择动作进入下一个状态的时候,它选择的是使得下一个状态的reward最大的策略,而这显然不是固定的。这样导致的结果就是,q-learning是一种比较冒险和激进的算法,而sarsa算法是一种比较稳定和保守的算法,需要根据实际应用的需求选用。

4.基于神经网络方法求解强化学习

在基于表格型方法求解强化学习的过程中,当状态和动作的数量都比较有限的情况下是比较容易实现的。但是在下围棋,以及机器人的控制等问题中,显然状态数量是非常高的,动作的策略空间也非常高,在这样的情况下就可以引入神经网络对Q-表格进行近似。
在这里插入图片描述
使用值函数进行近似有两个优点,分别是:
(1)仅需存储有限的参数;
(2)状态泛化,相似的状态可以输出一样;
利用神经网络近似Q-表格的方法就被称作是DQN方法。需要注意的是,DQN算法引入了一个叫做replay-memory的网络,用于比较方便地从样本池中选取样本进行训练,这个技巧在后面的DDPG网络中也会用到。

5.基于策略梯度求解强化学习

基于策略梯度的方法和value-based方法不同之处在于,这是一种随机的策略。在输出的时候是每个策略的概率 π θ ( a t ∣ s t ) \pi_{\theta}(a_t|s_t) πθ(atst)
在这里插入图片描述
需要注意的是在策略梯度算法中,计算策略梯度的两种方法分别是蒙特卡洛方法和时序差分方法。课程中详细介绍的是蒙特卡洛方法,其中计算公式如下。
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n G t n ∇ l o g π θ ( a t n ∣ s t n ) \nabla \bar{R}_{\theta} \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1} ^{T_n} G_t^n \nabla log \pi _\theta(a_t^n|s_t^n) RˉθN1n=1Nt=1TnGtnlogπθ(atnstn)

6.在连续动作空间上求解强化学习

前述的 Q-learning、sarsa算法主要处理的是离散的动作空间上的强化学习,离散的动作空间意味着动作是离散的。而在实际的很多例子中,例如自动驾驶、四轴飞行器的控制等,需要处理的问题是连续的动作空间,这个时候传统的方法就不再适用了。因此本节主要讲述了DDPG(Deep Determined Policy Gradient)的强化学习方法。
DDPG也借鉴了DQN的思想,采用了神经网络的技巧在里面,也是一种确定性策略的方法。它主要采用了Actor-Critic的结构,一边学习Q-网络 Q w ( s , a ) Q_w(s,a) Qw(s,a)(DQN只学习Q-网络),一边学习策略网络 a = μ θ ( s ) a=\mu_\theta(s) a=μθ(s)。需要注意的是,为了稳定 Q_target,DDPG分别给Q-网络和策略网络分别设计了一个target_network,所以在实际应用中,DDPG算法一共有4个网络。
在这里插入图片描述
DDPG的算法实现其实还是比较复杂的,需要花一点时间才能够理解。但是提供的PARL库已经实现了相关的算法,可以直接对策略网络中的结构进行修改实现想要的功能,还是比较方便的。

7.总结和展望

课程主要是对强化学习中的一些比较基本的,当前比较热门的常见算法进行了讲解,强化学习的理论和方法还比较艰深,比如课程中提到的multi-agent的方法以及meta-learning等等,都需要在理解了基本的强化学习之后才能更好的尝试。而以电气行业为例,实际上multi-agent的方法等才是更加实用和面向实际的,因此本次课程也只是一个开始。后面还需要不断加深巩固RL方面的理解和学习。
最后,感谢科科老师的讲解和相关工作人员的组织,也感谢百度公司提供的这次机会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值