以神经网络为函数逼近的Q学习
我正在尝试使用神经网络来估计Q学习中的Q值,如有关使用神经网络进行Q学习的问题中所述。正如第一个答案中所建议的那样,我在输出层使用线性激活函数,而在隐藏层中仍使用S形激活函数(2,尽管稍后可以更改)。我还使用了单个NN,它根据建议为每个动作返回输出。Q(a)Q(a)Q(a) 但是,对于简单的车杆平衡问题,该算法仍存在分歧。所以,我担心我的Q更新是错误的。初始化之后,我在每个步骤中所做的工作如下: 使用NN对所有动作的前向传播计算。Qt(st)Qt(st)Q_t(s_t) 选择一个新动作,处于新状态。小号ŧatata_tststs_t 使用NN对所有动作的前向传播计算。Qt(st+1)Qt(st+1)Q_t(s_{t+1}) 将目标Q值设置为: 仅针对当前动作a_t,同时为其他状态设置Q_ {t + 1}(s,a_t)= Q_ {t}(s,a_t)。注意,我认为这是问题所在。一吨Q 吨+ 1(小号Qt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)−Qt(st,at)]Qt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)−Qt(st,at)]Q_{t+1}(s_t,a_t)=Q_t(s_t,a_t)+\alpha_t \left[r_{t+1}+\gamma \max_a Q(s_{t+1},a) - Q_t(s_t,a_t) \right]atata_t问t + 1(小号,一Ť)= QŤ(小号,一Ť)Qt+1(s,at)=Qt(s,at)Q_{t+1}(s,a_t)=Q_{t}(s,a_t) 将误差向量设置为e = QŤ 一个ř 克ë 吨- QŤ= Qt + 1- QŤË=问Ť一种[RGËŤ-问Ť=问Ť+1个-问Ť\mathbf{e}=Q_\mathrm{target}-Q_t=Q_{t+1}-Q_t 通过NN向后传播误差,以更新权重矩阵。 有人可以向我指出我哪里出问题了吗? 此外,您认为我应该在输入层和第一个隐藏层中也包含一个偏差项吗(例如,对于S型函数)?会有所作为吗? 预先非常感谢您的帮助。如果需要,我可以帮助您澄清问题或共享代码。