Logistic回归和Softmax回归

一、知识梳理

1.1 Logistic回归

Logistic回归(Logistic Regression,简称LR)是一种常用的处理二分类问题的模型。最早由比利时数学家维尔赫斯特在1838年提出,在二类分类问题中,把因变量y可能属于的两个类分别称为负类和正类,则因变量y\in\left \{ 0,1 \right \},其中0表示负类,1表示正类。而对于线性回归,其值域在负无穷到正无穷上,不好解决该问题。

由此引入了这种非线性变换,把线性回归的值控制在(0,1)之间,这样就成了Logistic回归^{h_{\theta }(x)},使得^{h_{\theta }(x)}\geqslant0.5 时,y=1,^{h_{\theta }(x)}\leqslant 0.5,y=0。Logistic回归尽管名字中有回归,但其实际上是一个分类算法,具体展示情况如下图:

线性回归
Logistic回归

 1.1.1 Logistic回归函数

Logistic回归的函数形式为h{_{\theta }(x)}^{}=g(\theta {_{}}^{T}x),其中x代表样本的特征向量,g(z)代表sigmoid函数,具体计算公式为g(z)=\tfrac{1}{1+e{_{}}^{-z}},sigmoid函数图像如下:

sigmoid

 h{_{\theta}(x)}^{}的作用是,对于给定的输入变量,根据选择的参数确定输出变量y=1的概率,,即后验概率h{_{\theta}(x)}^{}=p(y=1|x,\theta ),h{_{\theta}(x)}^{}的取值范围为(0,1),具体的阈值一般如下:

 1.1.2 Logistic回归的损失函数

Logistic回归中的参数是θ,怎么估计这个参数呢?那么就要定义损失函数,通过最小化损失函数来求解参数。

线性回归中的损失函数是平方误差损失函数,如果Logistic回归也采用这种损失函数形式,那么得到的损失函数将是一个非凸函数。这意味着损失函数会有很多局部极小值,因此不容易找到全局最小值。比如左边这个就是非凸函数的形状,明显右边这个平滑的图不容易陷入局部极小值陷阱。

假设训练数据集为{(x1,y1),(x2,y2),...(xm, ym)},即有m个样本,令x=[x0, x1, ..., xn]T,x0=1,即每个样本有n个特征,y∈{0, 1}。于是把Logistic回归的损失函数定义为对数损失函数:

 J(\theta )=\tfrac{1}{m}\sum_{i=1}^{m}cost({h_{\theta}(x^{i}}^{}),y^{i})

cost({h_{\theta}(x^{i})}^{},y^{i})={-log(h{_{\theta}(x)}^{}) \ if \ y = 1 }

cost({h_{\theta}(x^{i})}^{},y^{i})={-log(1-h{_{\theta}(x)}^{}) \ if \ y = 0 }

这个对数损失函数的特点是:当类别y=1时,损失随着h{_{\theta}(x)}^{}的减小而增大.h{_{\theta}(x)}^{}为1时,损失为0;当类别y=0时,损失随着的增大而增大,h{_{\theta}(x)}^{}为0时,损失为0。h{_{\theta}(x)}^{}与损失cost({h_{\theta}(x}),y)的关系如下图:

进而可以把 cost({h_{\theta}(x}),y)整理为以下的形式:

cost({h_{\theta}(x)}^{},y)=-(ylog({h_{\theta}(x)}^{})+(1-y)log({1-h{_{\theta}(x)}^{}}))

有m个样本,所以我们对已经得每一个损失求和,进一步得到损失函数:

 这个损失函数叫做对数似然损失函数,也有个很好听的名字:交叉熵损失函数(cross entropy loss)。这个损失函数是个凸函数,因此可以用梯度下降法求得使损失函数最小的参数。

1.1.3 Logistic回归梯度下降法

得到了交叉熵损失函数后,可以用梯度下降法来求得使代价函数最小的参数,也就是按下面这个公式更新每个参数θj:

具体推导如下:

