2 回答
TA贡献1780条经验 获得超3个赞
你有没有想过使用狄利克雷分布?您的网络可以输出浓度参数alpha > 0
,然后您可以使用它们生成总和为 1 的样本。两者都PyTorch
支持TF
此发行版,您可以从它们中采样和获取logProb
。在这种情况下,除了获取您的样本之外,由于它是一个概率分布,您还可以了解它的方差,这可以作为代理置信度的衡量标准。对于 3 维的动作,具有alpha={1,1,1}
基本上意味着您的代理没有任何偏好,而具有alpha={100,1,1}
意味着它非常确定大部分权重应该转到第一个维度。
根据评论编辑:
当您使用 Dirichlet 分布时,Vanilla REINFORCE 将很难优化策略。问题是,在普通策略梯度中,您可以通过梯度裁剪和自适应学习率等来控制您在网络参数空间中更改策略的速度。但是,最重要的是控制概率空间中的变化率. 一些网络参数可能会比其他参数更改更多的概率。因此,即使您控制学习率以限制网络参数的增量,您也可能会大大改变 Dirichlet 分布的方差,如果您认为这对您的网络来说是有意义的。为了最大化您的操作的对数概率,您的网络可能更多地关注于减少方差,而不是改变您的分配模式,这会在探索和学习有意义的政策时伤害您。缓解此问题的一种方法是通过限制新策略分布与旧策略分布的 KL 散度来限制策略概率分布的变化率。TRPO 或 PPO 是解决此问题和解决约束优化问题的两种方法。
在实践中确保这一点也可能很好alpha > 1
。您可以通过在将神经网络输出输入到 Drichlet 分发之前在神经网络输出上使用 softplus 轻松实现这一点ln(1+exp(x)) + 1
。还要监视到达您的图层的渐变并确保它存在。
您可能还希望将分布的熵添加到您的目标函数中,以确保进行足够的探索并防止分布具有非常低的方差(非常高的 alpha)。
TA贡献1863条经验 获得超2个赞
在我的脑海中,您可能想尝试 2D-Gaussian 或 multivariate Gaussian。https://en.wikipedia.org/wiki/Gaussian_function
例如,您可以预测 2D-Gaussian 的 4 个参数 (x_0, x_1, sigma_0, sigma_1),您可以在 2D-Gaussian 平面上生成一对数字,例如 (2, 1.5),然后您可以使用 softmax产生想要的动作softmax([2, 1.5])=[0.62245933 0.37754067]
。
然后你可以计算这对数字在二维高斯平面上的概率,然后你可以用它来计算负对数概率、优势等,以制作损失函数并更新梯度。
添加回答
举报