关于线性分类器的一些总结

本文详细介绍了线性分类器的工作原理,包括其分类函数和常见损失函数,如L2loss、hinge loss和交叉熵损失。同时,探讨了softmax函数在分类问题中的应用,以及正则化技术如何避免过拟合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性分类器的分类函数是
f(X)=WX+Bf(X) = WX+Bf(X)=WX+B
其中XXX是特征,WWW是权重矩阵,其行数等于类别数,B是偏置,如果定义X′=(X,1)X'=(X,1)X=(X,1),分类函数可以写成
f(X′)=WX′f(X')= WX'f(X)=WX
所以以下讨论忽略偏置B。线性分类器输出是一个向量,维度等于类别数目,每个元素的取值范围(−inf⁡,inf⁡)(-\inf, \inf)(inf,inf),X被判定为数值最大的维度对应的类别

线性分类器的形式很简单,但用途广泛,下面按照cost 函数不同一一列举

L2 loss

欧式距离损失函数,这个loss历史应该最为悠久
L=1N∑i(si−si′)2 L = \frac{1}{N} \sum_i{(s_i - s'_i)^2} L=N1i(sisi)2
神经网络也使用过L2 loss

hinge loss

先看一个例子,下表是3分类问题的输出结果,表格中的数值是分类器输出,不是概率值,但越大的值表示越可能属于对应类别。所以这个例子中,前两行正确分类,最后一行真实类别是car,但被错误分类成dog。

dogcatcar
dog2.2-91
cat0.332
car40.13

第一行表示真实类别是dog,分类器输出对应dog的值是2.2,对应cat的值是-9,对应car的值是1。则这个样本对应的hinge loss就是
L(dog)=max(0,1+(−9)−2.2)+max(0,1+1−2.2)=7.8+0=7.8 L(dog) = max(0, 1+(-9)-2.2) + max(0, 1+1-2.2) = 7.8 + 0 = 7.8 L(dog)=max(0,1+(9)2.2)+max(0,1+12.2)=7.8+0=7.8
同理第二行对应的样本的loss是
L(cat)=max(0,1+0.3−3)+max(0,1+2−3)=0+0=0 L(cat) = max(0, 1+0.3-3) + max(0, 1+2-3) = 0 + 0 = 0 L(cat)=max(0,1+0.33)+max(0,1+23)=0+0=0

hinge loss的公是如下
L(xi)=∑j≠imax(0,margin+sj−si)L(x_i) = \sum_{j \neq i} max(0, margin+s_j - s_i)L(xi)=j̸=imax(0,margin+sjsi)
其中sis_isisjs_jsj是分类器的输出,xix_ixi是输入样本, sis_isi是真实类别对应的输出,sjs_jsj是错误类别对应的输出,margin是一个超参,上面的例子里margin=1margin=1margin=1。考虑下hinge loss什么时候不等于0?

  • sj≤si−margins_j \leq s_i - marginsjsimargin时,分类正确,对应的hinge loss = 0
  • si−margin&lt;sj&lt;sis_i - margin &lt; s_j &lt; s_isimargin<sj<si时,分类正确,但是hinge loss 大于0
  • sj≥sjs_j \geq s_jsjsj 时,分类错误,hinge loss大于0

使用hinge loss最具代表的就是SVM。

交叉熵损失函数

交叉熵可以描述两个分布之间的差异,对于两个分布{ai}\{a_i\}{ai}{bi}\{b_i\}{bi},其中i=0,1,...,Ni=0,1,...,Ni=0,1,...,N,二者之间的交叉熵定义为
CE(a,b)=−∑i=0Nailogbi CE(a,b) = -\sum_{i=0}^{N}{a_i log{b_i}} CE(a,b)=i=0Nailogbi
交叉熵描述两个分布之间差异,交叉熵越大,差异越大。
PS:为什么交叉熵描述分布之间的差异? 相对熵,又称KL散度才是描述两个分布的差异,而交叉熵是KL散度的一项,在给定两个分布的前提下,另一项是固定的,所以此时交叉熵就可以用来表示两个分布的差异了
使用交叉熵损失函数最具代表性的就是神经网络,另外逻辑回归也是用的交叉熵损失函数

softmax函数

分类问题中使用的one-hot编码可以看作是一种概率分布,其每个元素满足[0,1],如果要利用交叉熵loss,则要求分类器输出的也是概率分布,虽然可以min-max方式归一化,但更常用的是softmax函数,因为softmax和交叉熵组合后的导数有不少优势,这个在以后涉及求导时再解释。
如前面的例子,第一行对应样本softmax loss
L(dog)=e2.2e2.2+e−9+e1 L(dog) = \frac{e^{2.2}}{e^{2.2} + e^{-9} + e^{1}} L(dog)=e2.2+e9+e1e2.2
第二行对应样本的softmax loss
L(cat)=e0.3e0.3+e3+e2 L(cat) = \frac{e^{0.3}}{e^{0.3} + e^{3} + e^{2}} L(cat)=e0.3+e3+e2e0.3
softmax loss的数学公是
L(xi)=esi∑jesj L(x_i) = \frac{e^{s_i}}{\sum_j{e^{s_j}}} L(xi)=jesjesi
其中sjs_jsj是分类器预测结果中第j类的值,而样本xix_ixi对应的真实类别就是iii
某个样本的softmax loss的取值范围是[0,1],可以看作是一个概率分布

regulation

regulation的作用是避免网络参数出现太大的值,出现太大的值就容易出现过拟合。当一个模型在训练集(或者还有验证集)上表现优异,而在测试集上表现很差,就是模型学习到一些只属于训练集,而不属于测试集的特征,假设训练集和测试集有足够的代表性,那么模型学习到的就是训练集里的属于噪声的特征。从另一个角度来解释,模型中某个参数如果太大,那么和这个参数计算的特征发生较小的变化,这个变化会被放大,导致模型对这个特征很敏感,很多时候这不是我们所期望的。

L1和L2正则项

这两个是最长使用的正则化条件
L2:L+C∑w2L2: L+C\sum{w^2}L2:L+Cw2
L1:L+C∑∣w∣L1: L+C\sum{|w|}L1:L+Cw
相对而言,L1正则项容易令w为0,即模型中很多参数为零0,称为稀疏化,一般认为参数稀疏化有助于提高模型泛化能力。为什么L1正则项更容易令参数为0? 可以从导数的角度解释:L1范数在0点是不可导的,即其左右两侧符号不同,加了L1的损失函数
L′=L+C∑∣w∣ L&#x27; = L+C\sum|w| L=L+Cw
导数
dL′=dL+C∑sign(w) dL&#x27; = dL + C\sum{sign(w)} dL=dL+Csign(w)
因为在某个参数wiw_iwi为0的左右两侧,Csign(wi)Csign(w_i)Csign(wi)异号,则关于这个参数wiw_iwi,
dL′∈[dL−C,dL+C] dL&#x27; \in [dL - C, dL + C] dL[dLC,dL+C]
显然,只要C不小于dLdLdLwi=0w_i = 0wi=0处的值,则dL′dL&#x27;dLwi=0w_i = 0wi=0处存在一个极小值点(这个点左右两侧异号,则必是极值点)。虽然所有学习方法都希望找到全集最小值点,但实际中很多算法都是在找局部极小值,然后再进一步尝试搜索局部极大值点,所以通过增加L1正则项,在参数wi=0w_i=0wi=0处生成loss函数的一个局部极小值,吸引优化算法尝试令参数wi=0w_i=0wi=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值