——记2020.6.16百度“强化学习7日打卡营”在线课程用着百度提供免费的GPU资源,打定主意要跟上百度每个PaddlePaddle相关的公开课程。6月16号开始的是强化学习相关
——记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值。
固定目标网络 + 经验回放: