Logistic Regression

Logistic 回归,也称作 Logit 回归。名为回归,实为分类模型。逻辑回归与线性回归非常类似,都是输入特征乘以权重,再加上偏置项。不同之处在于,输出需要通过 Sigmoid 激活函数。

σ(x)=11+ex

Sigmoid 的取值范围为 0 和 1 之间,符合概率的定义。可以将输出值 p 视作属于某个特定类别的概率。而 1p 则为不属于该类别的概率。从而实现了二元分类

x 在被传入 σ 之前,通常称其为 logit。因为按照 logit 函数的定义:logit(x)=log(11x),logit 函数与 logistic 函数是相反的,一个是从 (0,1) 映射到 (,),一个是从 (,) 映射到 (0,1)

对于输出,正类为 1,负类为 0。可以使用下面的损失函数:

lost(θ)={log(y^),if y=1log(1y^),if y=0

当正类接近 0 时,log(0+ϵ)(需要添加一个非常小的 epsilon 避免超出定义域范围) 会非常大,当被正确标为 1 时,log(1) 等于 0。

反之,当负类标为 1 时,损失会极高,当被正确标为 0 时,损失为 0。

把条件函数合并成一个等式:

J(θ)=1mi=1m[yilog(y^i)+(1yi)log(1y^i)]

该损失函数称作对数损失

Softmax Regression

逻辑回归经过推广,可以直接支持多类别分类,而不需要训练并组合多个二元分类,这就是 Softmax 回归。

原理很简单,模型首先计算出每个分类的分数,然后对这些分数应用 softmax 函数(也叫归一化函数),使其满足和为 1,且值域落于 (0,1)

y^i=σ(s^i)=es^ik=1Kes^k

取最高概率的类别:

argmaxkσ(y^)

Softmax 回归一次只能预测一个类,它是多类别,但不是多输出。类和类之间是互斥的。

Softmax 回归使用交叉熵作为损失函数:

J(θ)=1mi=1mk=1Kykilog(y^ki)

其中,内求和(k)是对所有分类的损失计算,外求和(i)是对所有样本的损失计算。

从损失函数中可以发现,负类因为被标记为 0,相当于被忽略了,而只关心正类。当正类被错误标成 0 时,损失值非常大,当被正确标为 1 时,损失之为 0。这里忽略负类其实是合理的,因为 softmax 保证和为 1,而且又只有一个类会被标为 1,则当正类无限趋近于 1 时,其余负类相对应的趋近于 0。

交叉熵源于信息论,两个概率分布 p 和 q 之间的交叉熵定义为:

H(p,q)=xp(x)logq(x)