我有一个连续的状态空间和一个连续的动作空间。按照我的理解,我可以构建一个策略网络,该网络将连续状态向量作为输入,并输出动作分布的均值向量和协方差矩阵。为了得到一个有效的动作,我从那个分布中取样。
但是,当尝试实现这样的网络时,我收到错误消息,即我想成为协方差矩阵的输出层部分是奇异的/不是半正定的。我怎样才能解决这个问题?我为最后一层尝试了不同的激活函数和初始化,但有时我会再次遇到同样的问题。
如何强制我的网络输出有效的协方差矩阵?
我有一个连续的状态空间和一个连续的动作空间。按照我的理解,我可以构建一个策略网络,该网络将连续状态向量作为输入,并输出动作分布的均值向量和协方差矩阵。为了得到一个有效的动作,我从那个分布中取样。
但是,当尝试实现这样的网络时,我收到错误消息,即我想成为协方差矩阵的输出层部分是奇异的/不是半正定的。我怎样才能解决这个问题?我为最后一层尝试了不同的激活函数和初始化,但有时我会再次遇到同样的问题。
如何强制我的网络输出有效的协方差矩阵?
通常假设不同动作之间没有相关性,因此协方差矩阵将在除主对角线之外的所有位置为零。对角线将代表动作的变化。如果对角线上的所有值都为,则对角协方差矩阵将是半正定的0 所以你需要确保最后一层的输出是0,例如可以通过 ReLU 激活来完成。
@Brale_ 的答案是正确的,在众多模型中,学习独立多元正态的表示是一种常见的做法,但不要让这阻止您根据自己的需要挑战极限。
您实际上也可以学习从属形式。通常,独立形式是通过学习均值和标准差来完成的,因为对标准正态进行采样可以通过以下方式实现您的平局经过在哪里是从单位法线绘制的。
但是您实际上可以为广义多元正态分布实现类似的技巧:假设您尝试学习在哪里是协方差矩阵。所以你要做的是学习Cholesky 分解,因为在哪里您现在可以通过参数化技巧来绘制它:.
@mshlis,如果是协方差矩阵,则存在英石.
但是如果我们生成按模型计算,则 Cholesky 分解不会成功