IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 强化学习笔记:Actor-critic -> 正文阅读

[人工智能]强化学习笔记:Actor-critic

0 复习

由于actor-critic 是 policy gradient 和DQN的一个结合,所以我们先对这两个进行一个简单的复习:

0.1 policy gradient

强化学习笔记:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客

? ? ? ? ?在policy network中,我们使用梯度上升的方法更新参数。梯度计算方法如下:(这里的N是采样次数,我们为了更新θ,采样N次)

?????????这个式子是在说,我们先让 agent 去跟环境互动(采样),那我们可以计算出在某一个状态 s,采取了某一个动作 a 的概率p_{\theta}(a_t|s_t)

????????接下来,我们去计算在某一个状态 s 采取了某一个动作 a 之后,到游戏结束为止,累积奖励有多大。我们把从时间 t 到时间 T 的奖励通通加起来,并且会在前面乘一个折扣因子γ。

????????我们会减掉一个 baseline b,减掉这个值 b 的目的,是希望括号这里面这一项是有正有负的。如果括号里面这一项是正的,我们就要通过更新θ来增加在这个状态采取这个动作的机率;如果括号里面是负的,我们就要通过更新θ来减少在这个状态采取这个动作的机率。

?????????我们把用 G 来表示累积奖励。

????????但 G 这个值,其实是非常不稳定的。因为互动(采样)的过程本身是有随机性的,所以在某一个状态 s 采取某一个动作 a,然后计算累积奖励,每次算出来的结果都是不一样的(因为后续各状态选取action都是按照概率选取的,所以之后各个状态、各个action的路径是不一样的)?。

????????假设我们可以采样足够的次数,在每次更新参数之前,我们都可以采样足够的次数,那其实没有什么问题。但问题就是我们每次做 policy gradient,每次更新参数之前都要做一些采样,这个采样的次数其实是不可能太多的,我们只能够做非常少量的采样。所以会有一定的误差。这也是policy gradient的不足之处

0.2 DQN

? ? ? ? 那么针对之前所说的policy gradient的不足之处,有没有什么办法可以让整个训练过程变得稳定一些呢??

????????

?????????我们在状态 s 采取动作 a 的时候,直接用一个网络去估测在状态 s 采取动作 a 的时候,G 的期望值。如果这件事情是可行的,那之后训练的时候,就用期望值来代替采样的值,这样会让训练变得比较稳定。

????????这边就需要引入基于价值的(value-based)的方法。基于价值的方法就是 Q-learning。Q-learning 有两种函数,有两种 critics:

  • 第一种 critic 是V^{\pi}(s),它的意思是说,假设 actor 是?π,拿?π?去跟环境做互动,当我们看到状态 s 的时候,接下来累积奖励 的期望值有多少。

  • 还有一个 critic 是Q^{\pi}(s,a)Q^{\pi}(s,a)把 s 跟 a 当作输入,它的意思是说,在状态 s 采取动作 a,接下来都用 actor π?来跟环境进行互动,累积奖励的期望值是多少。

????????可以用 TD 或 MC 来估计。用 TD 比较稳定,用 MC 比较精确。

DQN 笔记 State-action Value Function(Q-function)_UQI-LIUWJ的博客-CSDN博客

1 actor-critic

?随机变量?G的期望值正好就是 Q

????????Q-function 的定义就是在某一个状态 s,采取某一个动作 a,假设 policy 就是 π?的情况下会得到的累积奖励的期望值有多大,而这个东西就是 G 的期望值。

????????所以假设用E\left[G_{t}^{n}\right]来代表\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}这一项的话,把 Q-function 套在这里就结束了,我们就可以把 Actor 跟 Critic 这两个方法结合起来。

?????????有不同的方法来表示 baseline,但一个常见的做法是用价值函数V^{\pi_{\theta}}\left(s_{t}^{n}\right)来表示 baseline。

????????价值函数是说,假设 policy 是π,在某一个状态 s 一直互动到游戏结束,期望奖励(expected reward)有多大。V^{\pi_{\theta}}\left(s_{t}^{n}\right)没有涉及到动作,Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)涉及到动作。

???????V^{\pi_{\theta}}\left(s_{t}^{n}\right)会是Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)的期望值(关于不同action的期望值),所以Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)-V^{\pi_{\theta}}\left(s_{t}^{n}\right)会有正有负,所以代换后的\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}-b?这一项就会是有正有负的。合理。

????????

所以我们就把 policy gradient 里面\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}-b?这一项换成了Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)-V^{\pi_{\theta}}\left(s_{t}^{n}\right)

2 advantage?actor-critic (A2C)

2.1 大致思想

?

????????如果你这么实现的话,有一个缺点是:你要估计 2 个 网络:Q-network 和 V-network。不仅耗时,而且不确定性大。

????????事实上在这个 Actor-Critic 方法里面。你可以只估测 V 这个网络,你可以用 V 的值来表示 Q 的值,Q^{\pi}\left(s_{t}^{n}, a_{t}^{n}\right)可以写成r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right)的期望值,即

