首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内隐分位数回归网络(IQN)与QR有何不同?

内隐分位数回归网络(IQN)与QR有何不同?
EN

Data Science用户
提问于 2018-11-07 14:57:17
回答 2查看 2.9K关注 0票数 11

几个月来,我浏览了一下互联网,希望能找到一个对隐式分位回归网络(IQN)用户友好的解释。但是,似乎根本就没有。

在普通语言中,IQN分位数回归网络有何不同?

在强化学习中,DQN将简单地输出每个动作的Q值。这允许时间差异学习:线性内插Q值的当前估计值(当前选择的动作)到Q‘--下一个状态下最佳动作的值。

分位回归网络更进一步,为每个操作输出一系列值。如果用DQN,我们有Q值的向量,QR给出Q值的子向量。这些Q值在相互比较时(在该子向量中)的可能性是相同的.

例如,如果我们有三个可能的操作,QR可能会输出以下内容:

代码语言:javascript
运行
复制
Q estimates for Action0:  -15,  -5,  120,  121   130    
Q estimates for Action1:   20,  25,  200,  210   300
Q estimates for Action2:   18,  40,   41,   54   120

再次,在使用QR-Network时,我们将-15, -5, 120, 121, 130视为发生的概率相同:在我的例子中是0.2 %或20%

换句话说,现在每个动作的值位于5个不同分位数的中间位置:\tau = 0.1,\tau=0.3,\tau=0.5,\tau=0.7,\tau=0.9

因此,我们可以说,对于Action0:

  • -\infty#qcStackCode#、-10中出现20%的概率值
  • -\infty#qcStackCode#,57.5中出现40%的概率值
  • -\infty#qcStackCode#,120.5中出现的概率为60%的值
  • -\infty#qcStackCode#,121.5中出现80%的概率值
  • -\infty#qcStackCode#+\infty#qcStackCode#中出现100%值的概率

最后,对于QR-网,我们要求它输出正确的子向量,因为我们知道每个q-得分必须具有与该子向量中的其他子向量相同的概率。

现在,IQN是如何工作的?

根据我在检查之后所理解的,我们必须为网络提供\tau本身(在我的示例中是0.1、0.3、0.5、0.7或0.9),

或者我们应该给它喂食几个随机的\tau,从0,1的范围拉出来?比方说,我们应该继续获取0.35, 0.05, 0.1, 0.2, 0.11,,还是应该在取出其中5个\tau值之后停止呢?这是否意味着我们必须为每一个\tau做一个前传,或者我们可以同时使用它们的一个向量?

正如我所理解的,我们必须将这个\tau作为输入输入到网络中,以及状态向量(连接)。

IQN每个动作只输出一个值,还是像QR-Network那样的向量?

IQN的论文给出了一幅图片,但我无法理解第四张图片背后的直觉:

为什么上面的图像显示f函数在DQN和IQN中使用,而不是在C51或QR中使用?这是否意味着输出不再是向量的向量,而是向量,就像通常的DQN中的向量一样?

IQN的主旨在下面的段落中,但我不能完全理解它。余弦背后的直觉是什么?我知道它是一个周期性函数,为什么它要用i=0到i=64计算64次,使用相同的\tau (例如,\tau=0.4等)

EN

回答 2

Data Science用户

回答已采纳

发布于 2018-11-10 15:15:12

我要感谢威尔·达布尼( Will Dabney )和乔治·奥斯特罗夫斯基( Georg Ostrovski )(这篇论文的两位作者)和莫西米诺·托马索利(简易机器学习博客所有者)帮助我理解IQN。

要理解这个算法,您需要知道:

  • TD学习
  • 强化学习的价值功能
  • DQN是什么。
  • C51是什么
  • 什么是累积分布函数(CDF)
  • 反民防是什么意思。

就像C51或QR一样,IQN允许我们在采取一些行动a时估计出整个可能的回报分布。然而,IQN并不像以前那样输出发行版。相反,每次您询问它时,它都会输出一个样本。它输出的红点,你看到的右边,底部的图像。

IQN的最终输出是每个动作的一个标量值。换句话说,每个动作只需一个样本。我们多次重新运行IQN以获得更多的"CurrentState“样本。

