• 我正在尝试使用多层NN在部分可观察到的马尔可夫进程中实现概率函数。
  • 我认为NN的输入将是:当前状态,选定的动作,结果状态;输出是[0,1]中的概率(概率。在当前状态上执行选定的动作将导致结果状态)
  • 在培训中,我为在NN之前介绍的输入提供了喂食,并将其输出= 1.0对已经发生的每个情况进行了教导= 1.0。

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

PS:我认为这是因为我教了它仅发生的情况,但不贴上未贴上的案例。.但是我不能在剧集的每个步骤中教会它的输出= 0.0,每次不受影响的动作!

有什么建议如何解决这个问题?还是可能是使用NN或实现ProB函数的另一种方法?

谢谢

有帮助吗?

解决方案

问题在于,以下所有状态的总和必须等于1。如果您这样构建网络,则不能保证。我想到了两种可能的替代方案,我认为我认为离散状态。

  1. 做出预测时,为以下状态运行网络。之后,通过划分所有概率的总和来归一化。
  2. 使用以下状态使用一个输出。然后,您可以使用SoftMax层(如在分类中),并解释该值,然后将其范围从0到1,最多总和为概率。

从数学角度来看,这两个实际上大致相当。

在连续变量的情况下,您必须假设分布(例如多元高斯),并将该分布的参数(例如均值和协方差stdev)作为输出。

其他提示

拟合NN时,您可能需要适合更广泛的数据,在培训中,您是否有任何数据将其拟合到更接近0的概率?如果没有,我怀疑您的结果可能很差。作为第一步,我将尝试在培训数据集中选择一些不同的内容。

您还如何训练NN?您是否尝试过使用其他方法?激活功能如何,可以尝试使用一些不同的激活功能。

有了神经网,我认为选择模型时会进行反复试验。 (对不起,如果所有这些都不够具体。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top