machine-learning - 强化学习和POMDP

标签 machine-learning probability neural-network reinforcement-learning markov-models

  • 我正在尝试使用多层神经网络来实现部分可观测马尔可夫过程中的概率函数..
  • 我认为神经网络的输入将是:当前状态、所选操作、结果状态; 输出是 [0,1] 范围内的概率(对当前状态执行选定操作将导致结果状态的概率)
  • 在训练中,我将前面所述的输入输入到神经网络中,并教它针对已发生的每种情况输出=1.0。

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

PS:我认为这是因为我只教了发生的情况,而不是未发生的情况。 但我不能在剧集中的每一步都教它每个未发生的 Action 的输出 = 0.0!

有什么建议可以解决这个问题吗?或者可能是使用 NN 或实现 prob 函数的另一种方式?

谢谢

最佳答案

问题在于所有可能的以下状态的总和必须等于 1。如果您像这样构建网络,则无法保证这一点。我想到了两种可能的选择,其中我假设离散状态。

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

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

对于连续变量,您必须假设分布(例如多元高斯分布)并使用该分布的参数(例如均值和协方差标准差)作为输出。

关于machine-learning - 强化学习和POMDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2750608/

相关文章:

machine-learning - 处理多标签分类中的类不平衡问题

machine-learning - Keras 验证准确度为 0,并且在整个训练过程中保持不变

Azure Batch 终结点作业以 TypeError : the JSON object must be str, bytes 或 bytearray 结束,而不是 MiniBatch

python - 在python中计算狄利克雷分布的pdf

machine-learning - Caffe : train network accuracy = 1 constant ! 准确性问题

matlab - 以其他编程语言导出使用 MATLAB 训练的神经网络

python - python 代码在终端中运行时出现错误

java - java Math.random() 生成 1 到 2 之间的数字,并为每个数字设置概率

java - 模拟抛硬币三次,并打印出出现三反面的情况的百分比

python - 如何为具有S形激活的简单神经网络进行反向传播?