PaddlePaddle飞桨入门之旅(三)

1 篇文章 0 订阅

——记2020.6.16百度“强化学习7日打卡营”在线课程

用着百度提供免费的GPU资源,打定主意要跟上百度每个PaddlePaddle相关的公开课程。

6月16号开始的是强化学习相关的课程,用五天时间讲解强化学习的基本问题,围绕百度团队开发的PARL框架对强化学习进行入门讲解。

五天视频课程内容:

一、强化学习初印象

强化学习:智能体agent与环境env交互,根据反馈奖励reward指导动作action;通过不断学习训练,完善某一任务的动作策略。

分类:

 强化学习监督学习
 侧重决策认知
 序列数据独立同分布数据
 延迟奖励即时奖励

后续4次讲解课程,由浅入深地分别从连续/离散动作、连续/离散环境角度讲解强化学习问题定义与实现。

二、基于表格型方法求解RL

离散动作(可数动作状态,例如控制二维平面的机器人,输出控制是前后左右四个运动方向)

离散环境(环境状态可数,如Grid形式地图,机器人位置和当前反馈都是可数状态)

Q表格

当前状态s下,执行动作a的收益为r,如果每次决策只看本次动作reward,智能体的动作策略就成为极为短视的greedy算法,无法解决复杂的对抗问题;

需要考虑状态s下执行动作a的综合预期收益,即从较长远角度考虑动作a的收益,引入Q度量状态s下动作a的综合预期收益,即从本次动作a后,一直到后续任务结束,获得的总reward期望,记为Q。

理论上对Q的计算应该是在状态s下执行动作a后,对后续所有可能执行的action(直到任务结束)及收益进行概率加权求和(状态转移概率),即以类似全概率公式形式计算所有后续任务分支的期望收益,作为状态s下执行动作a的Q。

维护一张Q表格,即不同状态s下所有action对应的Q值(由于状态s和动作a都是离散可数的,所以可以维护这样一张Q表格)。

通过TD时序差分方式更新Q表格

对于model-free问题,没有现成的奖励函数Reward function,需要不断与环境交互才能获得动作奖励,无法从理论上根据全概率公式更新Q值。

通过不断与环境交互,获得大量交互数据,对每条动作轨迹Trajectory(从初始状态,执行不同动作,直到任务结束),从终止步反推计算每个状态s对应动作a的Q。

对于终止步t,此状态s下动作a的Q值是当前动作的反馈Rt(因为没有后续动作了,任务到此结束);对于前一步t-1的Q值Qt-1,计算为当前步骤奖励Rt-1加上后续t步奖励:Qt-1=Rt-1+gamma*Gt。

gamma是衰减因子,表示中长期收益相对于近期收益的衰减,根据不同任务设置不同衰减因子,例如股票交易公司的投资中不能过分关注长期收益,而一些复杂的对抗游戏例如围棋就需要关注长期收益。

根据交互获得的每条轨迹T都对Q表格中Q值进行更新,但由于从任务开始到终止存在很多条轨迹,将每条轨迹计算出来的Q作为目标值targetQ,对Q的更新根据差值逐步微调,通过学习率学习当前Q与目标Q值的差值更新Q:

targetQ = Rt+1 + gamma * Q(St+1, At+1)

Q(St, At) <--- Q(St, At) + alpha * [Rt+1 + gamma * Q(St+1, At+1) - Q(St, At)]

通过不断与环境交互获得交互轨迹更新Q表格,各个Q值会逐渐逼近对应的理论Q值(ground truth)。

在探索过程中逐步更新Q表格,探索过程中根据Q表格选取动作(以一定概率选择最大收益动作或随机生成动作,ε-greedy更新),每次更新Q表格时需要输入St, At, Rt+1, St+1, At+1,因此这种Q表格学习方法称为:Sarsa.

注意:这里的Rt+1是状态St下执行动作At获得的收益,Sarsa更新时只需要获得后续状态St+1和动作动作At+1即可,无需实际执行At+1并获取奖励。

与之对应的Q-learning算法,探索过程中默认每次从Q表格中选择对应状态下收益最大的动作s(完全依据Q表格选择动作,不用额外的动作选择策略),因此学习Q之前无需获取下一步动作。

