首页 > 编程语言 >强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

时间:2023-06-26 23:00:48浏览次数:48  
标签:常见问题 策略 演员 算法 A2C 评论员 必答 pi theta

强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

1.核心词汇

  • 优势演员-评论员(advantage actor-critic,A2C)算法:一种改进的演员-评论员(actor-critic)算法。

  • 异步优势演员-评论员(asynchronous advantage actor-critic,A3C)算法:一种改进的演员-评论员算法,通过异步的操作,实现强化学习模型训练的加速。

  • 路径衍生策略梯度(pathwise derivative policy gradient):一种使用Q学习来求解连续动作的算法,也是一种演员-评论员算法。其会对演员提供价值最大的动作,而不仅仅是提供某一个动作的好坏程度。

2.常见问题汇总

2.1 完整的优势演员-评论员算法的工作流程是怎样的?

在传统的方法中,我们有一个策略 $\pi$ 以及一个初始的演员与环境交互、收集数据以及反馈。通过每一步得到的反馈,我们进一步更新我们的策略 $\pi$ ,通常我们使用的更新方式是策略梯度。但是对于演员-评论员算法,我们不是直接使用每一步得到的数据和反馈进行策略 $\pi$ 的更新,而是使用这些数据和反馈进行价值函数的估计,这里我们通常使用的算法包括时序差分和蒙特卡洛等算法以及基于它们的优化算法。接下来我们再基于价值函数来更新策略,公式如下:

$$
\nabla \bar{R}{\theta} \approx \frac{1}{N} \sum{n=1}^{N} \sum_{t=1}{T_{n}}\left(r_{t}{n}+V_{\pi}\left(s_{t+1}{n}\right)-V_{\pi}\left(s_{t}{n}\right)\right) \nabla \log p_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right)
$$

其中 $r_{t}{n}+V_{\pi}\left(s_{t+1}{n}\right)-V_{\pi}\left(s_{t}^{n}\right)$ 为优势函数。我们通过以上方法得到新的策略后,再与环境交互,然后重复预估价值函数的操作,用价值函数来更新我们的策略。以上的整个方法我们称为优势演员-评论员算法。

2.2 在实现演员-评论员算法的时候有哪些技巧?

(1)预估两个网络:一个是价值网络;另外一个是策略网络。价值网络的输入是一个状态,输出是一个标签;策略网络的输入是一个状态,输出是一个动作的分布。这两个网络中,演员和评论员的输入都是状态,所以它们前面几层是可以共享的。例如,玩雅达利游戏时,输入都是图片。输入的图片都非常复杂,且比较大,通常前期我们都会用一些卷积神经网络来处理这些图片,把图片抽象成深层次的特征,这些网络对演员与评论员网络来说是可以共用的。我们可以让演员与评论员的前面几层共用同一组参数,这一组参数可能是卷积神经网络中的参数。先把输入的像素变成比较高维度的特征信息,然后输入演员网络决定要采取什么样的动作,评论员网络使用价值函数计算期望奖励。

(2)探索机制:其目的是对策略 $\pi$ 的输出分布进行限制,从而使得分布的熵不要太小,即希望不同的动作被采用的概率平均一些。这样在测试的时候,智能体才会多尝试各种不同的动作,才会对环境进行充分探索,从而得到比较好的结果。

2.3 异步优势演员-评论员算法在训练时有很多的进程进行异步的工作,最后再将他们所获得的“结果”集合到一起。那么其具体是如何运作的呢?

异步优势演员-评论员算法,即算法一开始会有一个全局网络,其包含策略部分和价值部分。假设它的参数是 $\theta_1$,假设对于每一个演员都用一个CPU训练,每一个演员工作前都会将全局网络的参数复制进来。然后演员与环境进行交互,每一个演员与环境交互后,都会计算出梯度并且更新全局网络的参数。这里要注意的是,所有的演员都是并行运行的。所以每个演员都是在全局网络复制了参数以后,执行完再把参数传回去。所以当第一个演员执行完想要把参数传回去的时候,本来它要的参数是 $\theta_1$,等它把梯度传回去的时候,可能原来的参数已经被覆盖,变成 $\theta_2$ 了。

2.4 对比经典的Q学习算法,路径衍生策略梯度有哪些改进之处?

(1)把 $Q(s,a)$ 换成了 $\pi$。经典的Q学习算法是用 $Q(s,a)$ 来决定在状态 $s_t$ 产生哪一个动作 $a_{t}$ ,路径衍生策略梯度是直接用 $\pi$ 来决定。面对前者,我们需要解决最大值的问题,现在的路径衍生策略梯度直接训练了一个演员网络。其输入状态 $s_t$ 就会告诉我们应该采取哪一个动作 $a_{t}$。综上,经典的Q学习算法输入状态 $s_t$,采取哪一个动作 $a_t$ 是 $Q(s,a)$ 决定的,在路径衍生策略梯度里面,我们会直接用 $\pi$ 来决定。

