02:损失函数总结

目录

nn.L1Loss:

nn.NLLLoss:

nn.MSELoss:

nn.CrossEntropyLoss:


损失函数是用来估量模型的预测值与真实值的不一致程度,它是一个非负实值函数。我们训练模型的过程,就是通过不断的迭代计算,使用梯度下降的优化算法,使得损失函数越来越小。损失函数越小就表示算法达到意义上的最优。

直白来说,就是用它来描述我们模型的鲁棒性,损失函数越小,模型的鲁棒性就越好。

由于我是以学习pytorch入门,所以这里来看看pytorch的内置函数。

nn.L1Loss:

首要条件是x 和 y 的维度要一样(可以是向量或者矩阵),表示输入x和目标y之间差的绝对值,得到的 loss 维度也是对应一样的。

loss(x,y)=1/n\sum|x_i-y_i|

nn.NLLLoss:

用于多分类的负对数似然损失函数

loss(x, class) = -x[class]

NLLLoss中如果传递了weights参数,会对损失进行加权,公式就变成了

loss(x, class) = -weights[class] * x[class]                     

nn.MSELoss:

均方损失函数 ,输入x和目标y之间均方差

loss(x,y)=1/n\sum(x_i-y_i)^2

nn.CrossEntropyLoss:

多分类用的交叉熵损失函数,LogSoftMax和NLLLoss集成到一个类中,会调用nn.NLLLoss函数,我们可以理解为CrossEntropyLoss()=log_softmax() + NLLLoss()

\begin{aligned} loss(x, class)&=-\text{log}\frac{exp(x[class])}{\sum_j exp(x[j]))}\ &=-x[class] + log(\sum_j exp(x[j])) \end{aligned}

因为使用了NLLLoss,所以也可以传入weight参数,这时loss的计算公式变为:

 loss(x, class) = weights[class] * (-x[class] + log(\sum_j exp(x[j])))

所以一般多分类的情况会使用这个损失函数

你可能感兴趣的:(深度学习杂文,人工智能,深度学习)