强化学习(Reinforcement Learning)学习笔记

本文深入解析强化学习核心算法,涵盖Q-learning、Sarsa、Deep Q Network及其变种,Policy Gradient,Actor-Critic架构,及最新进展如Distributed Proximal Policy Optimization。详细对比各算法特性,提供Python实现指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

根据讲义为网易云课堂的强化学习(Python):https://study.163.com/course/courseMain.htm?courseId=1003598006
github代码:https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow/tree/master/contents

Q-learning

在这里插入图片描述
在这里插入图片描述
Tips:此处的Q(s,a)表示在s状态下进行a动作的得分,ε-greedy的意思是我们面对每个状态的Q表时,有ε的概率直接按照表中最优值选择下一步行动,而1-ε概率随机动作。这时候对每步的Q进行更新,α为学习率。Q(s1,a2)现实的意思是,假设s1时选择了a2到达s2,然后采取某种行为,这里取大得分的行为,然后把该行为即Q(s2,a2)乘上γ并加上奖励r,这样得到的R表示我从s1开始实实在在选择a2这一步能得到的奖励R,其中γ表示记忆程度,再用现实的Q减去估计的Q来进行更新
在这里插入图片描述

Sarsa

Sarsa(0)

在这里插入图片描述
Tips:Sarsa跟Q-learning的区别在于Q-learning每步都会取下一步现实的最大值,而Sarsa不会,相比来说可以理解为Q-learning为到达目标永远最优(付出一切代价)而Sarsa则会尽量避开大代价。下一个 state_, 和下一个 action_ 将会变成他真正采取的 action 和 state. 和 Qlearning 的不同之处就在这. Qlearning 的下个一个 state_ action_ 在算法更新的时候都还是不确定的 (off-policy). 而 Sarsa 的 state_, action_ 在这次算法更新的时候已经确定好了

Sarsa(λ)

在这里插入图片描述
Tips:λ为脚步衰减值,当λ为0时,即只记在reward前的最后一步,λ为1时即记住reward前的每一步,而我们的要求是离reward前的步骤越近它记得越好
在这里插入图片描述
Tips:此处第一行的意思是每个结点访问的次数,第二三行的意思是累积访问它的eligibility trace,简单来说就是访问某结点次数越多,说明得到reward途中访问该点的可能性越高,即不可或缺性。
在这里插入图片描述
Tips:相比之上多了一个δ错误差即真实值与估计值之差,E即为上文提到的不可或缺值,这样对于每个结点的Q值进行跟不可或缺值有关的更新,再对不可或缺值进行λ的缩减,意思就是对于得到reward前,经过的每个点都进行标记,越近表示不可或缺值越高且λ缩减越少,进行Q表更新时更新幅度更大,对于达到reward途中经历的点根据到达的次数即不可或缺值E和距离reward的距离进行λ衰减

Deep Q Network

Nature DQN

在这里插入图片描述
在这里插入图片描述
Tips:相比于Q-learning的Q表,此处每步的Q值由神经网络计算出来,此为Q估计,而为了更新神经网络的参数需要Q现实,需要 a1,a2正确的Q值, 这个Q值我们就用之前在Q-learning中的 Q现实来代替,后文提到的target-net得到的就是,这样就能通过Q现实和Q估计来更新网络
在这里插入图片描述
Tips:首先初始化网络等,选择动作a时和上文方法一样根据概率或者随机选,执行action接受reward和新的state,将新的transition(当前状态,行动,奖励,下一个状态)样本存入D中,从D中随机抽取一个minibatch的transition,根据Q表得到Q现实的值y,再由y和Q估计的差值来对网络参数θ进行梯度下降,每C步执行一次更新

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
Tips:搭建两个神经网络,target_net用于预测q_target值,他不会及时更新参数。eval_net用于预测q_eval,这个神经网络拥有最新的神经网络参数。不过这两个神经网络结构是完全一样的,只是里面的参数不一样,两个神经网络是为了固定住一个神经网络(target_net)的参数,target_net是eval_net的一个历史版本,拥有eval_net很久之前的一组参数,而且这组参数被固定一段时间,然后再被eval_net的新参数所替换,而eval_net是不断在被提升的。eval_net是得出Q估计,与Q现实得到误差而更新网络的参数