(2)经典的Q学习算法计算在 $s_{i+1}$ 下对应的策略采取的动作 $a$ 得到的Q值,我们会采取让 $\hat{Q}$ 最大的动作 $a$。现在的路径衍生策略梯度因为我们不需要再求解决最大化的问题,所以我们直接把状态 $s_{i+1}$ 代入策略 $\pi$ 中,就会得到在状态 $s_{i+1}$ 下,哪一个动作会带给我们最大的Q值,就执行这个动作。在Q函数中,有两个Q网络,一个是真正的Q网络,另外一个是目标Q网络。实际上在执行时,也会有两个演员网络,一个真正要学习的演员网络 $\pi$ 和一个目标演员网络 $\hat{\pi}$ 。

(3)经典的Q学习算法只需要学习Q函数,路径衍生策略梯度需要多学习一个策略 $\pi$,其目的在于最大化Q函数,希望得到的演员可以让Q函数的输出尽可能的大,这与生成对抗网络里面的生成器的概念类似。

(4)与原来的Q函数一样,我们要把目标Q网络取代掉,路径衍生策略梯度中也要把目标策略取代掉。

3.面试必知必答

3.1 友善的面试官:请简述一下异步优势演员-评论员算法(A3C),另外A3C是同策略还是异策略的模型呀?

A3C是异步优势演员-评论员算法,其中,评论员学习价值函数,同时有多个演员并行训练并且不时与全局参数同步。A3C旨在并行训练,是同策略算法。

3.2友善的面试官:请问演员-评论员算法有何优点呢?

(1)相比以价值函数为中心的算法,演员-评论员算法应用了策略梯度的技巧,这能让它在连续动作或者高维动作空间中选取合适的动作,而Q学习做这件事会很困难。

(2)相比单纯策略梯度,演员-评论员算法应用了Q学习或其他策略评估的做法,使得演员-评论员算法能进行单步更新而不是回合更新,比单纯的策略梯度的效率要高。

3.3友善的面试官:请问异步优势演员-评论员算法具体是如何异步更新的?

下面是异步优势演员-评论员算法的大纲,由于其为异步多线程算法,我们只对其中某一单线程进行分析。

(1)定义全局参数 $\theta$ 和 $w$ 以及特定线程参数 $\theta'$ 和 $w'$。

(2)初始化时间步 $t=1$。

(3)当 $T \leqslant T_{\mathrm{max}}$:

  • 重置梯度:$\mathrm{d} \theta = 0$ 并且 $\mathrm{d}w = 0$。

  • 将特定于线程的参数与全局参数同步:$\theta' = \theta$ 以及 $w'=w$。

  • 令 $t_{\mathrm{start}} =t$ 并且随机采样一个初始状态 $s_t$。

  • 当 ($s_t!=$ 终止状态)并且$t−t_{\mathrm{start}} \leqslant t_{\mathrm{max}}$。

    • 根据当前线程的策略选择当前执行的动作 $a_t\sim\pi_{\theta'}(a_t|s_t)$,执行动作后接收奖励 $r_t$ 然后转移到下一个状态 $s_{t+1}$。
    • 更新 $t$ 以及 $T$:$t=t+1$ 并且 $T=T+1$。
  • 初始化保存累积奖励估计值的变量。

  • 对于 $i=t_1, \dots ,t_{\mathrm{start}}$:

    • $r \gets \gamma r+r_i$;这里的 $r$ 是 $G_i$ 的蒙特卡洛估计。
    • 累积关于参数 $\theta'$ 的梯度:$\mathrm{d} \theta \gets \mathrm{d}\theta + \nabla_{\theta'} \mathrm{log} \pi_{\theta'}(a_i|s_i)(r−V_{w'}(s_i))$。
    • 累积关于参数 $w'$ 的梯度:$\mathrm{d}w \gets \mathrm{d}w+ \mathrm{\partial} (r-V_{w'}(s_i))^2 / \mathrm{\partial} w'$。
  • 分别使用 $\mathrm{d}\theta$ 以及 $\mathrm{d}w$ 异步更新 $\theta$ 以及 $w$。

3.4友善的面试官:演员-评论员算法中,演员和评论员两者的区别是什么?

演员是策略模块,输出动作;评论员是判别器,用来计算价值函数。

3.5友善的面试官:演员-评论员算法框架中的评论员起了什么作用?

