深度强化学习——actor-critic算法(4)

这篇具有很好参考价值的文章主要介绍了深度强化学习——actor-critic算法(4)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、本文概要:

actor是策略网络,用来控制agent运动,你可以把他看作是运动员,critic是价值网络,用来给动作打分,你可以把critic看作是裁判,这节课的内容就是构造这两个神经网络,然后通过环境给的奖励来学习这两个网络

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

1、首先看一下如何构造价值网络value network:

Π 和QΠ这两个函数我们都不知道,应该怎么办呢?

》可以用两个神经网络分别近似这两个函数,然后用actor-critic方法同时学习这两个神经网络 

策略网络:Policy network(actor):

我们用策略网络来控制agent做运动,决策是由策略网络做的

价值网络:Value network(critic):

这里的价值网络不控制agent运动,价值网络只是给动作打分而已,所以价值网络被称为critic,它相当于裁判,来给运动员的表现打分

你可以这样理解:actor是一个体操运动员,它可以做动作,如果它想让自己做的更好,就得改进自己的技术,可是它不知道怎样改进自己,这就需要裁判,裁判给运动员打分,运动员就知道什么样的动作得分高,什么样的动作得分低,这样一来运动员就会改进自己,让自己的分数越来越高

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

我们用策略网络来近似Π函数,用价值网络来近似QΠ函数,Π是策略网络,相当于运动员,q是价值网络相当于裁判 

我们现在来搭建这两个神经网络:

1、策略网络

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

2、价值网络:

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

价值网络有两个输入:一个是状态s,一个是动作a,如果动作是离散的,就可以使用onehot-encoding独热编码来表示一个动作, 比如向左可以表示成100,向右可以表示成010,向上表示成001,分别用卷积层和全连接层从输入中提取特征,得到两个特征向量,然后把这两个特征向量给拼接起来,得到一个更高的特征向量,最后用全连接层输出一个实数q(s,a;w),这个数,就是裁判给运动员打的分数,这个分数说明,出在状态s的情况下,做出动作a是好还是坏

这个价值网络可以和策略网络共享卷积层的参数,也可以跟策略网络完全独立,各自有各自的参数

同时训练策略网络和价值网络,就被称为是Actor-Critic Method,可以这样理解Actor-Critic Method:策略网络用来控制agent运动,所以叫做actor,你可以把策略网络当成是一个体操运动员,他要做一连串的动作,价值网络的用途是评价动作的好坏,所以把他叫做critic,你可以把价值网络当作是裁判,他给运动员的动作打分,学习这两个网络的目的是让运动员的平均分越来越高,并且让裁判的打分越来越精准

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

下面我们来训练这两个神经网络:

我们用了策略网络来近似策略函数Π,用了价值网络来近似动作价值函数QΠ,这样一来,状态价值函数就可以用V(s;θ,w)来近似,θ是策略网络的参数,w是价值网络的参数,训练的时候要更新两个神经网络的参数θ和w,但是更新θ和w的目标是不同的,更新策略网络Π的参数θ,是为了让V函数的值增加,V函数是对策略Π和状态s的评价,如果固定s,V越大则说明策略Π越好,所以很显然我们需要更新参数θ使得V的平均值(期望)增加,学习策略网络Π的时候,监督是由价值网络Q提供的,怎么理解呢?

策略网络Π 相当于体操运动员,它做出动作之后,裁判会给动作打分,裁判相当于价值网络Q,运动员努力改进自己的技术,争取让裁判打的分数更高,裁判打的分数就是监督信号,运动员靠裁判打的分数来改进自己的技术。更新价值网络q的参数w是为了让q的打分更精准,从而更好地估计未来得到的奖励的总和,价值网络q相当于是裁判,一开始是随机初始化的,所以一开始裁判没有判断能力,裁判会逐渐改善自己的水平,让打分越来越精准。裁判是靠什么改进自己的呢?

裁判靠的是环境给的奖励reward,你可以把环境给的奖励理解成是上帝给打的分数,但是上帝不会轻易把他的分数告诉别人,直到运动会结束了,上帝才会把他的打分全部公开,裁判要做的就是要让它的打分越来越接近上帝的打分

