强化学习与部分可观察马尔可夫决策过程

  • 我试图使用多层神经网络来实现部分可观察马尔可夫过程中的概率函数..
  • 我认为神经网络的输入应该是:当前状态、选择的动作、结果状态;输出是一个在[0,1]之间的概率(执行选择的动作在当前状态下会导致结果状态的概率)
  • 在训练过程中,我将上述输入输入到神经网络中,并且我教它对于每个已经发生的情况输出为1.0。

问题是:
几乎所有测试用例的输出概率都接近0.95..没有输出低于0.9!即使对于几乎不可能的结果,它也给出了如此高的概率。

附注:我认为这是因为我只教它已经发生的情况,而没有教它未发生的情况..但我无法在每一步中教它对于每个未发生的动作输出为0.0!

有什么建议可以克服这个问题吗?或者可能有其他使用神经网络或实现概率函数的方法?


回答:

问题在于所有可能的后续状态的总和必须等于1。如果你这样构建你的网络,这一点无法保证。我想到的两个可能的替代方案,假设是离散状态。

  1. 在进行预测时,对每个可能的后续状态运行网络。之后,通过所有概率的总和进行归一化。
  2. 为每个可能的后续状态使用一个输出。你可以使用一个softmax层(如分类中所用)并将范围从0到1且总和为1的值解释为概率。

从数学角度来看,这两个方法实际上大致等效。

在连续变量的情况下,你将不得不假设分布(例如多元高斯分布)并使用该分布的参数(例如均值和协方差标准差)作为输出。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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