neural-network - 如何用神经网络实现Q-learning?

标签 neural-network reinforcement-learning

我创建了一个具有 2 个输入节点、4 个隐藏节点和 3 个输出节点的神经网络。初始权重在-1到1之间随机。我使用反向传播方法来更新具有TD误差的网络。不过,表现并不好。

我想知道问题出在哪里?
1. 是否需要偏置节点?
2. 是否需要资格证明?

如果有人可以向我提供任何示例代码,我将非常感激。

最佳答案

是的,您应该包括偏差节点,是的,您应该使用资格跟踪。偏置节点仅提供一个额外的可调参数。将神经网络视为“函数逼近器”,如 Sutton 和 Barto 的书 ( free online ) 中所述。如果神经网络具有参数 theta(包含网络中所有权重的向量),则 Sarsa 更新就是(使用 LaTeX 表示法):

\delta_t = r_t +\gamma*Q(s_{t+1},a_{t+1},\theta_t) - Q(s_t,a_t,\theta_t)

\theta_{t+1} =\theta_t +\alpha*\delta_t*\frac{\partial Q(s,a,\theta)}{\partial\theta}

这适用于任何函数逼近器 Q(s,a,\theta),它通过调整其参数\theta 来估计 Q(s,a)。

但是,我必须问你为什么要这样做。如果您只是想让 Q 学习真正发挥作用,那么您应该使用傅里叶基础而不是神经网络:

http://all.cs.umass.edu/pubs/2011/konidaris_o_t_11.pdf

如果您确实想使用神经网络进行强化学习,那么您应该使用自然 Actor 批评家 (NAC)。 NAC 遵循所谓的“自然梯度”,它是由 Amari 专门开发的,旨在使用神经网络加速学习,并且它会产生巨大的差异。

关于neural-network - 如何用神经网络实现Q-learning?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13928501/

相关文章:

machine-learning - 无函数逼近的梯度时差 Lambda

reinforcement-learning - 深度强化学习中的有效奖励范围

python - 使用PyTorch 'nn.Sequential'时如何访问网络权重?

python - tensorflow 随机值在单次运行中是否保证相同?

python - 具有 Softmax 输出的神经网络

c++ - Epsilon Greedy 在少量武器上表现优于 UCB

artificial-intelligence - 如何开始神经网络编程

python - 卷积神经网络中的形状误差

machine-learning - Q 学习、时差、基于模型的强化学习

machine-learning - 为什么RL叫 'reinforcement'学习?