已知条件:


 ①首先化简:

 ②把上式代入损失函数中,并对θj求偏导:

 PS:\theta{​{_{j}}^{}}(j=1,2,...n),代表n个特征,i=1,2,...m总共有m个样本,只要搞懂i和j分别的对应关系,推导过程就十分好理解。这个推导比较长,但是推导的结果非常简洁漂亮。将这个偏导数乘以学习率\alpha

,得到了用梯度来更新参数\theta的公式,再用下面这个公式来同时更新所有的参数值,使损失函数最小化,直到模型收敛。

1.1.4  Logistic回归防止过拟合

在损失函数中加入参数θj的L2范数,限制θj的大小,以解决过拟合问题,那么加入正则化项的损失函数为:

相应的,此时的梯度下降算法为:

重复以下步骤直至收敛:

 

1.2 Softmax回归

Logistic回归是用来解决二类分类问题的,如果要解决的问题是多分类问题呢?那就要用到softmax回归了,它是Logistic回归在多分类问题上的推广。此处神经网络模型开始乱入,softmax回归一般用于神经网络的输出层,此时输出层叫做softmax层,也就是一般神经网络的最后一层。

Softmax从字面上来说,可以分成soft和max两个部分。max故名思议就是最大值的意思。Softmax的核心在于soft,而soft有软的含义,与之相对的是hard硬。hardmax最大的特点就是只选出其中一个最大的值,即非黑即白。但是往往在实际中这种方式是不合情理的,比如对于文本分类来说,一篇文章或多或少包含着各种主题信息,我们更期望得到文章对于每个可能的文本类别的概率值(置信度),可以简单理解成属于对应类别的可信度。所以此时用到了soft的概念,Softmax的含义就在于不再唯一的确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。

1.2.1 Softmax函数

首先介绍一下softmax函数,这个函数可以将一个向量(x1,x2,...,xK)映射为一个概率分布(z1,z2,...,zK):

那么在多分类问题中,假设类别标签y∈{1, 2, ..., C}有C个取值,那么给定一个样本x,softmax回归预测x属于类别c的后验概率为:

其中wc是第c类的权重向量。那么样本x属于C个类别中每一个类别的概率用向量形式就可以写为:

 

 其中W=[w1,w2,...,wC]是由C个类的权重向量组成的矩阵,1表示元素全为1的向量,得到{h_{\omega}(x)}^{}

是由所有类别的后验概率组成的向量,第c个元素就是预测为第c类的概率,比如[0.05, 0.01, 0.9, 0.02, 0.02],预测为第3类。

1.2.2 Softmax函数损失函数和梯度下降

假设训练数据集为{(x1,y1),(x2,y2),...(xM, yM)},即有M个样本,softmax回归使用交叉熵损失函数来学习最优的参数矩阵W,对样本进行分类。

由于涉及到多分类,所以损失函数的表示方法稍微复杂一些。我们用C维的one-hot向量y来表示类别标签。对于类别c,其向量表示为:

 

 其中I(\cdot )表示指示函数。则softmax回归的交叉熵损失函数为:

 其中h(W^{T}x^{m})表示样本x^{m}预测为每个类别的后验概率组成的向量。

上面这个式子不太好理解,我们单独拿出一个样本来观察。假设类别有三类,预测一个样本x属于第2类的交叉熵损失为-y_{2}logh({w_{2}}^{T}x),其中y2=[0,1,0],如果预测正确,如h({w_{2}}^{T}x)=[0.1,0.8,0.1],则交叉熵损失[0,-log0.8,0],如果预测错误,如h({w_{2}}^{T}x)=[0.8,0.1,0.1],则交叉熵损失为[0,-log0.1,0],可见预测错误时损失非常大。

同样的,用梯度下降法对损失函数进行优化求解,首先得到损失J(\theta )对参数向量W的梯度:

初始化W0=0,然后对所有参数WC进行迭代更新,直至收敛。

 

 

目录

一、知识梳理

1.1 Logistic回归

 1.1.1 Logistic回归函数

 1.1.2 Logistic回归的损失函数

1.1.3 Logistic回归梯度下降法


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值