IQN接受两个不同阶段的输入: 1)和2)

  1. 首先,IQN获取当前状态S(它是向量),将其转换为另一个向量V(例如,维数10)。
  2. 现在,我们将任何称为\tau的随机标量值(从统一的0,1范围中提取),并将该标量值输入函数\phi(\tau)。它给出了一个向量H,它的维数与V相同
  3. 然后,将向量V和H通过级联结合起来。事实上,如果没有更多的前向层,我们将执行乘法而不是级联。
  4. 在这一前传结束时,我们的IQN输出一个包含我们试图估计的动作分布样本的x-A-维向量。另一种说法是“行动的数量”。注意:因为IQN输出的是向量,而不是矩阵(就像QR那样),所以在执行当前状态的前向传递时,每个动作只能得到一个标量样本。
  5. 为了获得更多的样本,我们必须返回到步骤2),并重新运行与另一个标量\tau从0,1范围再次采样的前向传递。当然,如果硬件允许的话,我们也可以重复使用IQN,并行运行所需数量的前传。不需要从步骤1开始),因为我们只关心\tau实际进入系统的终端层。“任何前面的层”无论如何都会被重新计算成相同的值。

在训练时,我们也会评估"CurrentState+1“。我们通过通常的TD学习将我们的结果从"CurrentState“引导到"CurrentState+1”,就像通常的DQN一样。不要忘记,对于"CurrentState“和"CurrentState+1”,我们将不得不多次重复前向传递(如步骤5所述),以获得当前和目标分布的几个示例。这使我们很好地了解了这两个发行版的样子。

  1. 本文认为,在大多数情况下,重新运行前通过8次(从而得到8个样本),足以逼近Z_{\tau}和我们的目标分布Z (对“CurrState+1”的最佳动作的分布)。因此,我们总共执行了16次前传:8次为"CurrentState“,8次为"CurrentState+1”,以了解这两个发行版。

为什么向网络中输入随机的\tau是有效的?

你必须明白,经过良好训练的IQN网络代表着一个反向的CDF本身。也就是说,如果请求某个标量的“金额”值(取自0到1的均匀范围),逆of将从实际分布中输出一个值,该值位于该值。

虽然发行版不一定像Bell曲线,但请看下面的示例:

为什么作者在\phi(\tau)中使用余弦?我仍然不知道,但文件的附录部分说,它似乎是最好的。也许它能很好地应用于ReLU。

我也被w_{ij}b_j弄糊涂了。在我看来,似乎有一个权重矩阵和一个偏差值向量。...Do,我们一次输入一个不同\tau值的完整向量?

答案是否定的。注意,作者使用j只是为了提醒向前传球必须运行几次。总之,在\phi(\tau)中只有i的权重和1种偏倚。

因此,我们得到一些标量\tau,并将其与所有这些权重一起使用。基本上,\phi(\tau)类似于一个简单的完全连接的层,它一次只接受一个标量输入值。对于不同的\tau标量值,我们将重用同一层。

票数 8
EN

Data Science用户

发布于 2020-04-10 20:25:04

卡里的S的答案很简洁,内容也很丰富。但是,方程4的解释有点不正确。(文章的最后一节)

\phi_j(\tau):=\text{ReLU}(\sum\limits^{n-1}_{i=0}\cos(\pi i\tau)w_{ij}+b_j)

w_{ij}确实是一个矩阵,b_j是一个向量。

更好的方法是逐层解释方程:

假设我们有一个\tau,我们希望执行一个前向传递来获得它的值Z_\tau(x_t,a_t)

  • 输入(\tau|\tau|=1)我们有一个标量\tau\tau\sim U([0,1])
  • 中间结果(I_i|I|=n=64)将标量\tau扩展为\cos(\pi i\tau) for i\in[0,n-1]的向量。文中使用了64的I_i=\cos(\pi i\tau)数字。
  • 当前\tau (\phi_j|\phi|=256)的嵌入利用完全连接层将I扩展为|W|=i\cdot j|b|=j\phi\phi_j(\tau):=\text{ReLU}(\sum\limits^{n-1}_{i=0}I_i w_{ij}+b_j) 256号是DQN结构中旋转后层的神经元数目。
  • 然后,我们进行元素级乘法\psi\odot\phi,并继续将其传递到DQN的最后一层。

对于多次传递,我们可以简单地将所有\tau视为一个批处理,并并行运行前向传递。

上面的概念是通用值函数逼近器(UVFA),而余弦项是因为它得到了良好的经验结果而被选择的。

票数 4
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/40874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档