PaddlePaddle / PARL

A high-performance distributed training framework for Reinforcement Learning
https://parl.readthedocs.io/
Apache License 2.0
3.24k stars 819 forks source link

在dqn中terminal==True的时候感觉应该不需要再跑一次网络的,会造成没用的运算 #925

Closed tangmingkai closed 1 year ago

tangmingkai commented 2 years ago

在dqn中terminal==True的时候感觉应该不需要再跑一次网络的,会造成没用的运算

TomorrowIsAnOtherDay commented 2 years ago

是的,因为最后还是拼了个0上去哈哈哈。从计算性能角度来看,影响不大,比如一个episode有1000步,最后一步包含terminal的样本只占了1/1000,优化了这个计算对整体性能影响提升不大。

tangmingkai commented 2 years ago

但是可能在一些情况下,模型里面要加一些特判,否则会运行错误

TomorrowIsAnOtherDay commented 2 years ago

比如?

tangmingkai commented 2 years ago

相当于在terminal的时候,可以选择的action为空集,例如说用RL求TSP问题,网络自动从所有候选点中选择下一个点走,在terminal的时候,候选点为空集,就会出错。

TomorrowIsAnOtherDay commented 2 years ago

TSP问题,你在调用value函数前,先判断一下是否已经选够那么多个点了不就可以了吗?

TomorrowIsAnOtherDay commented 2 years ago

如果你非要让网络输出,那你像NLP领域一样,增加一个结束标志在action set里面不也可以吗?

tangmingkai commented 2 years ago

“TSP问题,你在调用value函数前,先判断一下是否已经选够那么多个点了不就可以了吗?” 我打算用DQN,如果最后一次不去学的话,相当于最后一步的数据学不到了

"如果你非要让网络输出,那你像NLP领域一样,增加一个结束标志在action set里面不也可以吗?" 这种方案确实可以