boyu-ai / Hands-on-RL

https://hrl.boyuai.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

第十四章SAC 算法代码实践中tanh_normal分布的对数概率密度不太对

SurprisedCat opened this issue · comments

# 计算tanh_normal分布的对数概率密度
        log_prob = log_prob - torch.log(1 - torch.tanh(action).pow(2) + 1e-7)

根据公式来看,其中不需要再对action,再执行一次tanh了。

是的,我也发现这个问题,我试着直接使用 action.pow(2) ,效果是一样

image
我查阅了原论文,发现确实有问题,应该直接是action的平方,参考论文附录: (https://arxiv.org/pdf/1801.01290.pdf)[https://arxiv.org/pdf/1801.01290.pdf]'

公式如下
image

commented

uu们,看不懂论文里的这个压缩变换,有会的同学可以教教我吗?
$a=\tanh(u)$
是一一映射,变换之后为什么对应的概率会变呀🤡
为什么不是直接相等:
$\pi(a\mid s)=\mu(u\mid s)$
而是:
$\pi(a\mid s)=\mu(u\mid s)\left | \det(\frac{da}{du})\right |^{-1}$
望指教,不胜感激❤️

uu们,看不懂论文里的这个压缩变换,有会的同学可以教教我吗? a=tanh(u)a=tanh⁡(u)a=\tanh(u) 是一一映射,变换之后为什么对应的概率会变呀🤡 为什么不是直接相等: π(a∣s)=μ(u∣s)π(a∣s)=μ(u∣s)\pi(a\mid s)=\mu(u\mid s) 而是: π(a∣s)=μ(u∣s)∣∣det(dadu)∣∣−1π(a∣s)=μ(u∣s)|det(dadu)|−1\pi(a\mid s)=\mu(u\mid s)\left | \det(\frac{da}{du})\right |^{-1} 望指教,不胜感激❤️

参考我的文章
https://zhuanlan.zhihu.com/p/647639991?utm_psn=1773870892767891457

关于这部分的推导:
image

补充推导:
7e4e165170e667427bb5388900f821aa

commented

@Aegis1863 君所言,令我如拨云见日,茅塞顿开呀😊

如果没理解错,最后实际的动作是,所以根据上面一样的推导,最后的应该还要在原有基础上,即return前加上log_prob -= torch.log(torch.tensor(self.action_bound))
虽然很恰巧的是倒立摆里bound=1。

uu们,看不懂论文里的这个压缩变换,有会的同学可以教教我吗? a=tanh(u)a=tanh⁡(u)a=\tanh(u) 是一一映射,变换之后为什么对应的概率会变呀🤡 为什么不是直接相等: π(a∣s)=μ(u∣s)π(a∣s)=μ(u∣s)\pi(a\mid s)=\mu(u\mid s) 而是: π(a∣s)=μ(u∣s)∣∣det(dadu)∣∣−1π(a∣s)=μ(u∣s)|det(dadu)|−1\pi(a\mid s)=\mu(u\mid s)\left | \det(\frac{da}{du})\right |^{-1} 望指教,不胜感激❤️

参考我的文章 https://zhuanlan.zhihu.com/p/647639991?utm_psn=1773870892767891457

关于这部分的推导: image

补充推导: 7e4e165170e667427bb5388900f821aa

请问一下,这个补充推导和你的关于这部分的推导有啥关系吗?

uu们,看不懂论文里的这个压缩变换,有会的同学可以教教我吗? a=tanh(u)a=tanh⁡(u)a=\tanh(u) 是一一映射,变换之后为什么对应的概率会变呀🤡 为什么不是直接相等: π(a∣s)=μ(u∣s)π(a∣s)=μ(u∣s)\pi(a\mid s)=\mu(u\mid s) 而是: π(a∣s)=μ(u∣s)∣∣det(dadu)∣∣−1π(a∣s)=μ(u∣s)|det(dadu)|−1\pi(a\mid s)=\mu(u\mid s)\left | \det(\frac{da}{du})\right |^{-1} 望指教,不胜感激❤️

参考我的文章 https://zhuanlan.zhihu.com/p/647639991?utm_psn=1773870892767891457
关于这部分的推导: image
补充推导: 7e4e165170e667427bb5388900f821aa

请问一下,这个补充推导和你的关于这部分的推导有啥关系吗?

补充的推导是在其他地方找的,其中(3)式就是我那个回答上面Jordan-Haidee问题的解释。

uu们,看不懂论文里的这个压缩变换,有会的同学可以教教我吗? a=tanh(u)a=tanh⁡(u)a=\tanh(u) 是一一映射,变换之后为什么对应的概率会变呀🤡 为什么不是直接相等: π(a∣s)=μ(u∣s)π(a∣s)=μ(u∣s)\pi(a\mid s)=\mu(u\mid s) 而是: π(a∣s)=μ(u∣s)∣∣det(dadu)∣∣−1π(a∣s)=μ(u∣s)|det(dadu)|−1\pi(a\mid s)=\mu(u\mid s)\left | \det(\frac{da}{du})\right |^{-1} 望指教,不胜感激❤️

参考我的文章 https://zhuanlan.zhihu.com/p/647639991?utm_psn=1773870892767891457
关于这部分的推导: image
补充推导: 7e4e165170e667427bb5388900f821aa

请问一下,这个补充推导和你的关于这部分的推导有啥关系吗?

补充的推导是在其他地方找的,其中(3)式就是我那个回答上面Jordan-Haidee问题的解释。
感谢哥们,这两个方式推出来是一样的。十分感谢
Uploading 屏幕截图 2024-06-26 211247.png…

commented

@xiyanzzz 我也是这么想的。因为action = action_bound * tanh(normal_sample),所以应该在对数概率上减去log action_bound