Logistic回归与Softmax回归

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

线性回归

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

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

Logistic回归

Logistic回归的样本数据集同样可以表示为 { ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\} {(x(1),y(1)),...,(x(m),y(m))},其中 x ( i ) ∈ R m + 1 x^{(i)}\in R^{m+1} x(i)Rm+1 m + 1 m+1 m+1维特征向量( x 0 ( i ) = 1 x_0^{(i)}=1 x0(i)=1表示偏置项);但是 y ( i ) ∈ { 0 , 1 } y^{(i)}\in \{0,1\} y(i){0,1}只取二值。因此Logistic回归是针对二分类问题的算法。因此我们需要对目标函数 y = h θ ( x ) y=h_\theta(x) y=hθ(x)稍作修改,将预测值改为,预测属于“1”类或“0”类的概率。
p ( y = 1 ∣ x ) = h θ ( x ) = 1 1 + e x p ( − θ T x ) = σ ( θ T x ) p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = 1 − h θ ( x ) p(y=1|x)=h_\theta(x)=\frac{1}{1+exp(-\theta^Tx)}=\sigma(\theta^Tx)\\ p(y=0|x)=1-p(y=1|x)=1-h_\theta(x) p(y=1x)=hθ(x)=1+exp(θTx)1=σ(θTx)p(y=0x)=1p(y=1x)=1hθ(x)

可以看到Logistic回归只是在线性回归的结果值外面套了一层Sigmoid函数,将 θ T x \theta^Tx θTx的值压缩到[0,1]区间,将其解释为概率(并非真正的随机性概率)。因此我们希望选择的参数 θ \theta θ,当样本 x x x属于类“1”时, p ( y = 1 ∣ x ) = h θ ( x ) p(y=1|x)=h_\theta(x) p(y=1x)=hθ(x)尽可能大;当样本 x x x属于类“0”时, p ( y = 0 ∣ x ) = 1 − h θ ( x ) p(y=0|x)=1-h_\theta(x) p(y=0x)=1hθ(x)尽可能大。
观察上面的两个概率函数,我们可以将其更加简洁的表示为一个函数:
p ( y ∣ x ; θ ) = ( h θ ( x ) ) y ⋅ ( 1 − h θ ( x ) ) 1 − y p(y|x;\theta)=(h_\theta(x))^y\centerdot(1-h_\theta(x))^{1-y} p(yx;θ)=(hθ(x))y(1hθ(x))1y

所以当我们有我们有 m m m个相互独立的训练样本时,我们期望 m m m个样本的概率预测值的连乘积尽可能大,我们称这个函数为似然函数 L ( θ ) L(\theta) L(θ)
L ( θ ) = Π i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = Π i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ⋅ ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\theta)=\Pi_{i=1}^mp(y^{(i)}|x^{(i)};\theta)=\Pi_{i=1}^m(h_\theta(x^{(i)}))^{y^{(i)}}\centerdot(1-h_\theta(x^{(i)}))^{1-y^{(i)}} L(θ)=Πi=1mp(y(i)x(i);θ)=Πi=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)

似然函数的并不易求解,通常我们在其外面套一个单调递减的函数 − l o g ( x ) -log(x) log(x),当 − l o g ( L ( θ ) ) -log(L(\theta)) log(L(θ))取得极小值时, L ( θ ) L(\theta) L(θ)同时就取得了极大值。我们称这个此时的目标函数为负对数似然函数 J ( θ ) J(\theta) J(θ)
J ( θ ) = − l o g ( L ( θ ) ) = − ∑ i = 1 m { y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) } J(\theta)=-log(L(\theta))=-\sum_{i=1}^m\{y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))\} J(θ)=log(L(θ))=i=1m{y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))}

同样我们可以利用梯度下降算法来迭代寻找最佳参数 θ \theta θ

Softmax回归

