11.Logistic Regression、Cross Entropy Loss

1.逻辑回归(Logistic Regression)和线性回归(Linear Regression)的区别:

  • Linear Regression
    • for continuous : y = xw + b
    • 普通线性回归主要用于连续变量的预测,即,线性回归的输出y的取值范围是整个实数区间(y∈R)。
    • 对于回归问题,目标是让预测值和真实值的差距dist(pred−y)最小,可以直接对其进行minimize。
  • Logistic Regression
    • for probability output : y = σ(xw + b) σ:sigmoid or logistic
    • 逻辑回归用于离散变量的分类,即它的输出y的取值范围是一个离散的集合,主要用于类的判别,而且其输出值y表示属于某一类的概率(y∈[0,1])。
    • 对于分类问题,目标是优化那些分类指标,比如accuracy、F1-score或者AUC等。

两者最本质的区别在于分类问题并不能直接去对目标进行最优化,而回归问题可以直接对LOSS进行minimize来求解。要对分类问题的目标优化,可以用分布去拟合样本的分布,然后对分布的参数进行调整。

2.Cross Entropy Loss交叉熵损失:

  • Entropy熵
    Entropy可以视为只和p这一个分布有关H(p)。
  • Uncertainty
  • mwasure of surprise
  • higher entropy = less info
import torch

a = torch.tensor([0.25,0.25,0.25,0.25])

b = torch.tensor([0.1,0.1,0.1,0.7])

c = torch.tensor([0.001,0.001,0.001,0.999])

# 定义Entropy熵计算函数
def Entropy(x):
	return -(x*torch.log2(x)).sum()

# 分别计算每个的Entropy熵
print(Entropy(a))
print(Entropy(b))
print(Entropy(c))

输出结果如下:

tensor(2.)
tensor(1.3568)
tensor(0.0313)

从输出结果中可以看出,Entropy熵意味着系统结构和运动的不确定和无规则,例如a。

  • Cross Entropy交叉熵
    Cross Entropy则是和p,q两个分布有关的H(p,q)。

Cross Entropy可以拆成如下公式:
其中DKL(p∣q)是KL Divergence(KL散度),用来衡量两个分布(P和Q)之间的不相似性,当P和Q越相似,KL越趋近于0。
也就是说当P=Q时,即这两个分布完全一样,后面一项KL散度为0,Cross Entropy就是Entropy。

3.为什么分类常用CEL而不是MSE:

  • Sigmoid+MSE
    可能出现梯度离散问题
  • converge slower
    经验性的问题,CEL的梯度一开始很大收敛很快,到接近期望值时又变小使变化缓慢。

下面采用一个猫狗二分类问题,来分析一下CEL怎么运算:

因为为[0,1]问题,所以P(cat)=y,因此最终结果如下:

如果当前y=1,结果为-ylogP,意味着要最大化ylogP,也就是最大化P;
如果当前y=0,结果为-(1-y)log(1-P),意味着要最大化(1-y)log(1-P),也就是最小化P。

下面再通过一个五分类问题进行表示:

当前实例为一个小狗

P1是真实的分布,而下面的Q1是模型得到的分布,此时计算Cross Entropy为0.916。

当模型得到的分布如下时,此时计算Cross Entropy为0.02,说明此时预测情况已经十分理想。

采用CEL上述两种情况下,Cross Entropy从0.9下降到0.02,
而采用MSE,经过计算只下降了0.3~0.4。
可以看到使用Cross Entropy,梯度更大,所以优化起来速度也更快了。

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments