淘先锋技术网

首页 1 2 3 4 5 6 7

首先要提出的问题是。。。什么是损失函数?干什么的(功能)?类型有哪些?

1.什么是损失函数?

        损失函数(loss function)或 代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。例如在统计学和机器学习中被用于模型的(parametric estimation) ,在宏观经济学中被用于风险管理(risk mangement)和决策,在控制理论中被应用于最优控制理论(optimal control theory) 。(百度查找结果。。。)

        没看明白,重头再来,come on!!!

        (自我理解)举个例子:比如说猜你体重,首先我看没看你,就说了200斤(相当于初始化,可能在网络没这么大),然后你说:多了,然后看完你猜120斤,然后你说少了,然后我接着猜140斤,又多了,。。。。然后125,你猜对了(巧了)。

        在此处“多了”,“少了”,就是评价网络的损失函数,只是在网络中,计算出精确的值而已,即在网络中的(y,y_prediction)之间的差值,在训练网络的过程中,loss的值是在不断地缩小/减少。损失函数loss的函数曲线应该是这个样子的,如下:

图1  损失函数图

2.损失函数的类别有哪些?

1》首先直奔主题交叉熵损失函数:nn.CrossEntropyLoss()

函数表达式:

​         

      (多说一句)在做图像分类时效果不错的选择,还有就是当样本数据集不平衡时使用此损失函数,效果也不错哦!

在下推荐一篇写的不错的文章解释关于交叉熵

(补充说明)在网络中 nn.CrossEntropyLoss()=softmax+nn.NLLLoss() 的作用。

一般在网络模型中用到 损失函数 loss  的地方:

criterion = nn.CrossEntropyLoss()   #初始化


loss = criterion(outputs, labels) #计算损失
loss.backward() #反向传播/参数更新

2》损失函数nn.NLLLoss()

官方解释:

https://pytorch.org/docs/stable/generated/torch.nn.NLLLoss.html