Sarsa是一种On policy策略,优化实际执行的动作策略;Q-learning是一种Off-policy方式,优化探索行为策略。

三、基于神经网络求解RL

DQN:Deep Q-learning,用神经网络代替Q表格

针对连续环境或者不可数状态的情况,Q表格变得无限大,实际中无法穷举所有环境状态;

此时可以DQN用神经网络逼近这张无限大的Q表格,优点在于:

Q表格占用内存极大,存储有限个参数;查表效率低;

神经网络可以实现状态泛化,相似状态输出一致。

用神经网络代替Q表格,神经网络的输入是当前状态,神经网络输出对应此状态不同动作action的预期Q值;

输出数据的标签即为Q-learning算法中的目标Q值,即第二节中的targetQ。

DQN两个创新点:

(1) 经验回放 Experience replay

设计样本经验池(Trajectory的队列),存放历史交互轨迹,去除序列决策的样本关联性,提高样本利用率;

充分利用off-policy优势。

(2) 固定Q目标 Fixed Qtarget

监督学习中网络输出的label是固定的/稳定的,学习中用输出和目标差值进行梯度下降学习;

DQN中,网络输出的label的Qtarget,也根据神经网络获得;label如果实时变化,不利于学习过程的收敛;

通过固定Q目标,即拷贝一份神经网络(target model),在一段时间内固定网络参数用于生成Qtarget,对原网络参数进行学习更新;学习若干步后,再将新的网络参数更新到target model。

DQN流程图:

PARL中DQN的实现:

四、基于策略梯度求解RL

基于策略Policy-based的RL方法:策略梯度Policy Gradient

DQN用神经网络代替Q表格,网络输出此时不同action对应的Q预测值,测试过程中根据Q预测值选择的action一般是确定性的策略,比如选择最大Q预测值对应的action。

实际上有些任务,由于环境存在随机性等原因,输出动作更倾向于随机策略,例如和陌生对手猜拳,输出石头、剪子、布的概率都为1/3时是比较合理的;

策略梯度Policy Gradient方法用Policy网络代替Q网络,Policy网络输入某种状态,输出是此状态下应执行不同action的概率,例如{石头:0.33,剪子:0.33, 布:0.33}。

利用softmax函数实现随机动作策略,softmax函数将多个神经元输出映射到(0,1)取件,通过归一化即可实现随机动作策略的输出方式。测试时,根据不同action的概率进行sample(),依概率输出一个action。

Episode:一幕游戏,或者一次完整交互,从任务开始到任务终止的状态转移过程成为对应的轨迹Trajectory。

根据条件概率公式可以计算此Trajectory对应的总回报,某个状态s下执行动作a的期望回报即可通过全概率公式计算得到。

实际中无法通过穷举所有trajectory来计算理论的期望回报,只能通过多次采样,用采样数据逼近理论值。

优化策略网络:

用策略网络逼近最优策略函数。

Policy网络的目标:期望回报越大越好,即优化目标为期望回报,通过梯度上升优化策略网络。通过期望回报对网络参数求导,利用梯度上升方法优化目标。

策略网络优化的Loss函数:

网络输出action概率向量与实际动作action的交叉熵,因为实际action不一定是最优action,因此用Gt即动作收益做加权,Gt越大则说明此Loss越应该重视;Loss加负号,就可以用深度学习框架中的优化器minimizer通过梯度下降实现梯度上升的效果。

五、连续动作空间求解RL-DDPG

DDPG-Deep Deterministic Policy Gradient

目的:将DQN扩展到连续动作空间。(动作取值是连续的、不可数的)

借鉴DQN的经验回放和固定Q网络。

采用策略网络直接输出确定性动作。

Actor-Critic结构。

DQN输出不同动作(有限多个)的取值概率,而对于一些连续动作问题(例如输出模拟控制电压值,是一个连续的数值),动作本身是一个连续的值。

DDPG同样使用策略网络,但输出的不是action的取值概率,而是action的值,(用tanh函数替换softmax,action有几维就输出几维的数值向量)。

Actor-Critic结构:

策略网络输出action值,Q网络类似DQN输出对应的期望Q值。

Q网络类似DQN,通过与Qtarget的差值更新网络;

策略网络优化目标是提高Q网络的预期Q值。

固定目标网络 + 经验回放:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值