Logistic回归与Softmax回归

来源:互联网 发布:贵州 大数据大诚信 编辑:程序博客网 时间:2024/05/16 12:40

Logistic回归与Softmax回归

Logistic回归和Softmax回归属于机器学习和深度学习中比较经典和基础的两个算法,许多优秀的模型中都使用到了这两个算法。所以这周打算整理和介绍一下Logistic回归和Softmax回归。

线性回归

既然这两个算法中都有“回归”二字,因此我们有必要先复习一下回归(regression)问题。回归问题的形象表述如下,假设我们有一批带标记的样本数据{(x(1),y(1)),...,(x(m),y(m))},其中x(i)Rm+1m+1维特征向量(x(i)0=1表示偏置项);y(i)R是特征向量x(i)对应的目标值。我们期望找到一个函数:y=h(x)使得y(i)h(x(i))对每个样本数据都成立,这就是回归问题的目标。当然h(x)可以选择很多种类型,从方便计算的角度,我们通常选择线性函数类

hθ(x)=jθjxj=θTx
表示我们的目标函数,θ表示函数hθ(x)依赖参数θ,从而得到了线性回归(Linear Regression)。为了找到最优参数θ,循着我们的目标,我们定义目标值y(i)与预测值hθ(x(i))之间的误差为损失函数,并使之最小化。通常我们采用梯度下降法,在参数上迭代寻找最优参数。
线性回归虽然简单,但是它是许多复杂算法的基础,甚至可以认为线性回归是机器学习任务的本质,比如神经网络也是对线性值的处理组合等。

Logistic回归

Logistic回归的样本数据集同样可以表示为{(x(1),y(1)),...,(x(m),y(m))},其中x(i)Rm+1m+1维特征向量(x(i)0=1表示偏置项);但是y(i){0,1}只取二值。因此Logistic回归是针对二分类问题的算法。因此我们需要对目标函数y=hθ(x)稍作修改,将预测值改为,预测属于“1”类或“0”类的概率。

p(y=1|x)=hθ(x)=11+exp(θTx)=σ(θTx)p(y=0|x)=1p(y=1|x)=1hθ(x)
可以看到Logistic回归只是在线性回归的结果值外面套了一层Sigmoid函数,将θTx的值压缩到[0,1]区间,将其解释为概率(并非真正的随机性概率)。因此我们希望选择的参数θ,当样本x属于类“1”时,p(y=1|x)=hθ(x)尽可能大;当样本x属于类“0”时,p(y=0|x)=1hθ(x)尽可能大。
观察上面的两个概率函数,我们可以将其更加简洁的表示为一个函数:
p(y|x;θ)=(hθ(x))y(1hθ(x))1y
所以当我们有我们有m个相互独立的训练样本时,我们期望m个样本的概率预测值的连乘积尽可能大,我们称这个函数为似然函数L(θ)
L(θ)=Πmi=1p(y(i)|x(i);θ)=Πmi=1(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)
似然函数的并不易求解,通常我们在其外面套一个单调递减的函数log(x),当log(L(θ))取得极小值时,L(θ)同时就取得了极大值。我们称这个此时的目标函数为负对数似然函数J(θ)
J(θ)=log(L(θ))=i=1m{y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))}
同样我们可以利用梯度下降算法来迭代寻找最佳参数θ

Softmax回归

Softmax也是用来解决分类问题的,不过Softmax是用来解决多分类问题的(分类类别多于二类)。所以Softmax回归的样本数据集同样可以表示为{(x(1),y(1)),...,(x(m),y(m))},其中x(i)Rmm维特征向量;但是y(i){1,2,...,K}k种类别取值可能。
因此当给定一个x(i)时,我们想计算出y(i)属于每一个类别j的概率p(y(i)=j|x;θ),因此我们需要k个线性回归函数并将其值压缩到区间[0,1],所以此时的hθ(x)输出是一个k维向量(向量所有元素之和为1)。具体的,我们可以将hθ(x)表示如下:

hθ(x)=p(y=1|x;θ)p(y=2|x;θ)p(y=K|x;θ)=1Kj=1exp(θTj(x))exp(θT1(x))exp(θT2(x))exp(θTK(x))
其中,θjRn+1(j=1,2,...,K)表示每一个线性回归函数的参数。1Kj=1exp(θTj(x))用来对概率分布进行归一化,使得概率之和等于1。
为了将hθ(x)的形式与上面的线性回归和Logistic回归统一,我们可以将θ写成矩阵的形式:
θ=θ1θ2θKθT=————————θT1θT2θTK————————hθ(x)=softmax(θTx)
下面需要定义softmax回归的代价函数,为了方便表述,函数记号1{}表示示性函数,其取值规则如下:
{1{}=11{}=0
同样的我们希望概率似然函数的值尽可能大
maxθJ(θ)=Πmi=1ΠKk=1(softmax(θTkx(i)))1{y(i)=k}
在外面套上log(x)函数,经过化简得
minθJ(θ)=i=1mk=1K1{y(i)=k}log(softmax(θTkx(i)))
采用梯度下降法,迭代求解J(θ)的极小值。
J(θ)θlt======θlt{i=1mk=1K1{y(i)=k}logexp(θTlx(i))Kj=1exp(θTjx(i))}i=1mk=1Kθlt(1{y(i)=k}logexp(θTlx(i))Kj=1exp(θTjx(i)))i=1mk=1Kθlt(1{y(i)=k}(θTlx(i)log(j=1Kexp(θTjx(i))))i=1mk=1Kθlt(1{y(i)=k}(θTlx(i)))θlt(1{y(i)=k}log(j=1Kexp(θTjx(i))))i=1m((1{y(i)=l}x(i)t)(p(y(i)=l|x(i);θ)x(i)t))i=1mx(i)t(1{y(i)=l}p(y(i)=l|x(i);θ))
将所有上式写成向量的形式有
θjJ(θ)=i=1mx(i)(1{y(i)=l}p(y(i)=l|x(i);θ))
Softmax回归之所以要取指数,第一是为了契合max,使大的更大,这样就能从错误中快速学习;同时指数函数也方便求导。
经过上面的推导,我们可以发现,当类别数k=2时,Softmax回归退化为Logistic回归。所以Logistic回归是Softmax回归的一种特殊情况。
既然Softmax回归是一种多分类算法,那实际应用中,我们是选择Softmax分类器,还是构造k个独立的Logistic二分类器呢?通常情况下,这取决于分类类别是否互斥,如果互斥,我们一般采用Softmax回归;如果分类类别不是互斥的,一般采用k个Logistic回归分类器更为合适。这样,对于每个类别,我们的算法可以分别判断它是否属于各个类别。

参考文献

ufldl-Softmax回归