通过学习两个神经网络,运动员的得分越来越高,裁判员的打分越来越精准

 actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

我们通过如下5个步骤来对两个神经网络做一次更新

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习1、观测到当前状态st

2、 把状态st当作输入,用策略网络Π来计算概率分布,然后随机抽样得到动作at

3、agent执行动作at,这时候环境会更新状态st+1,并给agent一个奖励rt

4、有了奖励rt,就可以用TD算法来更新价值网络的参数w,也就是让裁判变得更准确

5、最后用policy gradient策略梯度算法,来更新策略网络的参数θ,这会让运动员的技术更好

更新策略网络的参数要用到裁判对动作at的打分,下面具体来讲如何更新这两个神经网络的参数:

1)价值网络q可以用TD算法来更新

1、首先用价值网络q来给动作at和at+1打分,这里的动作是根据策略网络Π随机抽样得到的

2、然后算一下TD target,把计算出来的数值记作yt,其中γ是折扣率,他让未来的奖励没有当前奖励的权重更高

3、用梯度下降更新w,使得yt-qt的值越来越小

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

2)使用策略梯度算法来更新策略网络Π,让运动员的得分更高:

这里的函数V是状态价值函数,相当于是这位运动员所有动作的平均分(V是动作价值函数的期望也即平均值),策略梯度是函数V关于参数θ的导数,我们直接用一个g(a,θ)就行了,一个g(a,θ)就是对这个期望的蒙特卡洛近似,既然g(a,θ)是对策略梯度的无偏估计,我们就拿g函数来代替策略梯度,具体是这样做的:

首先拿策略网络Π来随机抽样得到动作a,这个随机抽样的目的是为了保证样本的无偏性,必须要根据Π来做随机抽样,否则保证不了无偏性,有了随机梯度g,就可以做一次梯度上升,其中β是学习率,由于梯度是函数V关于θ的导数,所以梯度上升可以增加V函数的值

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

我们来总结一下Actor-Critic Method:

策略网络actor观测到当前的状态s,它控制agent做出动作a,这个actor就相当于一个体操运动员,他会做出一个动作,它的目标是让自己的动作越来越好,所以他要通过学习来让自己进步,问题是什么样的动作才算更好呢?

运动员自己并不知道什么样的动作才算是更好,所以它很难改进自己的技术,为了让运动员表现的更好,我们请裁判来帮忙,运动员做出动作之后,裁判会根据状态s和动作a来打一个分数,记作q,裁判把分数q告诉运动员,这样运动员就有办法改进自己了

这位运动员要靠裁判打分q来改进自己的技术,这里的技术指的是神经网络里的参数,它通过状态s,自己的动作a,以及裁判打分q来近似算出策略梯度,然后做梯度上升来更新参数,通过改善自己的技术,运动员会获得越来越高的平均分,其实运动员这样做只是在迎合裁判的喜好而已,运动员获得的平均分越来越高,原因是运动员在迎合裁判的喜好,使得裁判的打分q越来越高了,更高的q未必能说明这个运动员变得越来越优秀了,裁判的水平也很重要,迎合一个二流的裁判并不会让一个运动员成为一个顶尖的运动员,这就需要一个顶尖的裁判,来打出最准确的分数,所以为了让运动员变得越来越优秀,还需要裁判不断改进他的打分能力

裁判要靠奖励r来提高它的打分水平,奖励r相当于是上帝的判断,相当于是ground truth,裁判基于状态s和动作a来打分,计算出分值q,可以比较两次相邻打分qt和qt+1,以及奖励rt,然后用TD算法来更新价值网络参数,这样可以让裁判打分越来越精准

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

最后我们过一遍算法:

1、观测到旧的状态st,用策略网络Π来计算概率分布,再根据算出的概率,来随机抽样得到动作at

2、执行动作at,然后环境会更新st+1并给出一个奖励rt