评论员衡量当前决策的好坏。结合策略模块,当评论员判别某个动作的选择是有益的时候,策略就更新参数以增大该动作出现的概率,反之减小该动作出现的概率。

3.6友善的面试官:简述异步优势演员-评论员算法的优势函数。

优势函数的计算公式为 $A(s,a)=Q(s,a)-V(s)=r+\gamma V(s')-V(s)$ ,其可以定量地表示选择动作 $a$ 的优势。即当动作 $a$ 低于价值函数的平均值的时候,优势函数为负值;反之为正值。其是一个标量,具体来说:

(1)如果 $A(s,a)>0$ ,梯度被推向正方向;

(2)如果 $A(s,a)<0$ ,即我们的动作比该状态下的平均值还差,则梯度被推向反方向。

这样就需要两个价值函数,所以可以使用时序差分方法做误差估计:$A(s,a)=r+\gamma V(s')-V(s)$ 。

更多优质内容请关注公号:汀丶人工智能

标签:常见问题,策略,演员,算法,A2C,评论员,必答,pi,theta
From: https://www.cnblogs.com/ting1/p/17507387.html

相关文章

  • Linux实例常用内核网络参数与常见问题处理
    查看和修改Linux实例内核参数方法一、通过 /proc/sys/ 目录查看内核参数:使用 cat 查看对应文件的内容,例如执行命令 cat/proc/sys/net/ipv4/tcp_tw_recycle 查看 net.ipv4.tcp_tw_recycle 的值。修改内核参数:使用 echo 修改内核参数对应的文件,例如执行命令 echo"......
  • charles使用常见问题与解决方法
    Charles使用常见问题与解决方法一.charles断点常见问题与解决办法1.开启断点后,客户端刷新页面,charles没有拦截到请求问题原因:客户端和charles有缓存,客户端在发起请求时,会直接从缓存中读取数据,没有请求服务端解决方法:把浏览器和charles的缓存清除,勾选不保存缓存数据2.开启断点后,客......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我们......
  • Openssl安装使用(三):OpenSSL安装常见问题
    (1)执行Configure命令(配置编译参数)”perlconfigureVC-WIN32”遇到如下问题:Can'tlocalWin32/Console.pemin@INC(youmayneedtoinstalltheWin32:Consolemodule)(@INC contains:C:\Perl64\site\libC:\Perl64\lib)atC:\Perl64\lib/ActivePerl/Config.pmline400.......
  • 强化学习从基础到进阶-常见问题和面试必知必答[4]::深度Q网络-DQN、double DQN、经验回
    强化学习从基础到进阶-常见问题和面试必知必答[4]::深度Q网络-DQN、doubleDQN、经验回放、rainbow、分布式DQN1.核心词汇深度Q网络(deepQ-network,DQN):基于深度学习的Q学习算法,其结合了价值函数近似(valuefunctionapproximation)与神经网络技术,并采用目标网络和经验回放等方法进......
  • c++面试常见问题总结
    近来在面试的过程,发现面试官在c++方面总是喜欢问及的一些相关问题总结,当时没怎么答出来,或者是答的不怎么全面,故而查询相关资料总结下。(后面实际工作会进行实时更新信息)<一>c++虚函数方面虚函数(VirtualFunction)是通过一张虚函数表(VirtualTable)来实现的。简称为V-Table。在......
  • 强化学习从基础到进阶-常见问题和面试必知必答[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛
    强化学习从基础到进阶-常见问题和面试必知必答[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛策略、时序差分等以及Qlearning项目实战1.核心词汇概率函数和奖励函数:概率函数定量地表达状态转移的概率,其可以表现环境的随机性。但是实际上,我们经常处于一个未知的环境中,即概率函数和奖励......
  • 强化学习从基础到进阶-常见问题和面试必知必答[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛
    强化学习从基础到进阶-常见问题和面试必知必答[3]:表格型方法:Sarsa、Qlearning;蒙特卡洛策略、时序差分等以及Qlearning项目实战1.核心词汇概率函数和奖励函数:概率函数定量地表达状态转移的概率,其可以表现环境的随机性。但是实际上,我们经常处于一个未知的环境中,即概率函数和奖励......
  • 强化学习从基础到进阶-常见问题和面试必知必答[2]:马尔科夫决策、贝尔曼方程、动态规划
    强化学习从基础到进阶-常见问题和面试必知必答[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代1.马尔科夫决策核心词汇马尔可夫性质(Markovproperty,MP):如果某一个过程未来的状态与过去的状态无关,只由现在的状态决定,那么其具有马尔可夫性质。换句话说,一个状态的下一个状态......