Softmax也是用来解决分类问题的,不过Softmax是用来解决多分类问题的(分类类别多于二类)。所以Softmax回归的样本数据集同样可以表示为 { ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\} {(x(1),y(1)),...,(x(m),y(m))},其中 x ( i ) ∈ R m x^{(i)}\in R^m x(i)Rm m m m维特征向量;但是 y ( i ) ∈ { 1 , 2 , . . . , K } y^{(i)}\in \{1,2,...,K\} y(i){1,2,...,K} k k k种类别取值可能。
因此当给定一个 x ( i ) x^{(i)} x(i)时,我们想计算出 y ( i ) y^{(i)} y(i)属于每一个类别 j j j的概率 p ( y ( i ) = j ∣ x ; θ ) p(y^{(i)}=j|x;\theta) p(y(i)=jx;θ),因此我们需要 k k k个线性回归函数并将其值压缩到区间[0,1],所以此时的 h θ ( x ) h_\theta(x) hθ(x)输出是一个 k k k维向量(向量所有元素之和为1)。具体的,我们可以将 h θ ( x ) h_\theta(x) hθ(x)表示如下:
h θ ( x ) = [ p ( y = 1 ∣ x ; θ ) p ( y = 2 ∣ x ; θ ) ⋮ p ( y = K ∣ x ; θ ) ] = 1 ∑ j = 1 K e x p ( θ j T ( x ) ) [ e x p ( θ 1 T ( x ) ) e x p ( θ 2 T ( x ) ) ⋮ e x p ( θ K T ( x ) ) ] h_\theta(x)= \left[ \begin{matrix} p(y=1|x;\theta)\\ p(y=2|x;\theta)\\ \vdots\\ p(y=K|x;\theta) \end{matrix} \right] =\frac{1}{\sum_{j=1}^Kexp(\theta_j^T(x))} \left[ \begin{matrix} exp(\theta_1^T(x))\\ exp(\theta_2^T(x))\\ \vdots\\ exp(\theta_K^T(x)) \end{matrix} \right] hθ(x)=p(y=1x;θ)p(y=2x;θ)p(y=Kx;θ)=j=1Kexp(θjT(x))1exp(θ1T(x))exp(θ2T(x))exp(θKT(x))

其中, θ j ∈ R n + 1 ( j = 1 , 2 , . . . , K ) \theta_j\in R^{n+1}(j=1,2,...,K) θjRn+1(j=1,2,...,K)表示每一个线性回归函数的参数。 1 ∑ j = 1 K e x p ( θ j T ( x ) ) \frac{1}{\sum_{j=1}^Kexp(\theta_j^T(x))} j=1Kexp(θjT(x))1用来对概率分布进行归一化,使得概率之和等于1。
为了将 h θ ( x ) h_\theta(x) hθ(x)的形式与上面的线性回归和Logistic回归统一,我们可以将 θ \theta θ写成矩阵的形式:
θ = [ ∣ ∣ ∣ ∣ θ 1 θ 2 ⋯ θ K ∣ ∣ ∣ ∣ ] ⇒ θ T = [ —— θ 1 T —— —— θ 2 T —— —— ⋯ —— —— θ K T —— ] ⇓ h θ ( x ) = s o f t m a x ( θ T x ) \theta= \left[ \begin{matrix} \big| & \big| & \big| & \big|\\ \theta_1 & \theta_2 & \cdots & \theta_K\\ \big| & \big| & \big| & \big| \end{matrix} \right] \Rightarrow \theta^T= \left[ \begin{matrix} \verb|——| & \theta_1^T & \verb|——|\\ \verb|——| & \theta_2^T & \verb|——|\\ \verb|——| & \cdots & \verb|——|\\ \verb|——| & \theta_K^T & \verb|——| \end{matrix} \right]\\ \Downarrow\\ h_\theta(x)=softmax(\theta^Tx) θ=θ1θ2θKθT=————————θ1Tθ2TθKT————————hθ(x)=softmax(θTx)