3、拿新的状态st+1作为输入,用策略网络Π计算出新的概率,然后随机抽样得到新的动作~at+1,这个动作~at+1只是一个假想的动作而已,拿来算一下q值,agent并不会真正去做~at+1(tiuta)这个动作,算法的每一轮循环里面agent只做一次动作,agent这一轮已经做了动作at,所以就不会再做~at+1了

4、算2次价值网络的输出:用st和at作为输入算出裁判打分qt,用st+1和~at+1算出裁判打分qt+1,这里的~at+1用完就丢掉了,agent并不会真正执行~at+1这个动作

5、计算出TD error(预测与TD target之间的差)

6、对价值网络求导,tensorflow和pytorch系统都可以自动做反向传播,自动算出q网络关于参数w的梯度(这里的梯度是q函数的梯度),记作dw,t他的形状和w是完全一样的,是同样大小的矩阵或者张量

7、用TD算法来更新价值网络,让裁判打分变得更精准这里的δt*dw,t是损失函数Loss的梯度,做梯度下降,可以让预测离TD target变得更近

8、对策略网络Π求导,软件系统会自动帮你求导,只要你调用一下gardient函数就行了,这里的dθ,t和θ的形状也是一样的

9、最后一步:用梯度上升来更新策略网络,让运动员的平均分更高这里的qt*dθ,t是策略梯度的蒙特卡洛近似

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

每一轮迭代都做这9个步骤,每一轮迭代都只做一次动作 ,观测一个奖励,更新一次神经网络的参数论文和书中在这一步大多数使用δt而不是qt,使用qt是标准算法,使用δt叫做policy gradien with baseline,这两种策略梯度的期望完全相等,实际上用baseline效果更好,原因是虽然用不用baseline不影响期望,但是用个好的baseline可以降低方差,让算法收敛的更快

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

那么baseline是什么呢?

事实上任何接近qt的数都可以被认为是baseline,但是这个baseline不能是动作at的函数

我们可以使用:

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习来作为baseline

最后总结一下actor-critic这部分的内容:

我们的目标函数是V(Π)的期望,我们希望学到策略Π ,让V(Π)的期望越大越好,但是直接学Π函数不容易,所以我们用神经网络来近似Π函数这个神经网络叫做policy network策略网络,当时我们计算策略梯度的时候有个困难,就是我们不知道动作价值函数Q(Π),所以要用神经网络来近似Q(Π)这个神经网络叫做value network价值网络actor-critic method里面有两个神经网络,策略网络Π叫做actor,价值网络q叫做critic

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

价值网络q的作用是辅助训练策略网络Π,裁判打的分数就相当于监督学习中的标签,运动员就是靠裁判打的分数来改进自己的动作actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

训练结束之后,价值网络q就没用了,总之呢,actor-critic method的终极目的是用来学习策略网络,而价值网络只是作为裁判员起辅助作用,帮助学习,学完了就不需要这个裁判了

该怎么样训练这两个神经网络呢?

策略网络Π要用到策略梯度算法来训练, 学习策略网络Π的目标是让状态价值函数V的平均值变大

补充一点:使用actor-critic method我们最终既能够学习策略网络Π参数θ使得状态价值函数V的平均值变大,同时也能够使得价值网络q打分越来越准(误差越来越小)

actor-critic,深度强化学习,python,人工智能,神经网络,深度学习,机器学习

接下来我们将探索AlphaGo的基本原理,看看深度强化学习是如何解决实际问题的!文章来源地址https://www.toymoban.com/news/detail-782396.html

