强化学习笔记
自己对RL的总结
samurasun
这个作者很懒,什么都没留下…
展开
-
基础算法篇(八),异步强化学习方法与A3C
这一篇,我们介绍一种全新的强化学习方法,称为“异步”强化学习方法。首先,这里没有用算法(algorithm)而是用方法(method),是因为这里提供的是一种与前面相关算法相兼容的新的实现思路,而不是本身在算法方面的革新。其次,我们看“异步”这个词,它已经很明确的表示了这个方法的特点,简单来说,其实就是将“并行”的思路代入前面我们提到的各种value-based或policy-based方法中。具体的细节,请参考DeepMind的论文:Asynchronous Methods for Deep Reinf原创 2020-09-27 16:52:23 · 2749 阅读 · 0 评论 -
基础算法篇(七),确定性策略的DPG与DDPG
我们在前面两章介绍了Policy Based范畴的经典策略梯度方法和基于AC框架的PPO方法,在上述方法中,策略梯度都为如下形式:∇J(θ)=Eτ∼P(τ;θ)[R(τ)∑t=1T∇logπθ(at∣st)]\nabla J\left(\theta\right)=E_{\tau\sim P\left(\tau;\theta\right)}\left[R\left(\tau\right)\sum_{t=1}^T\nabla\log\pi_\theta\left(a_t\left|s_t\right.\r原创 2020-09-10 22:01:21 · 3042 阅读 · 0 评论 -
算法实战篇(二),Tensorflow实现Actor-Critic框架下的经典PPO算法
本篇是我们算法实战的第二篇,针对的是我们在“基础算法篇(六),基于AC框架的PPO算法”中提出的相关算法,具体算法中部分参考了莫烦老师的相关代码,在这里向莫烦老师表示感谢。Tensorflow实现Actor-Critic框架下的经典PPO算法一、基础游戏背景介绍二、主函数三、Agent类(一)PPO类的初始化函数(二)建立Critic深度神经网络(价值网络)1. 价值网络的建立2. 更新方法的定义(三)建立Actor深度神经网络(策略网络)1. 策略网络的建立2. 更新方法的定义(四)利用策略网络(Act原创 2020-09-04 17:29:56 · 4966 阅读 · 2 评论 -
基础算法篇(六),基于AC框架的PPO算法
我们上一章给大家介绍了经典的策略梯度(PG)算法,但这个经典算法存在两个问题:一是需要完整序列我们根据强化学习的目标“最大化总收益”而得到的公式中包含R(τ)=∑t=1TrtR\left(\tau\right)=\sum_{t=1}^Tr_tR(τ)=∑t=1Trt,就算我们对其进行添加基线、改变收益计算方式等,都还是没有脱离从ttt时刻起,需要后续所有收益这一问题,这一方法类似于我们在“基础算法篇(二),蒙特卡洛方法解决Model-Free强化学习问题”讲的方法,而这对强化学习本身来说,是很难原创 2020-09-01 16:06:54 · 6627 阅读 · 1 评论 -
算法实战篇(一),Tensorflow实现经典DQN算法
我们在“基础算法篇(四)值函数逼近方法解决强化学习问题”中介绍了经典的DQN算法,今天,我们就来点实际的,正式实现一下相关算法。Tensorflow实现经典DQN算法一、基础游戏背景介绍二、建立文件与撰写主函数三、Agent功能介绍(一)DQN类的初始化函数(二)建立深度神经网络(三)设计网络参数更新方法(四)Agent行为生成(即利用网络输出行为)(五)存储数据(六)训练网络更新参数(七)更新目标网络参数总结一、基础游戏背景介绍我们这次代码实现中,使用的对象,是Gym中的活动杆游戏,如下图所示:游原创 2020-08-26 15:07:48 · 6387 阅读 · 3 评论 -
基础算法篇(五),Policy Based方法解决强化学习问题
我们前面几章介绍的方法中,无论是动态规划(DP)、蒙特卡洛(MC)、时序差分(TD)、或者值函数逼近方法(DQN、Double DQN、Dueling DQN、Prioritized Replay DQN)等,都是先计算出状态价值或状态-行为值,然后再用贪婪法等选择“行为”,这些方法统称为Value Based的方法。那么,有没有办法直接去求出行为呢?下面,我们就带大家进入Policy Based方法的大家庭。基本思路首先,让我们先回顾一下强化学习的基本过程:在强化学习基本概念小结中我们讲过,可以原创 2020-08-25 02:04:29 · 1529 阅读 · 1 评论 -
基础算法篇(四),值函数逼近方法解决强化学习问题
在时序差分方法那一章的最后,我们对前面介绍的动态规划(DP)、蒙特卡洛(MC)和时序差分(TD)等算法进行了总结,其中提到了在上述算法中,其实都需要精确的求出几乎每个状态价值或状态-行为值(类似于算法需要维护一张Q表)。那么这就带来了一个问题,如果要解决的强化学习问题状态价值特别多,或者本身就是个连续值。那么,这个Q表就会变得特别大,以至于程序无法维护(内存溢出或者查询更新效率奇低)。那么,有没有什么方法解决这一问题呢?值函数逼近方法介绍既然Q表是离散形式的,我们能够直接想到的方法,就是构造一个函数对其原创 2020-08-19 10:41:39 · 1355 阅读 · 2 评论 -
番外篇,强化学习基础环境搭建
我们要学习强化学习相关知识,仅仅通过看书肯定是远远不够的,必须要自己动手写一些代码,这样对相关内容的了解才能更全面,我们的知识也能够真正落地。因此,本篇主要是让大家了解一下基础环境的搭建。Python、Anaconda、PyCharmPython我们要进行强化学习实践,首推还是使用Python来搭建基础编程环境。如果对Python还不熟,推荐这个Python基础教程。Anaconda在开发环境配置方面,推荐大家使用Anaconda,通过它可以搭建虚拟环境。你可以把它构建的虚拟环境视为一个封原创 2020-08-17 17:19:55 · 3209 阅读 · 0 评论 -
基础算法篇(三),时序差分方法解决Model-Free强化学习问题
上一章我们介绍用蒙特卡洛(MC)方法解决Model-Free的强化学习问题时,核心关键就是利用用多次的累积回报去逼近状态价值vπ(s)v_{\mathrm\pi}\left(s\right)vπ(s)或状态-行为值qπ(s,a){\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)qπ(s,a)。即如下公式:v(stk)←v(stk−1)+1α[Gtk−v(stk−1)]v\left(s_t^k\right)\leftarrow v\left原创 2020-08-17 00:49:15 · 815 阅读 · 1 评论 -
基础算法篇(二),蒙特卡洛方法解决Model-Free强化学习问题
从这一节开始,我们开始向大家介绍如何解决Model-Free强化学习问题。在前面强化学习基本概念小结中我们向大家介绍了,Model-Free指的是状态转移概率ppp(或状态转移矩阵PPP)未知,那么以下两个公式:vπ(s)=∑a∈Aπ(a∣s)[rsa+γ∑s′∈SPss′avπ(s′)]v_{\mathrm\pi}\left(s\right)=\sum_{a\in A}\mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right)\left[\mathrm原创 2020-08-08 21:24:03 · 811 阅读 · 0 评论 -
基础算法篇(一),动态规划方法解决Model-Based强化学习问题
首先,让我们复习一下这个手绘的(丑)图:在前面我们学习过,根据上图可以得到状态价值函数和状态-行为值函数之间存在如下关系:vπ(s)=∑a∈Aπ(a∣s)qπ(s,a)v_{\mathrm\pi}\left(s\right)=\sum_{a\in A}\mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right){\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)vπ(s)=∑a∈Aπ(a∣s原创 2020-08-08 09:33:48 · 752 阅读 · 1 评论 -
基本概念篇(三),强化学习基本概念小结
现在,总结一下我们前面介绍的相关内容:首先,我们介绍了强化学习的八个基本要素,具体参见:基本概念篇(一),强化学习基本要素其次,我们对强化学习的过程进行了描述,具体参见:基本概念篇(二),强化学习过程具体来讲,强化学习可以描述成一个MDP(马尔科夫决策过程),即M={S,A,P,r,γ,τ}M=\left\{S,A,P,r,\gamma,\tau\right\}M={S,A,P,r,γ,τ},这其中:SSS 是状态集;AAA 是动作集;PPP 是状态转移矩阵;r: S×A→[−Rmax,Rm原创 2020-08-06 11:30:09 · 553 阅读 · 0 评论 -
基本概念篇(二),强化学习过程
上篇文章介绍了强化学习的八个基本要素,利用这些要素,我们就可以将一个完整的强化学习过程描述出来。大家在看其他的参考书时,在这部分其实都是把强化学习的过程描述为一个“马尔科夫决策过程”。我们首先可以回忆一下上一节中那个图,首先就是将强化学习过程离散化,分成一步一步的过程。那么这其中最重要的马尔科夫特性,其实讲的就是每一步之间的关系。简单来说,就是系统这一步的状态,只与系统前一步状态相关,而与历史状态无关。用公式表示就是:P[st+1∣s1,⋯ ,st]=P[st+1∣st]P\left[s_{t+1}\l原创 2020-08-05 15:26:42 · 2772 阅读 · 2 评论 -
基本概念篇(一),强化学习基本要素
其实本来不想写这篇的,相信愿意往下看的童鞋,对强化学习本身应该有一定了解。但其实你看的多了就会发现,现有很多文章在细节方面还是有不少差异的。因此,这篇文章也是为了统一本博客的话语体系,为后面内容打基础。首先请看下面这张图:上图就是强化学习的最一般思路。其中Agent代表你实现的各种“牛叉”算法,Environment则代表Agent输出或作用的对象。其实这一思路,特别类似于我们人类或者自然界的动物等,通过与环境的交互,逐渐适应环境并学习到知识。当然,现有强化学习的算法从效率上来说,别说和人类相比,与动原创 2020-08-04 14:56:52 · 8795 阅读 · 1 评论 -
强化学习笔记开篇
强化学习笔记-引言废话篇废话篇自己学习了一段时间的强化学习相关知识了,书买了郭宪的《深入浅出强化学习》,肖智清的《强化学习原理与Python实现》,当然,一定包括Sutton的经典《Reinforcement Learning:An introduction》。视频就看了李宏毅老师的课程。网上教程则看的比较多,成体系的我觉得刘建平的强化学习专栏很值得推荐。讲真的,自己现在只是浅浅的有了一点感觉而已,还有很多问题没有想清楚。所以,写这个的主要目的还是为了让自己能够理清楚相关知识。我觉得能写出来,应该原创 2020-08-04 13:03:40 · 354 阅读 · 0 评论