来自神经网络的动作空间集上的回报分布

时间:2018-11-19 15:52:42

标签: python tensorflow neural-network probability reinforcement-learning

我正在尝试构建一个神经网络,以输出整个动作空间集上的概率分布。

我的动作空间是3个单独动作的向量:[a,b,c]

a可以在其a1,a2,a3中进行3种可能的操作,类似地,b具有b1,b2,b3c具有c1,c2,c3。因此,总共我可以将这些动作3^3 = 27的27种不同组合。最终,神经网络应输出这些动作的27个组合(这是27 x 3的矩阵):[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3],[a1,b1,c2],[a1,b1,c3],.....],依此类推,对于所有27个组合。只需提一下,输入到我的网络的状态就是一个包含5个元素的向量。

我想要一个与这27种组合相关的概率。

我知道我可以通过使用带有27个输出的softmax来关联概率,但是在这种情况下每行都有关联概率的情况下,我不明白网络如何输出矩阵。

1 个答案:

答案 0 :(得分:0)

您是否有任何理由希望它返回这些动作的矩阵?为什么不将27种组合中的每一种映射到0-26整数?因此您的架构看起来像[Linear(5, n), ReLU, Linear(n, .) ... Softmax(Linear(., 27))]。然后,当您需要评估时,可以将其映射回操作序列。这类似于在NLP任务中,通过stoi将多维单词向量映射为整数以进行训练,然后通过itos将其带回整数的方式。

我应该指出,如果您的训练范式涉及对这些离散选择的进一步使用(例如,您在另一个网络的上游使用了argmax),那么argmax的不可区分性意味着建筑学不会学任何东西。我之所以仅提及这一点,是因为您使用了DRL中的“动作空间”这一短语。如果是这种情况,您可能需要考虑像REINFORCE这样的算法,在该算法中可以独立学习动作序列并通过策略梯度在上游使用。