massquantity / DBRL

Dataset Batch(offline) Reinforcement Learning for recommender system
143 stars 37 forks source link

损失很大 #5

Open EVAKKKK opened 1 year ago

EVAKKKK commented 1 year ago

@massquantity 网络损失从第三轮左右就变得非常大,ndcg一直很小,你的运行结果也是这样吗,不知道哪里的问题 image

EVAKKKK commented 1 year ago

@massquantity 我回看你的博客后发现你当时也有发现这个问题,请问目前GitHub上面的项目是修改过后的吗,为什么损失还是那么的大 image

EVAKKKK commented 1 year ago

@massquantity 我发现你有把求平均注释掉,可为什么我得到的效果还是这么差,so sad

WinnieZM commented 1 year ago

@massquantity 我发现你有把求平均注释掉,可为什么我得到的效果还是这么差,so sad

我跑这个程序的时候用DPPG的方法跑的结果确实不好,但是你试试用BCQ的方法。我不知道说得对不对,我觉得是因为所有数据都是在离线训练的,用DDPG算法的时候也没有说用训练好的策略去收集新数据再训练,整个代码的运行过程都是离线训练,所以用BCQ的方法得到的结果会好一些。我也在做这个方向,或许可以交流一下

EVAKKKK commented 1 year ago

@WinnieZM 我觉得你的想法是对的,不管怎么调整这个学习率或者增大训练轮次都没有太大的效果,ndcg的指标也很小,方便加个联系方式吗 微信:625294067

isofun commented 1 year ago

@massquantity 我发现你有把求平均注释掉,可为什么我得到的效果还是这么差,so sad

我跑这个程序的时候用DPPG的方法跑的结果确实不好,但是你试试用BCQ的方法。我不知道说得对不对,我觉得是因为所有数据都是在离线训练的,用DDPG算法的时候也没有说用训练好的策略去收集新数据再训练,整个代码的运行过程都是离线训练,所以用BCQ的方法得到的结果会好一些。我也在做这个方向,或许可以交流一下

我试了一下bcq,但是actor_loss一下子就变成了绝对值很大的负值,不知道是不是我实现的有问题。。。

WinnieZM commented 1 year ago

@massquantity 我发现你有把求平均注释掉,可为什么我得到的效果还是这么差,so sad

我跑这个程序的时候用DPPG的方法跑的结果确实不好,但是你试试用BCQ的方法。我不知道说得对不对,我觉得是因为所有数据都是在离线训练的,用DDPG算法的时候也没有说用训练好的策略去收集新数据再训练,整个代码的运行过程都是离线训练,所以用BCQ的方法得到的结果会好一些。我也在做这个方向,或许可以交流一下

我试了一下bcq,但是actor_loss一下子就变成了绝对值很大的负值,不知道是不是我实现的有问题。。。

这个代码我用几个方法跑都loss很大,但是BCQ至少可以看到reward是有变化的,我也不知道问题到底出现在哪里

isofun commented 2 months ago

感谢回复!后续我发现是我自己的数据集没有加is_end的标记导致的,但是修复之后损失依旧会持续的缓慢上涨,请问对于这个问题你有什么看法吗?

在 2024-06-07 14:30:25,"FFFFlint" @.***> 写道:

应该是训练稳定性的问题吧,可以试试把policy delay加大一点(默认是1,也就是每经过一个step都会和critic一起更新),比如设置为4,这样actor更新的就慢一点,如果更新太频繁可能会因为critic还没有train得太好而导致actor的loss很大~

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

FFFFlint commented 2 months ago

感谢回复!后续我发现是我自己的数据集没有加is_end的标记导致的,但是修复之后损失依旧会持续的缓慢上涨,请问对于这个问题你有什么看法吗? 在 2024-06-07 14:30:25,"FFFFlint" @.> 写道: 应该是训练稳定性的问题吧,可以试试把policy delay加大一点(默认是1,也就是每经过一个step都会和critic一起更新),比如设置为4,这样actor更新的就慢一点,如果更新太频繁可能会因为critic还没有train得太好而导致actor的loss很大~ — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.>

不好意思,我之前认为我的回复有所欠缺,然后删除了,后面又进行了更多的实验。理论上来讲,actor的loss确实是会一直增大的,因为他是value function的模拟,当前step的value自然越大越好,如果actor loss突然失控,那么critic也会跟着崩掉,所以问题关键在于: