当前位置:   article > 正文

损失函数(loss function)_logistoc损函数是凸函数吗

logistoc损函数是凸函数吗

一. 基础知识

在优化的过程中,只有凸函数局部最优解是全局最优解,因而能够通过梯度下降法找到全局最优解。

二阶可微函数为凸函数的充要条件为Hessian矩阵半正定。

均方差损失函数(MSE),用于线性回归中。
由于sigmoid 等非线性激活函数的存在,使得均方差损失函数在logistic回归和neural network中,不是凸函数,不能通过梯度下降的方法找到局部最优解,进而得到全局最优解。

交叉熵损失函数,是极大似然估计的直接产物。
在分类问题中,作为logistic回归和neural network的的损失函数。
logistic回归中是权重w的凸函数,在neural network中不是凸函数。

信息量,一个事件所能提供信息的多少。
信息量的大小跟事情不确定性的变化有关。
1>不确定性的变化与什么有关?
=>与事情的可能结果的数量有关,与概率有关。
2>如何衡量不确定性的变化的大小?
=>一个事件的信息量就是这个事件发生的概率的负对数 I ( x j ) = − ln ⁡ p ( x j ) I(x_{j}) = - \ln_{}{p(x_{j})} I(xj)=lnp(xj)
可以看出当 p ( x i ) = 1 p(x_{i})=1 p(xi)=1时,即事件的不确定完全消失时,熵为零。
一个不太可能发生的事件发生了,要比一个非常可能发生的事件,提供更多的信息。

信息熵,代表随机变量或整个系统的不确定性。
对整个概率分布进行量化,是跟所有可能性有关系的。每个可能事件的发生都有个概率,信息熵就是平均而言发生一个事件可以得到的信息量的大小。
数学上,信息熵是信息量的期望 H ( X ) = E ( I ( x i ) ) = − ∑ i = 1 n p i log ⁡ p i H(X)=E(I(x_{i}))=-\sum_{i=1}^{n}p_{i} \log_{}{p_{i}} H(X)=E(I(xi))=i=1npilogpi ,其中X为所有可能的事件, p i p_{i} pi为事件 x i x_{i} xi发生的概率。

加权熵,通多权重来体现各个事件的重要程度。 H w ( X ) = − ∑ i = 1 n w i p i log ⁡ p i H_{w}(X)=-\sum_{i=1}^{n} w_{i} p_{i} \log_{}{p_{i}} Hw(X)=i=1nwipilogpi

交叉熵,用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。
H ( p , q ) = − ∑ j = 1 n p ( x j ) ln ⁡ q ( x j ) H(p, q)=-\sum_{j=1}^{n} p(x_{j})\ln_{}{q(x_{j})} H(p,q)=j=1np(xj)lnq(xj)
交叉熵越低,由算法所产生的策略越接近最优策略。
p k = q k p_{k}=q_{k} pk=qk,交叉熵=信息熵,得到最低的交叉熵。即表明了使用真实分布所计算出来对的信息熵。

相对熵,用来衡量两个取值为正的函数或概率分布之间的差异。
相对熵=交叉熵(某个策略)- 信息熵(根据真实分布计算的)
D K L = ∑ j = 1 n p j ln ⁡ p j q j = ∑ j = 1 n p j ln ⁡ p j − ∑ j = 1 n p j ln ⁡ q j = − H ( p ( x ) ) + H ( p , q ) D_{KL} = \sum_{j=1}^{n} p_{j}\ln_{}{\frac{p_{j}}{q_{j}}} = \sum_{j=1}^{n}p_{j}\ln_{}{p_{j}} - \sum_{j=1}^{n}p_{j}\ln_{}{q_{j}} = -H(p(x))+H(p,q) DKL=j=1npjlnqjpj=j=1npjlnpjj=1npjlnqj=H(p(x))+H(p,q)

相关链接


二、回归问题

计算预测值与实际值之间的误差来衡量模型的优劣。

最常用的是MSE M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n} \sum_{i=1}^{n} (y_{i} - \hat{y}_{i})^{2} MSE=n1i=1n(yiy^i)2
缺点:在异常点位置会施以较大的惩罚,所以若存在较多的异常点(或重尾数据),此时MAE效果更好。

不过,MAE y i − y ^ i = 0 y_{i} - \hat{y}_{i}=0 yiy^i=0 处不连续可导,所以不容易优化。

Huber综合二者,是一种使用鲁棒性回归的损失函数,相比较MSE,对异常值不敏感。
在这里插入图片描述


二. 分类问题

优质博文
优质博文2

回归损失:nn.L1Loss() 计算实际值与预测值之间的绝对差之和的平均值

nn.MSELoss() 计算实际值和预测值之间的平方差的平均值

nn.SmoothL1Loss() 以上二者的结合

分类损失

nn.NLLLoss() 负对数似然损失 nn.NLLLoss()+nn.LogSoftmax() = nn.CrossEntropyLoss()

nn.CrossEntropyLoss() 交叉熵损失函数

import torch

import torch.nn as nn

preds = torch.tensor([[1.5,2.5,3.0]]) # 模仿经过模型之后的输出结果

target = torch.tensor([1]) # 真实标签

cross_entropy_loss = torch.nn.CrossEntropyLoss()

log_softmax = torch.nn.LogSoftmax(dim=1)

nllloss = torch.nn.NLLLoss()

cs_loss = cross_entropy_loss(preds,target)

nls_loss = nllloss(log_softmax(preds),target)

print(f’交叉熵损失函数为:{cs_loss}\n先经过log_softmax再经过nll损失函数为:{nls_loss}')

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/144906
推荐阅读
相关标签
  

闽ICP备14008679号