![](https://img-blog.csdnimg.cn/20210419190447275.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
强化学习
文章平均质量分 80
强化学习DRL的众多理论和应用
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
iπ弟弟
野生程序喵,阿里云弹性计算后端开发工程师。
Github: https://github.com/ZYunfeii
展开
-
MATLAB强化学习使用全解析+附代码(以DDPG PPO为例)
MATLAB强化学习一篇搞定。原创 2024-03-21 18:45:17 · 3782 阅读 · 6 评论 -
Hindsight Experience Replay(HER)技术
提出缘由在许多强化学习环境中都存在稀疏奖励的问题,例如机械臂抓取物体,当抓到物体时给予一个正奖励,其余时候为零。再比如由n个硬币组成的环境,每个硬币都有正反两面记为{0,1}\{0,1\}{0,1},动作为选择其中一个硬币翻面,存在一个目标硬币状态组合(eg. {0,1,1,1,0...}\{0,1,1,1,0...\}{0,1,1,1,0...}),当抵达这个状态时才给予一个奖励。以上述这些环境为解决对象的RL算法程序中,经验池buffer会存储大量相同奖励reward的transition,这对于网络原创 2021-07-29 22:11:20 · 4005 阅读 · 0 评论 -
使用强化学习快速让AI学会玩贪食蛇游戏(轻量级二十分钟训练+代码)
如何让AI玩会贪食蛇,甚至比你厉害概述构建问题(强化学习求解的一般步骤)环境动作定义状态定义奖励设计训练奖励值收敛图效果代码概述所用技术:强化学习(Deep Reinforcement Learning),属于一种无监督学习,利用奖励rewardrewardreward教会智能体AgentAgentAgent在合适的场景做合适的决策。采用算法:试过两种算法D3QN和离散版本的PPO算法,最终采用离散版本PPO算法+GAE(PPO是我用过的性能最好的算法之一)编程语言与深度学习框架:Python3.原创 2021-07-10 19:54:23 · 18091 阅读 · 22 评论 -
一个深度强化学习航路规划(路径规划)github项目
地址:https://github.com/ZYunfeii/UAV_Obstacle_Avoiding_DRLREADMEThis is a project about deep reinforcement learning autonomous obstacle avoidance algorithm for UAV. The whole project includes obstacle avoidance in static environment and obstacle avoidance原创 2021-06-14 19:38:53 · 14360 阅读 · 27 评论 -
优先经验回放深度确定性策略梯度(DDPG+PER) torch代码
PER基础理论推两篇blog,自己不想写了,他们写得很好:https://blog.csdn.net/hehedadaq/article/details/100127962https://blog.csdn.net/gsww404/article/details/103673852实现方面注意点二叉求和树(Sum Tree)的实现(PER组织数据优先度的关键数据结构);experience在存储的时候会赋一个最大的优先度;Sum Tree里面的优先度何时更新?在计算td-error时进行更新原创 2021-05-30 21:53:15 · 5564 阅读 · 13 评论 -
利用深度强化学习训练机械臂环境
训练环境使用Movan写的机械臂环境:https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow/blob/master/experiments/Robot_arm/arm_env.py这个环境真的挺有意思的,主要可以和用户交互,真真切切感受到训练后智能体的聪明程度。提醒:python不要用3.8的,可能会和他的环境不兼容,我用的3.6的。这个环境主要采用pyglet包写的,详见Movan的教程:Movan教你如何从0写强原创 2021-05-19 11:52:09 · 3870 阅读 · 4 评论 -
深度强化学习off-policy类算法多进程加速训练实现(以TD3为例)
思路与on-policy类算法的多进程加速不同,off-policy算法的子进程虽然也是用来探索环境,但是它收集到的数据可以随时添加进主进程的buffer中。另外,off-policy算法子进程探索环境的策略也不必与主进程等待训练的策略保持完全一致(off-policy名称由来)。听起来off-policy的多进程实现要更容易一些,但是实际做起来却更困难。实现框架:一个主进程+n个子进程+1个主进程的子线程功能:主进程:训练网络,评价网络;n个子进程:探索环境,收集数据传回主进程放入主进程的bu原创 2021-05-17 19:46:15 · 1474 阅读 · 1 评论 -
DPPO深度强化学习算法实现思路(分布式多进程加速)
为什么是多进程众所周知,python的多线程是伪多线程,在全局????GIL下某一时刻python只有一个线程在执行,这就意味着在计算密集型任务下多线程反而会更慢(上下文切换)。因此,想做关于强化学习加速的任务只能多进程(可以理解为手动运行多个程序)。但是多进程又很麻烦,麻烦在进程之间的数据联系(因为进程是不共享全局区的),本文采用pipe技术(管道)做数据传输。实现思路1多个子进程同步训练网络在主进程将子进程网络的权重取平均更新到net再将net传入子进程,回到1这种思路是最容易想到的,实原创 2021-05-13 20:45:42 · 6093 阅读 · 23 评论 -
如何理解PPO算法的核心操作clip
回顾传统的策略梯度算法以下式作为策略网络的损失:g^=E^t[∇θlogπθ(at∣st)A^t]\hat{g}=\hat{\mathbb{E}}_{t}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}\right]g^=E^t[∇θlogπθ(at∣st)A^t]具体在代码实现中就是计算logπθ(at∣st)A^t\log \pi_{\theta}\left(a_{t}原创 2021-04-13 09:45:29 · 5386 阅读 · 0 评论 -
Github一个深度强化学习算法库
收集整理了一个深度强化学习算法库,特点:代码简洁易懂,性能好,现已打包好至github:DRL_algorithm_library。包含代码以及对应论文:DDPGPPO+GAETD3SACMADDPG原创 2021-03-31 15:37:19 · 1058 阅读 · 0 评论 -
一个AC类算法策略loss引出的思考
记录在记录DDPG等AC算法的loss时,发现其loss如下图:最开始的想法:策略pi的loss不是负的q值吗,如果loss_pi增大意味着q减小,pi不是朝着q增大的方向吗?经过和别人的讨论以及自己的思考,得出如下结论:我的环境所有奖励都是负奖励,这是这个问题思考的基础点。由于都是负奖励,所以无论是什么策略下的Q值都是负数,最优策略下的Q值也是负数。Critic网络在初始化后权重都是非常接近0的数,导致Critic网络的所有预测Q值都接近0,而loss_pi是batch_size个负Q的原创 2021-03-31 09:44:43 · 2967 阅读 · 2 评论 -
双延迟深度确定性策略梯度TD3算法思路和两个python实现
算法思路TD3是解决AC框架下Q值高估问题的,这个问题可追溯到double Q-learning中:y=r+γQθ1(s′,argmaxaQθ2(s′,a))y=r+\gamma Q_{\theta_{1}}\left(s^{\prime}, \arg \max _{a} Q_{\theta_{2}}\left(s^{\prime}, a\right)\right)y=r+γQθ1(s′,argamaxQθ2(s′,a))max操作将s’下最大的Q值近似为V值,而V值实际是Q值的加权平均原创 2021-03-29 10:47:30 · 1917 阅读 · 22 评论 -
如何用seaborn relplot函数仿照绘制具有张力的强化学习顶会文章插图
一张别人家的插图如何绘制relplot可以自动绘制置信区间,因此我们要做的就是把多次试验结果保存下来,保证一个横坐标上有多个纵坐标,它便能自动绘制置信区间。假设我跑了个DDPG的模型,拿到了一个reward_list=[0,1,2,4,4,…],第二次拿到了一个reward_list=[2,3,4,4…],又跑了个SAC模型,拿到了一个reward_list=[0,1,2,4,5,…],第二次拿到了一个reward_list=[2,3,4,6…],用模型名称、迭代次数(索引)、reward值作为pan原创 2021-03-23 20:31:19 · 1015 阅读 · 2 评论 -
浅析强化学习Proximal Policy Optimization Algorithms(PPO)
Actor-Critic网络PPO是基于AC网络架构实现的。Actor网络PPO有一个Actor网络,Actor输入的维度为state_dim,即状态维数,输出维度为action_dim,意义是每个action的高斯策略的均值,另外,Actor网络还有action_dim个标准差参数,这样在输入一个state后,每个动作都对应一个一维的高斯分布。Critic网络PPO有一个Critic,Critic网络是用来拟合状态值函数vπ(s)=Eπ[∑k=0∞γkRt+k+1∣St=s]v_{\pi}(s原创 2021-03-21 16:04:33 · 4142 阅读 · 0 评论 -
MADDPG分析及其更新策略见解
引子 深度强化学习可以分为两类:单智能体算法和多智能体算法,单智能体算法从DQN开始有policy gradient、actor critic、dpg、ppo、ddpg、sac等等,它们解决的是环境中存在一个智能体的情况(或者是多个智能体可以转化为一个智能体决策的情况),但是在某些环境(environment)下,似乎单智能体算法就有些心有余而力不足,例如足球比赛亦或是追逐游戏。如果依旧对每个agent采用单智能体算法会出现如下情况:在第iii个agent做出动作aia_iai的情况下由于其余agen原创 2021-01-17 17:16:06 · 8787 阅读 · 4 评论 -
深度强化学习Soft-Actor Critic算法高性能Pytorch代码(改写自spinningup,低环境依赖,低阅读障碍)
写在前面DRL各种算法在github上各处都是,例如莫凡的DRL代码、ElegantDRL普遍存在性能不行的情况,在具体实现细节上也存在差异,不建议直接用在科研上。这篇博客的代码改写自OpenAi spinningup源码DRL_OpenAI,代码性能方面不再是你需要考虑的问题了。为什么改写?因为源码依赖环境过多,新手读起来很吃力,还有很多logger让人头疼。这篇博客的代码将环境依赖降低到最小,并且摒弃了一些辅助功能,让代码更容易读懂。SAC算法很新,且性能出众。项目分三个文件:main原创 2021-01-05 14:15:56 · 3523 阅读 · 11 评论 -
深度强化学习DDPG算法高性能Pytorch代码(改写自spinningup,低环境依赖,低阅读障碍)
写在前面DRL各种算法在github上各处都是,例如莫凡的DRL代码、ElegantDRL普遍存在性能不行的情况,在具体实现细节上也存在差异,不建议直接用在科研上。这篇博客的代码改写自OpenAi spinningup源码DRL_OpenAI,在性能方面是不再是你需要考虑的问题了。为什么改写?因为源码依赖环境过多,新手读起来很吃力,还有很多logger让人头疼。这篇博客的代码将环境依赖降低到最小,并且摒弃了一些辅助功能,让代码更容易读懂。项目分三个文件:main.py , DDPGMode原创 2021-01-02 18:56:42 · 3885 阅读 · 12 评论 -
DRL:DQN, PG, AC, DDPG, SAC概述
深度强化学习 Deep Reinforcement LearningDQNDQN的出现事实上是解决了Q-learning中state数量的限制,在Q-learning中,无论是state的数量还是action的数量都没法做到很大,而DQN利用神经网络取代了Q-learning中的Q表从而解决了第一个问题:state数量的限制,这是一个novel 的ideal,2013年第一篇论文问世,随之在2015年nature刊登。先给出一个算法框图,源自一位班级同学:要是觉得上面这个同学的图过于眼花缭乱,看下原创 2020-12-10 21:18:57 · 9705 阅读 · 4 评论 -
强化学习Q-Learning在二维轨迹规划应用(MATLAB)
博客推荐Q-Learning二维避障轨迹规划目前我写的代码不够成熟,就不贴了。Agent的reward机制如下:走出图像reward为一个较大负数,撞上障碍也为一个较大负数,若不是前两者,则reward为当前点位与目标点位距离的反比函数(越近奖赏越大)。state状态的划分是根据像素区域来的,等同于把图像分割成了若干像素块,这样可以减小state的数量,否则训练困难。Action根据移动方向的角度来分,比如10°划分的话一个state就有36个actions,这样Q表就是states×actions原创 2020-11-26 21:59:59 · 4433 阅读 · 4 评论