????????

?????????你在状态 s 采取动作 a,会得到奖励 r,然后跳到状态s_{t+1}。但是你会得到什么样的奖励 r,跳到什么样的状态s_{t+1},它本身是有随机性的。所以要把右边这个式子,取期望值它才会等于 Q-function。

? ? ? ? ?但是在A3C 论文里面,通过实验发现,把期望值直接摘掉,效果更好,于是就有:

????????因为r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right)-V^{\pi}\left(s_{t}^{n}\right)叫做?Advantage function。所以这整个方法就叫?Advantage Actor-Critic

?2.2 大体流程

?????????我们有一个 初始的 actor? π,用他去跟环境做互动,先采样收集资料。

????????在 policy gradient 方法里面收集资料以后,你就要拿去通过梯度上升的方法更新 policy。

????????但是在 actor-critic 方法里面,你先拿这些采样得到的资料去估计价值函数V(用 TD 或 MC 来估计价值函数) 。接下来,你再基于价值函数,套用下面这个式子去更新?π,得到新的actor π'。

? ??

????????然后你有了新的?π?以后,再去跟环境互动,再收集新的资料,去估计价值函数。然后再用新的价值函数 去更新 policy,去更新 actor。

2.3 tips

2.3.1 前几层共享参数

????????我们需要估计两个网络:V function 、?policy 的网络(也就是 actor)。?

  • Critic 网络V^\pi(s)输入一个状态,输出一个标量。
  • Actor 网络π(s)?输入一个状态,
    • 如果动作是离散的,输出就是一个动作的概率分布。
    • 如果动作是连续的,输出就是一个连续的向量。
  • 这两个网络,actor 和 critic 的输入都是 s,所以它们前面几个层是可以共享的。

????????假设你今天是玩 Atari 游戏,输入都是图像。输入的图像都非常复杂,图像很大,通常你前面都会用一些 CNN 来处理,把那些图像抽象成高级的信息。把像素级别的信息抽象成高级信息这件事情,其实对 actor 跟 critic 来说是可以共用的。所以通常你会让 actor 跟 critic 的前面几个层共用同一组参数,那这一组参数可能是 CNN 的参数。

? ? ? ? 换句话说,先把输入的像素变成比较高级的信息,然后再给 actor 去决定说它要采取什么样的行为;给?critic去计算V function。

2.3.2 探索机制exploration

????????在做 Actor-Critic 的时候,有一个常见的探索的方法是去约束 π?的输出的分布

????????这个约束是希望这个分布的熵(entropy)不要太小,希望这个分布的熵可以大一点,也就是希望不同的动作它的被采用的概率平均一点。

????????这样在测试的时候,它才会多尝试各种不同的动作,才会把这个环境探索的比较好,才会得到比较好的结果。

3 A3C

3.1 大体思想(来自李宏毅教授)

????????强化学习有一个问题就是它很慢,那怎么增加训练的速度呢?李宏毅教授举了一个很直观的例子:

????????有一次鸣人说,他想要在一周之内打败晓,所以要加快修行的速度,他老师就教他一个方法:用影分身进行同样修行。两个一起修行的话,经验值累积的速度就会变成 2 倍,所以鸣人就开了 1000 个影分身来进行修行。这个其实就是?Asynchronous(异步的) Advantage Actor-Critic,也就是 A3C 这个方法的精神。

?3.2 主体框架

????????A3C 这个方法就是同时开很多个 worker,那每一个 worker 其实就是一个影分身。那最后这些影分身会把所有的经验,通通集合在一起。你如果没有很多个 CPU,可能也是不好实现的,你可以实现 A2C 就好。

  • A3C 一开始有一个 global network。假设 global network 的参数是θ1?,你会开很多个 worker。每一个 worker 就用一张 CPU 去跑。比如你就开 8 个 worker,那你至少 8 张 CPU。每一个 worker 工作前都会将 global network 的参数复制过来。
  • 接下来你就去跟环境做互动。每一个 actor 跟环境做互动,互动完之后,你就会计算出梯度。计算出梯度以后,用你的梯度去更新 global network 的参数。(就是这个 worker 算出梯度以后,就把梯度传回给中央的控制中心,然后中央的控制中心就会拿这个梯度去更新原来的参数。)

  • 下一步,这个worker将更新完的参数θ2复制回来,继续同样的过程。

????????注意,所有的 actor 都是平行跑的,每一个 actor 就是各做各的,不管彼此。

????????所以每个人都是去要了一个参数以后,做完就把参数传回去。

? ? ? ? 因此当第一个 worker 做完想要把参数传回去的时候,本来它要的参数是θ1?,等它要把梯度传回去的时候。可能别人已经把原来的参数覆盖掉,变成θ2?了。但是没有关系,global network 对θ2进行更新(使用worker传回的梯度)。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:42:25  更:2021-12-01 17:45:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:25:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码