我正在尝试使用神经网络来近似 Q-learning 中的 Q 值,如Questions about Q-Learning using Neural Networks。正如第一个答案中所建议的,我对输出层使用线性激活函数,而我仍在隐藏层中使用 sigmoid 激活函数(2,尽管我可以稍后更改)。我还使用了一个 NN,它为每个动作返回一个输出按照建议。
然而,对于简单的推车杆平衡问题,该算法仍然存在分歧。所以,我担心我的 Q 更新是错误的。初始化后,我在每个步骤中所做的如下:
- 计算对所有动作使用 NN 的前向传播。
- 选择一个新动作,, 登陆一个新的状态.
- 计算对所有动作使用 NN 的前向传播。
- 将目标 Q 值设置为: 仅针对当前操作,, 同时设置为其他州。注意,我认为这是问题所在。
- 将误差向量设置为
- 通过 NN 反向传播误差以更新权重矩阵。
谁能指出我哪里出错了?
此外,您认为我是否应该在输入层和第一个隐藏层(即用于 sigmoid 函数)中包含一个偏差项?它会有所作为吗?
非常感谢您的帮助。如果需要,我可以帮助澄清问题或共享代码。