如何将基于表格的 Q 学习转换为基于神经网络的 Q 学习?

人工智能 神经网络 强化学习 q学习
2021-11-15 12:41:31

我用一张表来表示 Q 函数,同时训练代理在不接触墙壁的情况下接住奶酪。

矩阵的第一行和最后一行(和列)与墙壁相关联。我在最后一个牢房里放了一块奶酪,特工在训练时必须抓到它。

到目前为止,我已经用动态状态完成了它,并且在必要时,我用新状态调整了矩阵的大小。我使用了四个动作(上、左、右和下)。

我现在想使用 ANN 来表示我的 Q 函数。我怎么做?这种神经网络的输入和输出应该是什么?

1个回答

神经网络(NN)是一种“函数逼近器”,即可以用来逼近函数的模型。事实上,一个至少有一个隐藏层的神经网络是一个“通用”的函数逼近器(也就是说,它可以逼近任何函数)。

在数学中,函数f通常表示为形式的映射f:DC, 在哪里DC分别是(输入)和共(输出)f, 和意思是f“地图”DC. 因此,NN(具有至少一个隐藏层)可以逼近任何函数f这种形式的。

在您的上下文中,Qtable 是一个函数:它是状态和动作(输入)和 Q 值(输出)之间的映射,它们是“预期的未来累积奖励”(如果您从某个状态执行某个操作然后继续,您将获得该奖励)遵循相同的政策)。因此,Q 函数可以更正式地表示为Q:(S,A)R, 在哪里S是“状态空间”和A是您问题中的“行动空间”。最初,您的 Q 表不包含正确的(最佳)值。但是,在训练(或学习)之后,希望您的 Q 表将是针对您的特定问题的最佳 Q 函数的近似值。

那么你如何使用 NN 来表示这个表呢?NN 的输入和输出应该是什么?

假设您的Q表被实现为矩阵M. 然后M[s,a]是个Q国家价值s和行动a. 所以,在这种情况下,组合sa是输入,而M[s,a]是你的输出Q功能。

要将此表表示为 NN,您可以将状态和动作作为 NN 的输入,并将状态和动作作为输出Q价值。然后,您将训练 NN(使用例如反向传播)来学习Q(s,a),给定一个状态s和一个动作a作为输入,对所有人sSaA. 所以,在你的Q-学习算法,而不是使用M[s,a]代表Q(s,a),您将简单地使用神经网络的当前输出。

请注意,在实践中,我认为,如果您在每个时间步更新 NN 的权重,您可能会在训练 NN 时遇到问题(因为例如,NN 不能很好地处理相关数据,并且通常,“经验”您从时间步到时间步获得的数据将高度相关)。无论如何,这就是如何使用 NN 来表示一个Q功能。还有其他方法,但至少从概念上讲,这是最简单的方法。