Q-Learning 的泛化函数

我需要用 Q Learning 做一些工作,关于一个人必须在房子里搬运家具(基本上就是这样)。如果房子足够小,我可以简单地使用一个矩阵来表示动作/奖励,但是随着房子尺寸变大,这就不够了。所以我必须使用某种泛化函数来代替。我的老师建议我不只使用一个,而是使用几个,这样我可以比较它们。你们有什么建议?

我听说在这种情况下,人们正在使用支持向量机,还有神经网络。我不太了解这个领域,所以说不准。我过去有过一些神经网络的经验,但 SVM 似乎更难掌握。还有其他我应该寻找的方法吗?我知道肯定有很多,但我只需要一些入门的东西。

谢谢


回答:

作为术语的复习,在 Q-learning 中,你试图学习 Q 函数,它取决于状态和动作:

Q(S,A) = ????

大多数课程中教授的标准 Q-learning 版本告诉你,对于每个 S 和 A,你需要学习一个表格中的单独值,并告诉你如何执行 Bellman 更新以收敛到最佳值。

现在,假设你不使用表格,而是使用不同的函数逼近器。例如,让我们尝试线性函数。获取你的 (S,A) 对,并考虑你可以从中提取的一堆特征。一个特征的例子是“我是否在墙旁边”,另一个特征是“该动作是否会将对象放置在墙旁边”等等。对这些特征进行编号 f1(S,A), f2(S,A), …

现在,尝试将 Q 函数学习为这些特征的线性函数

Q(S,A) = w1 * f1(S,A) + w2*f2(S,A) ... + wN*fN(S,A)

你应该如何学习权重 w?好吧,既然这是一个家庭作业,我让你自己思考一下。

但是,作为提示,假设你有 K 个可能的状态和每个状态中 M 个可能的动作。假设你定义了 K*M 个特征,每个特征都指示你是否处于特定状态并将采取特定动作。所以

Q(S,A) = w11 * (S==1 && A == 1) + w12 * (S == 1 && A == 2) + w21 * (S==2 && A==3) ...

现在,请注意,对于任何状态/动作对,只有一个特征为 1,其余特征都为 0,因此 Q(S,A) 将等于相应的 w,并且你本质上是在学习一个表格。因此,你可以将标准表格 Q-learning 视为使用这些线性函数进行学习的特例。因此,想想正常的 Q-learning 算法做了什么,以及你应该做什么。

希望你能找到一个小的特征基础,远小于 K*M,这将使你能够很好地表示你的空间。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注