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,梯度更大,所以优化起来速度也更快了。