pytorch MSE可以被视为BNN的NLL损失吗?

ffx8fchx  于 2023-06-29  发布在  其他
关注(0)|答案(2)|浏览(136)

我正在做一个BNN回归。在定义损失函数时,无论哪种BNN方法,都涉及到负对数似然损失(NLL损失)。我看到有些人会直接使用MSE损失作为NLL损失,有些人会定义自己的NLL损失。所以我的问题是,MSE可以被视为BNN的一种NLL损失吗?这两种损失有什么区别?
我已经尝试使用MSE损失的BNN,它的工作,即使我不完全理解它是适当的或不。我试过torch.nn.NLLLoss,但它不工作。

pn9klfpd

pn9klfpd1#

因为这是一个回归任务,所以使用MSE作为成本函数没有什么错。它并不特别依赖于神经网络,或者在这种情况下BNN。你不能在这里使用 torch.nn.NLLLoss 的原因是因为它期望类索引作为目标/标签,而不是你提供的连续变量。
至于使用MSE损失作为NLL损失,我不知道你想表达什么意思。负对数似然(NLL)损失被视为仅用于PyTorch中的分类问题的成本函数,但实际情况并非如此。我相信这个issue会给予你一个清晰的解释。

7y4bm7vi

7y4bm7vi2#

MSE是具有恒定方差的NLL(参见here)。
因此,MSE

等价于(高斯)对数似然

其中I是单位矩阵(对角线上为1)。
在PyTorch中,您可以使用GaussianNLLLoss来传递方差。
image credits

相关问题