如何强制协方差矩阵输出作为策略网络最后一层的一部分?

人工智能 机器学习 强化学习 政策梯度
2021-11-06 03:27:29

我有一个连续的状态空间和一个连续的动作空间。按照我的理解,我可以构建一个策略网络,该网络将连续状态向量作为输入,并输出动作分布的均值向量和协方差矩阵。为了得到一个有效的动作,我从那个分布中取样。

但是,当尝试实现这样的网络时,我收到错误消息,即我想成为协方差矩阵的输出层部分是奇异的/不是半正定的。我怎样才能解决这个问题?我为最后一层尝试了不同的激活函数和初始化,但有时我会再次遇到同样的问题。

如何强制我的网络输出有效的协方差矩阵?

3个回答

通常假设不同动作之间没有相关性,因此协方差矩阵将在除主对角线之外的所有位置为零。对角线将代表动作的变化。如果对角线上的所有值都为,则对角协方差矩阵将是半正定的0 所以你需要确保最后一层的输出是0,例如可以通过 ReLU 激活来完成。

@Brale_ 的答案是正确的,在众多模型中,学习独立多元正态的表示是一种常见的做法,但不要让这阻止您根据自己的需要挑战极限。

您实际上也可以学习从属形式。通常,独立形式是通过学习均值和标准差来完成的,因为对标准正态进行采样可以通过以下方式实现您的平局zN(μ,Diag(σ2))经过z=μ+σϵ在哪里ϵ是从单位法线绘制的。

但是您实际上可以为广义多元正态分布实现类似的技巧:假设您尝试学习N(μ,Σ)在哪里Σ是协方差矩阵。所以你要做的是学习Cholesky 分解,因为在哪里Σ=AAT您现在可以通过参数化技巧来绘制它:z=μ+Aϵ.

@mshlis,如果σ是协方差矩阵,则存在A英石σ=AAT.

但是如果我们生成A按模型计算σ=AAT,则 Cholesky 分解不会成功