Double DQN

在这里插入图片描述
在这里插入图片描述
Tips:过估计是指估计得值函数比真实值函数要大,其根源主要在于Q-Learning中的最大化操作,相比nature DQN,DDQN的Q现实进行了更改,原本的Qnext=max(Qnext(s’,a_all)),现在的Qnext=Qnext(s’,argmax(Qeval(s’,a_all)),意思就是使用现成的eval_net估计除Q现实中的Qmax(s’,a’)的最大值,然后用这个值来选择Q现实中的Q(s’)
在这里插入图片描述

Prioritized replay

在这里插入图片描述
Tips:Prioritized replay多了一个重要程度排序,也就是对Q现实-Q估计进行排序,该差值越大,则说明预测精度不高,则重要度就高。举个例子就是一个行动的某一步reward为10,某一步reward为-1,则Prioritized replay则会使算法更多的重视reward为10的那一步,采取优先级的算法为SumTree
在这里插入图片描述
Tips:这就是Sumtree,最下层存放样本的所有p,二叉树的其余结点皆为两个子结点的和,先将p的总和除以batch-size,然后在每个区间里随机选取一个数。比如在第区间[21-28]里选到了24,就按照这个24从最顶上的42开始向下搜索。首先看到最顶上42下面有两个child nodes,拿着手中的24对比左边的child 29,如果左边的child比自己手中的值大,那我们就走左边这条路,接着再对比29下面的左边那个点13,这时,手中的24比13大,那我们就走右边的路,并且将手中的值根据13修改一下,变成24-13=11.接着拿着11和13左下角的12比,结果12比11大,那我们就选12当做这次选到的priority,并且也选择12对应的数据。该方法只多了一个ISWeights,这个正是刚刚算法中提到的Importance-Sampling Weights,用来恢复被Prioritized replay打乱的抽样概率分布。
在这里插入图片描述

Dueling DQN

在这里插入图片描述
在这里插入图片描述
Tips:简单来说意思就是nature DQN每个网络比如eval_net直接输出的是Q_eval,现在更改eval_net里的结构,输出的是新的Q(value+advantage),即Q(s,a) = 状态的所有动作Q期望+action-value的优势程度,即前者是对某个state的价值,此时动作选择的影响不大,后者更关心动作的选择。
在这里插入图片描述

Policy Gradient

在这里插入图片描述
Tips:相比于前面的Q-learning和DQN,该方法跳过了每步计算value的步骤,它的做法是直接输出action而不是action的value。好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。这里也用了神经网络的方式,所以第一步也是初始化θ,然后对每一步进行遍历更新θ,Πθ的意思是在某一状态采取某一个行为的概率,概率取决于神经网络的输出,log(prob)表示若概率越小,则反向越大,vt是梯度下降的幅度也就是下降趋势也就是当前当前状态s下采取动作a获得的奖励,这样结果就是如果在prob很小的情况下得到了一个大的reward也就是大的vt,那么就是选择了一个概率小的动作,但得到了一个好的reward,此时大幅度更新参数
在这里插入图片描述
Tips:使用Policy Gradients的好处是能够对连续型进行评估,坏就坏在它是回合制更新的方式,也就是整轮结束后才对每步进行更新,而不是单步更新

Actor-Critic

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Tips:Actor-Critic算法分为两部分,我们分开来看actor的前身是policy gradient他可以轻松地在连续动作空间内选择合适的动作,value-based的Qlearning做这件事就会因为空间过大而爆炸,将他们合并就成了Actor-Critic。这样的意思就是,Actor根据Critic网络提供的评分修改选择行为的概率,也就是Policy Gradients中的概率,如果critic表示该行为是好的,则加大幅度它的更新,反之则减小,而Critic则基于Actor的选择行为评判行为的得分(先有鸡还是有蛋的问题那么就来了)
在这里插入图片描述
在这里插入图片描述
Tips:td_error即是critic告诉它该步的好坏程度
在这里插入图片描述
在这里插入图片描述

Deep Deterministic Policy Gradient

在这里插入图片描述
在这里插入图片描述
Tips:此处的两个网络相比dqn复杂了一些

在这里插入图片描述
Tips:相比于Policy Gradient中选择action的根据prob的方式,Deterministic事直接选择某个行为,而不用根据分布随机筛选
在这里插入图片描述
Actor更新
在这里插入图片描述
Critic更新
在这里插入图片描述
Tensorboard说明

在这里插入图片描述
Tips:actor和critic中都有两个网络,这两个网络结构一样
在这里插入图片描述
Tips:简单来说,actor和critic中的target_net跟dqn的类似,都是隔几次跟eval_net同步。然后开始,我们的目的就是对c和a进行更新,对于每一步,actor中,更新eval_net,输入当前状态state,根据当前网络计算出动作,此时获得critic得出的该动作的价值,也就是Policy Gradient一样的利用critic的动作梯度和actor的参数梯度更新eval_net。接下来是critic,一样也是两个网络,更新critic的方法就是TD-error,Q_target-Q_eval的过程,前者就是根据critic中的target_net中得出,输入的是动作action(由actor提供),Q_eval就是输入当前状态state和当前动作action决定。说完了两个,最后的C_train由td_error和当前c也就是状态state来更新,a_train则由policy_grads和当前动作action来更新
在这里插入图片描述
Tips:总而言之,学习critic需要输入当前状态state和动作action和奖励reward和下个状态s_,action学习需要当前状态state和动作action

Asynchronous Advantage Actor-Critic

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Tips:A3C的算法实际上就是将Actor-Critic放在了多个线程中进行同步训练. 可以想象成几个人同时在玩一样的游戏,而他们玩游戏的经验都会同步上传到一个中央大脑。然后他们又从中央大脑中获取最新的玩游戏方法。
在这里插入图片描述
Tips:简单来说,有一个中央大脑Global_net和四个工人local_net,每个local_net就是上文的actor_critic模型中的一个,每个相互独立,相互独立的a_loss即actor_loss,c_loss即critic_loss。
在这里插入图片描述

Distributed Proximal Policy Optimization

Tips:普通的Policy Gradient中学习率也就是step size不好控制,该方法就是解决它的,简单来说就是更新之后的新策略做到和老策略差别不会太大
在这里插入图片描述
Tips:第一个for更新actor,该处加入了At也就是每步的优势,更新的时候是用新的policy除以旧的policy,再加上At(优势)来控制更新的幅度,后面的KL是一个惩罚项,来判断新旧policy差的程度,来控制新policy的更新幅度,也就是控制幅度在一定比例之内。第二个for更新critic,该部分跟上文相似,也就是使用td-error来更新。
在这里插入图片描述
Tips:每次更新时把oldpi复制成pi,此处的pi其实就是actor,然后根据上文的更新方法更新pi,此处的loss则是通过pi和oldpi和advantage也就是At决定。最后,这也可以采用多线程的方法,也就是类似A3C的更新方法,一个总的大脑PPO_net

The authoritative textbook for reinforcement learning by Richard Sutton and Andrew Barto. Contents Preface Series Forward Summary of Notation I. The Problem 1. Introduction 1.1 Reinforcement Learning 1.2 Examples 1.3 Elements of Reinforcement Learning 1.4 An Extended Example: Tic-Tac-Toe 1.5 Summary 1.6 History of Reinforcement Learning 1.7 Bibliographical Remarks 2. Evaluative Feedback 2.1 An -Armed Bandit Problem 2.2 Action-Value Methods 2.3 Softmax Action Selection 2.4 Evaluation Versus Instruction 2.5 Incremental Implementation 2.6 Tracking a Nonstationary Problem 2.7 Optimistic Initial Values 2.8 Reinforcement Comparison 2.9 Pursuit Methods 2.10 Associative Search 2.11 Conclusions 2.12 Bibliographical and Historical Remarks 3. The Reinforcement Learning Problem 3.1 The Agent-Environment Interface 3.2 Goals and Rewards 3.3 Returns 3.4 Unified Notation for Episodic and Continuing Tasks 3.5 The Markov Property 3.6 Markov Decision Processes 3.7 Value Functions 3.8 Optimal Value Functions 3.9 Optimality and Approximation 3.10 Summary 3.11 Bibliographical and Historical Remarks II. Elementary Solution Methods 4. Dynamic Programming 4.1 Policy Evaluation 4.2 Policy Improvement 4.3 Policy Iteration 4.4 Value Iteration 4.5 Asynchronous Dynamic Programming 4.6 Generalized Policy Iteration 4.7 Efficiency of Dynamic Programming 4.8 Summary 4.9 Bibliographical and Historical Remarks 5. Monte Carlo Methods 5.1 Monte Carlo Policy Evaluation 5.2 Monte Carlo Estimation of Action Values 5.3 Monte Carlo Control 5.4 On-Policy Monte Carlo Control 5.5 Evaluating One Policy While Following Another 5.6 Off-Policy Monte Carlo Control 5.7 Incremental Implementation 5.8 Summary 5.9 Bibliographical and Historical Remarks 6. Temporal-Difference Learning 6.1 TD Prediction 6.2 Advantages of TD Prediction Methods 6.3 Optimality of TD(0) 6.4 Sarsa: On-Policy TD Control 6.5 Q-Learning: Off-Policy TD Control 6.6 Actor-Critic Methods 6.7 R-Learning for Undiscounted Continuing Tasks 6.8 Games, Afterstates, and Other Special Cases 6.9 Summary 6.10 Bibliographical and Historical Remarks III. A Unified View 7. Eligibility Traces 7.1 -Step TD Prediction 7.2 The Forward View of TD( ) 7.3 The Backward View of TD( ) 7.4 Equivalence of Forward and Backward Views 7.5 Sarsa( ) 7.6 Q( ) 7.7 Eligibility Traces for Actor-Critic Methods 7.8 Replacing Traces 7.9 Implementation Issues 7.10 Variable 7.11 Conclusions 7.12 Bibliographical and Historical Remarks 8. Generalization and Function Approximation 8.1 Value Prediction with Function Approximation 8.2 Gradient-Descent Methods 8.3 Linear Methods 8.3.1 Coarse Coding 8.3.2 Tile Coding 8.3.3 Radial Basis Functions 8.3.4 Kanerva Coding 8.4 Control with Function Approximation 8.5 Off-Policy Bootstrapping 8.6 Should We Bootstrap? 8.7 Summary 8.8 Bibliographical and Historical Remarks 9. Planning and Learning 9.1 Models and Planning 9.2 Integrating Planning, Acting, and Learning 9.3 When the Model Is Wrong 9.4 Prioritized Sweeping 9.5 Full vs. Sample Backups 9.6 Trajectory Sampling 9.7 Heuristic Search 9.8 Summary 9.9 Bibliographical and Historical Remarks 10. Dimensions of Reinforcement Learning 10.1 The Unified View 10.2 Other Frontier Dimensions 11. Case Studies 11.1 TD-Gammon 11.2 Samuel's Checkers Player 11.3 The Acrobot 11.4 Elevator Dispatching 11.5 Dynamic Channel Allocation 11.6 Job-Shop Scheduling Bibliography Index
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值