强化学习部分经典算法初探

前言

在最近参加了百度在AiStudio上的一个强化学习入门课程-强化学习7日打卡营-世界冠军带你从零实践,课程描述“百度NeurIPS全球顶会冠军团队亲自授课,7日全直播手把手教学,5大实战,带你从零实践强化学习!”,课程以B站直播+网站录播+课后作业的形式展开,结课后总结一下课上提到的算法。

正文

在强化学习中,有两大类方法,一种基于值Value-based,一种基于策略Policy-based

  • Value-based算法的典型代表为Q-learning和SARSA,将Q函数优化到最优,再根据Q函数取最优策略。
  • Policy-based算法的典型代表为Policy Gradient,直接优化策略函数。

值函数法

值函数方法是通过已经有的数据采用贪婪算法每次从已有数据中去找最逼近当前状态的且获得的奖励最大的动作,以此作为下一步的action的方法。

Q_learning

目前在众多的值函数算法中,最早也是最成功的算法就是Q-learning算法。Q-learning采用Q表格的方式存储Q值(状态动作价值),决策部分采用 ε-greedy 方式增加探索,算法依赖Q表选取action,每次选取后,将state、选取的action以及获得的reward保存到Q表中,在每次选取动作的时候采用α策略,即有α的概率利用已经学习到的数据,有(1-α)的概率随机探索。Q-learning是off-policy的更新方式,更新learn()时无需获取下一步实际做出的动作next_action,并假设下一步动作是取最大Q值的动作。更新Q表公式如下:

Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ max ⁡ a Q ( S t + 1 , a ) − Q ( S t , A t ) ] Q(S_t,A_t)←Q(S_t,A_t)+\alpha[R_{t+1}+\gamma\max\limits_{a}Q(S_{t+1}, a) - Q(S_t,A_t)] Q(St,At)Q(St,At)+α[Rt+1+γamaxQ(St+1,a)Q(St,At)]

Sarsa

“Sarsa” 全称是state-action-reward-state'-action',是当前的 S(状态)、A(动作)、R(奖励)与下一步 S’(状态)、A’(动作)的组合,目的是学习特定的state下,特定action的价值Q,最终建立和优化一个Q表格,以state为行,action为列,根据与环境交互得到的reward来更新Q表格,采用on-policy的更新方式,先做出动作再更新,决策部分与Q-learning相同,采用 ε-greedy 方式增加探索。更新公式为:

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)←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)]

DQN

基于值函数的强化学习中最成功的算法就是DQN(Deep Q Network)算法,同时,还有在DQN算法上改进的DoubleDQN, DuelingDQN, DRQN以及Rainbow等。Q-learning和Sarsa中使用的表格型方法存储的状态数量有限,当面对围棋或机器人控制这类有数不清的状态的环境时,表格型方法在存储和查找效率上都受局限,DQN提出使用神经网络来近似替代Q表格,解决了这一局限。
本质上,DQN还是一个Q-learning算法,更新方式一致,且为了更好的探索环境,同样的也采用 ε-greedy 方法训练。在Q-learning的基础上,DQN提出了两个技巧使得Q网络的更新迭代更稳定:

  • 经验回放(Experience Replay):主要解决样本关联性和利用效率的问题,使用一个经验池存储多条经验 e t = ( s t , a t , r t , s t + 1 ) e_t=(s_t,a_t,r_t,s_{t+1}) et=(st,at,rt,st+1),供神经网络去训练得到参数,优化参数。在每个时间步t,将agent与环境交互得到的转移样本存储到回放记忆单元 D = { e 1 , . . . , e t } D=\{e_1,...,e_t\} D={e1,...,et}中。
  • 固定Q目标(Fixed-Q-Target):主要解决算法训练不稳定的问题,复制一个和原来Q网络结构一样的Target Q网络,用于计算Q目标值。

策略梯度法

基于策略梯度的强化学习思想是通过各种策略梯度方法的直接优化,使用深度神经网路参数化表示的策略,这类方法在每次迭代中都需要采样batch大小为N的数据来更新策略梯度,主要内容是将Actor-Critic的架构带入到策略梯度方法中。基于策略梯度的强化学习包括DDPG(Deep Deterministic Policy Gradient)、TRPO(Trust region policy optimization)、PPO(Proximal Policy Optimization)等算法,同时策略梯度PG的强化学习也是强化学习主要的研究方向。

PG

在PG(Policy Gradient)算法中,我们的Agent又被称为Actor,Actor对于一个特定的任务都有自己的一个策略π,策略π通常用一个神经网络表示,其参数为θ。由于PG采用神经网络拟合策略函数,需要计算策略梯度用于优化策略网络:

  • 优化的目标是在策略π(s,a)的期望回报:所有的轨迹获得的回报R与对应的轨迹发生概率p的加权和,当N足够大时,可通过采样N个Episode求平均的方式近似表达。

R ˉ θ = ∑ τ R ( τ ) p θ ( τ ) ≈ 1 N ∑ n = 1 N R ( τ ) \bar{R}_\theta=\sum_\tau R(\tau)p_\theta(\tau)\approx\frac{1}{N}\sum\limits_{n=1}^{N}R(\tau) Rˉθ=τR(τ)pθ(τ)N1n=1NR(τ)

  • 优化目标对参数θ求导后得到策略梯度:

▽ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ▽ l o g π θ ( a t n ∣ s t n ) \bigtriangledown\bar{R}\theta\approx\frac{1}{N}\sum\limits_{n=1}^{N}\sum\limits_{t=1}^{T_n}R(\tau^n)\bigtriangledown log\pi_\theta(a_t^n\mid s_t^n) RˉθN1n=1Nt=1TnR(τn)logπθ(atnstn)

DDPG

DDPG(Deep Deterministic Policy Gradient)是Actor-Critic 和 DQN 算法的结合体。从DDPG这个名字看,是由D(Deep)+D(Deterministic )+ PG(Policy Gradient)组成。
DDPG是DQN的扩展版本,可以扩展到连续动作的控制空间。因此它在DQN的基础上增加了一层策略网络,用于输出动作值。DDPG需要一边学习Q网络,一边学习策略网络。

DQN与DDPG对比

DDPG有4个网络,分别是 Actor当前网络、Actor目标网络、Critic当前网络、Critic目标网络:

  • Actor当前网络:负责策略网络参数θ的迭代更新,负责根据当前状态S选择当前动作A,用于和环境交互生成S′,R。
  • Actor目标网络:负责根据经验回放池中采样的下一状态S′选择最优下一动作A′。网络参数θ′定期从θ复制。
  • Critic当前网络:负责价值网络参数w的迭代更新,负责计算负责计算当前Q值Q(S,A,w)。目标Q值

y i = R + y Q ′ ( S ′ , A ′ , w ′ ) y_i=R+yQ'(S',A',w') yi=R+yQ(S,A,w)

  • Critic目标网络:负责计算目标Q值中的Q′(S′,A′,w′)部分。网络参数w′定期从w复制。

目标网络+经验回放

DDPG从当前网络到目标网络的复制和DQN不一样。回想DQN,我们是直接把将当前Q网络的参数复制到目标Q网络,即w′=w, DDPG这里没有使用这种硬更新,而是使用了软更新,即每次参数只更新一点点,即:

w ′ ← τ w + ( 1 − τ ) w ′ θ ′ ← τ θ + ( 1 − τ ) θ ′ w′←\tau w+(1−\tau)w′ \\\theta'←\tau\theta+(1-\tau)\theta' wτw+(1τ)wθτθ+(1τ)θ

参考资料

  • 《Reinforcement Learning:An Introduction》
  • 伯克利2018 Deep RL课程:http://rail.eecs.berkeley.edu/deeprlcourse/
  • 强化学习库 PARL:https://github.com/PaddlePaddle/PARL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值