几个月来,我浏览了一下互联网,希望能找到一个对隐式分位回归网络(IQN)用户友好的解释。但是,似乎根本就没有。
在强化学习中,DQN将简单地输出每个动作的Q值。这允许时间差异学习:线性内插Q值的当前估计值(当前选择的动作)到Q‘--下一个状态下最佳动作的值。
分位回归网络更进一步,为每个操作输出一系列值。如果用DQN,我们有Q值的向量,QR给出Q值的子向量。这些Q值在相互比较时(在该子向量中)的可能性是相同的.
例如,如果我们有三个可能的操作,QR可能会输出以下内容:
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-得分必须具有与该子向量中的其他子向量相同的概率。
根据我在检查纸之后所理解的,我们必须为网络提供\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等)
发布于 2018-11-10 15:15:12
我要感谢威尔·达布尼( Will Dabney )和乔治·奥斯特罗夫斯基( Georg Ostrovski )(这篇论文的两位作者)和莫西米诺·托马索利(简易机器学习博客所有者)帮助我理解IQN。
要理解这个算法,您需要知道:
就像C51或QR一样,IQN允许我们在采取一些行动a时估计出整个可能的回报分布。然而,IQN并不像以前那样输出发行版。相反,每次您询问它时,它都会输出一个样本。它输出的红点,你看到的右边,底部的图像。
IQN的最终输出是每个动作的一个标量值。换句话说,每个动作只需一个样本。我们多次重新运行IQN以获得更多的"CurrentState“样本。
IQN接受两个不同阶段的输入: 1)和2)
在训练时,我们也会评估"CurrentState+1“。我们通过通常的TD学习将我们的结果从"CurrentState“引导到"CurrentState+1”,就像通常的DQN一样。不要忘记,对于"CurrentState“和"CurrentState+1”,我们将不得不多次重复前向传递(如步骤5所述),以获得当前和目标分布的几个示例。这使我们很好地了解了这两个发行版的样子。
为什么向网络中输入随机的\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标量值,我们将重用同一层。
发布于 2020-04-10 20:25:04
卡里的S的答案很简洁,内容也很丰富。但是,方程4的解释有点不正确。(文章的最后一节)
w_{ij}确实是一个矩阵,b_j是一个向量。
更好的方法是逐层解释方程:
假设我们有一个\tau,我们希望执行一个前向传递来获得它的值Z_\tau(x_t,a_t)。
对于多次传递,我们可以简单地将所有\tau视为一个批处理,并并行运行前向传递。
上面的概念是通用值函数逼近器(UVFA),而余弦项是因为它得到了良好的经验结果而被选择的。
https://datascience.stackexchange.com/questions/40874
复制相似问题