如何让我的代理在我的孪生延迟深度确定性策略梯度 (TD3) 程序中学习?

问题描述 投票:0回答:1

在 ChatGPT (3.5) 的帮助下,我一直在不知疲倦地使用运行双延迟深度确定性策略梯度 (TD3) 的 TensorFlow.js 将强化学习程序从 Python 转换为 JavaScript。我只是想为自己和社区制定一个基本的蓝图。我已经投入了大量的工作,我觉得它应该基本上完成了,但我不明白为什么代理会(非常快地)收敛于单个动作选择(尽管它因此而受到惩罚,甚至进行 300 次迭代测试)。我检查了损失变量,它们似乎按预期工作。虽然我很擅长 JavaScript 并且对一切的工作原理有深入的了解,但我还不是 Python 或 TensorFlow.js 的专业人士,而且 ChatGpt 也不稳定。

我需要一些在以下领域有经验的人来审查我的代码:强化学习、TD3(或 DDPG)、Tensorflow.JS。

一切都在 GitHub 上https://github.com/CloudZero2049/TD3-TensorFlowJS

有关该项目的所有信息都在自述文件中。 TD3script.js 是唯一需要担心的,还有一个没有注释。

我一直在广泛地审查代码和数学,一切似乎都工作正常。但在测试时,代理很快就会发现一个不良行为,即使它受到了惩罚。我尝试了300次迭代,200次预热,100次batch_size,看看是否是时间问题而不进行更改。我对结构和数学很有信心,但显然有些问题。经过多次检查代码并进行改进后,我终于碰壁了,我不知道如何继续。

我预计代理会在某个时候意识到自己做错了什么,并尝试新的东西。如果动作完全随机,我会得到更好的结果。

javascript tensorflow machine-learning reinforcement-learning tensorflow.js
1个回答
0
投票

我遇到的一个大问题是,在通过系统发送输入数据之前,我没有对其进行标准化。我可以自信地说该程序现在正在运行。对于因我表现友善并包含某些词语而对我的帖子投反对票的人(这也是我在这里发表的第一篇帖子,顺便说一句,第一印象很好):你很小气,我不尊重你。

© www.soinside.com 2019 - 2024. All rights reserved.