到了这里,关于深度强化学习——actor-critic算法(4)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (10-1)Actor-Critic算法:Actor-Critic算法的介绍与原理

    Actor-Critic(演员-评论家)是一种强化学习算法,通常用于解决连续动作空间的问题。其一个重要特点是它允许在学习过程中同时学习策略和价值函数,从而可以有效地处理连续动作空间和高维状态空间的问题。在本章的内容中,将详细讲解Actor-Critic算法的知识,为读者步入后

    2024年04月28日
    浏览(26)
  • JoyRL Actor-Critic算法

    这里策略梯度算法特指 蒙特卡洛策略梯度算法 ,即 REINFORCE 算法。 相比于 DQN 之类的基于价值的算法,策略梯度算法有以下优点。 适配连续动作空间 。在将策略函数设计的时候我们已经展开过,这里不再赘述。 适配随机策略 。由于策略梯度算法是基于策略函数的,因此

    2024年01月23日
    浏览(42)
  • Actor-Critic(A2C)算法 原理讲解+pytorch程序实现

    强化学习在人工智能领域中具有广泛的应用,它可以通过与环境互动来学习如何做出最佳决策。本文将介绍一种常用的强化学习算法:Actor-Critic并且附上基于pytorch实现的代码。 Actor-Critic算法是一种基于策略梯度(Policy Gradient)和价值函数(Value Function)的强化学习方法,通常

    2024年02月11日
    浏览(34)
  • 论文笔记(四十)Goal-Auxiliary Actor-Critic for 6D Robotic Grasping with Point Clouds

    作者:Lirui Wang, Yu Xiang, Wei Yang, Arsalan Mousavian, Dieter Fox 来源:Conference on Robot Learning (pp. 70-80). PMLR. 原文:https://proceedings.mlr.press/v164/wang22a/wang22a.pdf 代码、数据和视频:https://sites.google.com/view/gaddpg 系列文章目录: 上一篇: https://blog.csdn.net/xzs1210652636/article/details/134431873 下一篇

    2024年01月17日
    浏览(37)
  • python算法中的深度学习算法之强化学习(详解)

    目录 学习目标: 学习内容: 强化学习 Ⅰ. 环境建模 Ⅱ . Markov决策过程

    2024年02月01日
    浏览(29)
  • 深度强化学习——DQN算法原理

    一、DQN算法是什么 DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。 回顾一下Q-Learing:强化学习——Q-Learning算法原理 Q-Learing算法维护一个Q-table,使用表格存储每个状态s下采取动作a获得的奖励,即状态-价值函数Q(s,a),这种算法存在很大的局限性。在现实

    2024年02月02日
    浏览(30)
  • 深度强化学习-DDPG算法原理与代码

    深度强化学习-DDPG算法原理与代码 引言 1 DDPG算法简介 2 DDPG算法原理 2.1 经验回放 2.2 目标网络 2.2.1 算法更新过程 2.2.2 目标网络的更新 2.2.3 引入目标网络的目的 2.3 噪声探索 3 DDPG算法伪代码  4 代码实现 5 实验结果 6 结论 Deep Deterministic Policy Gradient (DDPG)算法是DeepMind团队提出的

    2024年02月03日
    浏览(38)
  • (9-5)基于深度强化学习的量化交易策略(OpenAI Baselines +FinRL+DRL+PyPortfolioOpt):深度强化学习算法模型

    本项目的深度强化学习算法的是基于Stable Baselines实现的,Stable Baselines是OpenAI Baselines的一个分支,经过了重大的结构重构和代码清理工作。另外,在库FinRL中包含了经过调优的标准深度强化学习算法,如DQN、DDPG、多智能体DDPG、PPO、SAC、A2C和TD3,并且允许用户通过调整这些深度

    2024年01月25日
    浏览(40)
  • 学习深度强化学习---第3部分----RL蒙特卡罗相关算法

    本部分视频所在地址:深度强化学习的理论与实践 在其他学科中的蒙特卡罗法是一种抽样的方法。 如果状态转移概率是已知的,则是基于模型的方法。如果状态转移概率是未知的,则是免模型的方法。动态规划方法无法求解倒立摆问题,即无法处理没有状态转移概率的问题

    2024年02月04日
    浏览(36)
  • 基于深度强化学习(DQN)的迷宫寻路算法

    QLearning方法有着明显的局限性,当状态和动作空间是离散的且维数不高时可使用Q-Table存储每个状态动作的Q值,而当状态和动作时高维连续时,该方法便不太适用。可以将Q-Table的更新问题变成一个函数拟合问题,通过更新参数θ使得Q函数逼近最优Q值。DL是解决参数学习的有效

    2023年04月22日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包