下面需要定义softmax回归的代价函数,为了方便表述,函数记号 1 { ⋅ } 1\{\cdot\} 1{}表示示性函数,其取值规则如下:
{ 1 { 表 达 式 值 为 真 } = 1 1 { 表 达 式 值 为 假 } = 0 \begin{cases} 1\{表达式值为真\}=1\\ 1\{表达式值为假\}=0 \end{cases} {1{}=11{}=0

同样的我们希望概率似然函数的值尽可能大
max ⁡ θ J ( θ ) = Π i = 1 m Π k = 1 K ( s o f t m a x ( θ k T x ( i ) ) ) 1 { y ( i ) = k } \max_\theta \quad J(\theta)=\Pi_{i=1}^m\Pi_{k=1}^K(softmax(\theta_k^Tx^{(i)}))^{1\{y^{(i)}=k\}} θmaxJ(θ)=Πi=1mΠk=1K(softmax(θkTx(i)))1{y(i)=k}

在外面套上 − l o g ( x ) -log(x) log(x)函数,经过化简得
min ⁡ θ J ( θ ) = − ∑ i = 1 m ∑ k = 1 K 1 { y ( i ) = k } l o g ( s o f t m a x ( θ k T x ( i ) ) ) \min_\theta \quad J(\theta)=-\sum_{i=1}^m\sum_{k=1}^K1\{y^{(i)}=k\}log(softmax(\theta_k^Tx^{(i)})) θminJ(θ)=i=1mk=1K1{y(i)=k}log(softmax(θkTx(i)))

采用梯度下降法,迭代求解 J ( θ ) J(\theta) J(θ)的极小值。
∂ J ( θ ) ∂ θ l t = − ∂ ∂ θ l t { ∑ i = 1 m ∑ k = 1 K 1 { y ( i ) = k } l o g e x p ( θ l T x ( i ) ) ∑ j = 1 K e x p ( θ j T x ( i ) ) } = − ∑ i = 1 m ∑ k = 1 K ∂ ∂ θ l t ( 1 { y ( i ) = k } l o g e x p ( θ l T x ( i ) ) ∑ j = 1 K e x p ( θ j T x ( i ) ) ) = − ∑ i = 1 m ∑ k = 1 K ∂ ∂ θ l t ( 1 { y ( i ) = k } ( θ l T x ( i ) − l o g ( ∑ j = 1 K e x p ( θ j T x ( i ) ) ) ) = − ∑ i = 1 m ∑ k = 1 K ∂ ∂ θ l t ( 1 { y ( i ) = k } ( θ l T x ( i ) ) ) − ∂ ∂ θ l t ( 1 { y ( i ) = k } l o g ( ∑ j = 1 K e x p ( θ j T x ( i ) ) ) ) = − ∑ i = 1 m ( ( 1 { y ( i ) = l } ⋅ x t ( i ) ) − ( p ( y ( i ) = l ∣ x ( i ) ; θ ) ⋅ x t ( i ) ) ) = − ∑ i = 1 m x t ( i ) ⋅ ( 1 { y ( i ) = l } − p ( y ( i ) = l ∣ x ( i ) ; θ ) ) \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_{lt}} =& -\frac{\partial}{\partial\theta_{lt}} \{ \sum_{i=1}^m\sum_{k=1}^K1\{y^{(i)}=k\}log\frac{exp(\theta_l^Tx^{(i)})}{\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})} \}\\ =& -\sum_{i=1}^m\sum_{k=1}^K\frac{\partial }{\partial \theta_{lt}}\bigg(1\{y^{(i)}=k\}log\frac{exp(\theta_l^Tx^{(i)})}{\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})}\bigg)\\ =& -\sum_{i=1}^m\sum_{k=1}^K\frac{\partial}{\partial \theta_{lt}}\bigg(1\{y^{(i)}=k\}\big(\theta_l^Tx^{(i)}-log(\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})\big)\bigg)\\ =& -\sum_{i=1}^m\sum_{k=1}^K\frac{\partial}{\partial \theta_{lt}}\big(1\{y^{(i)}=k\}(\theta_l^Tx^{(i)})\big) -\frac{\partial}{\partial \theta_{lt}}\bigg(1\{y^{(i)}=k\}log\big(\sum_{j=1}^Kexp(\theta_j^Tx^{(i)})\big)\bigg)\\ =& -\sum_{i=1}^m\bigg(\big(1\{y^{(i)}=l\}\cdot x_t^{(i)}\big)-\big(p(y^{(i)}=l|x^{(i)};\theta)\cdot x_t^{(i)}\big)\bigg)\\ =& -\sum_{i=1}^m x_t^{(i)}\cdot \big(1\{y^{(i)}=l\}-p(y^{(i)}=l|x^{(i)};\theta)\big) \end{aligned} θltJ(θ)======θlt{i=1mk=1K1{y(i)=k}logj=1Kexp(θjTx(i))exp(θlTx(i))}i=1mk=1Kθlt(1{y(i)=k}logj=1Kexp(θjTx(i))exp(θlTx(i)))i=1mk=1Kθlt(1{y(i)=k}(θlTx(i)log(j=1Kexp(θjTx(i))))i=1mk=1Kθlt(1{y(i)=k}(θlTx(i)))θlt(1{y(i)=k}log(j=1Kexp(θjTx(i))))i=1m((1{y(i)=l}xt(i))(p(y(i)=lx(i);θ)xt(i)))i=1mxt(i)(1{y(i)=l}p(y(i)=lx(i);θ))

将所有上式写成向量的形式有
∇ θ j J ( θ ) = − ∑ i = 1 m x ( i ) ⋅ ( 1 { y ( i ) = l } − p ( y ( i ) = l ∣ x ( i ) ; θ ) ) \nabla_{\theta_j}J(\theta)=-\sum_{i=1}^mx^{(i)}\cdot \big(1\{y^{(i)}=l\}-p(y^{(i)}=l|x^{(i)};\theta)\big) θjJ(θ)=i=1mx(i)(1{y(i)=l}p(y(i)=lx(i);θ))

Softmax回归之所以要取指数,第一是为了契合max,使大的更大,这样就能从错误中快速学习;同时指数函数也方便求导。
经过上面的推导,我们可以发现,当类别数 k = 2 k=2 k=2时,Softmax回归退化为Logistic回归。所以Logistic回归是Softmax回归的一种特殊情况。
既然Softmax回归是一种多分类算法,那实际应用中,我们是选择Softmax分类器,还是构造 k k k个独立的Logistic二分类器呢?通常情况下,这取决于分类类别是否互斥,如果互斥,我们一般采用Softmax回归;如果分类类别不是互斥的,一般采用 k k k个Logistic回归分类器更为合适。这样,对于每个类别,我们的算法可以分别判断它是否属于各个类别。

参考文献

ufldl-Softmax回归

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值