深度学习笔记(2) 逻辑回归


一、逻辑回归的介绍

  前面介绍过线性回归,我们知道线性回归输入和输出之间满足线性关系,但是很多问题不是简单的线性关系,因此需要引入非线性函数来增强模型的拟合能力,逻辑回归(logistics regression)相当于在此基础上加入了非线性函数 σ ( ⋅ ) \sigma(·) σ(),也就是常说的sigmoid函数,其公式为:
σ ( z ) = 1 1 + e x p ( − z ) \sigma(z)=\frac{1}{1+exp(-z)} σ(z)=1+exp(z)1
z = w T ⋅ x + b z=w^T·x+b z=wTx+b
   σ ( z ) \sigma(z) σ(z)的函数图像如下图,它将输入压缩到0和1之间,当 z > 0 z>0 z>0时,输出 σ ( z ) > 0.5 \sigma(z)>0.5 σ(z)>0.5;当 z < 0 z<0 z<0时,输出 σ ( z ) < 0.5 \sigma(z)<0.5 σ(z)<0.5。我们还可以发现当 z → 0 z \to 0 z0时,梯度较大,函数变化较快;当 z z z趋于无穷时,梯度趋于0,函数变化较慢。也可以根据其导数来观察性质, σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma '(z)=\sigma (z)(1-\sigma (z)) σ(z)=σ(z)(1σ(z)),当 σ ( z ) \sigma (z) σ(z)趋于0和1时,即 z z z趋于无穷时,梯度较小,当 σ ( z ) = 0.5 \sigma (z)=0.5 σ(z)=0.5,即 z = 0 z=0 z=0时,梯度最大。
在这里插入图片描述
  我们知道线性回归给定输入特征后可以预测输出值,逻辑回归返回的是一个0到1之间的数,这其实是一个概率值,常用来做二分类
  假设有两类样本 C 1 C1 C1 C 2 C2 C2,现在给定一个样本 x x x,我们可以定义样本属于类别 C 1 C1 C1的概率为:
P ( C 1 ∣ x ) = σ ( z ) = σ ( w T ⋅ x + b ) P(C1|x)=\sigma (z)=\sigma (w^T·x+b) P(C1x)=σ(z)=σ(wTx+b)
  那么样本属于 C 2 C2 C2的概率显然为: P ( C 2 ∣ x ) = 1 − P ( C 1 ∣ x ) P(C2|x)=1-P(C1|x) P(C2x)=1P(C1x)。我们只需要根据 z = w T ⋅ x + b z=w^T·x+b z=wTx+b的正负就能判断类别,当 z > 0 z>0 z>0时, P ( C 1 ∣ x ) > 0.5 P(C1|x)>0.5 P(C1x)>0.5,可以判定 x x x属于 C 1 C1 C1,否则属于 C 2 C2 C2
  令 y = 1 y=1 y=1表示 C 1 C1 C1的标签, y = 0 y=0 y=0表示 C 2 C2 C2的标签, y ^ \hat y y^表示预测值, y ^ = P ( C 1 ∣ x ) \hat y=P(C1|x) y^=P(C1x),这里0和1表示哪个类别的标签都可以,预先定义好就行,标签为1的样本通常称为正样本,标签为0的称为负样本

  给定 n n n个样本 ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋅ ⋅ ⋅ , ( x ( n ) , y ( n ) ) (x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),···,(x^{(n)},y^{(n)}) (x(1),y(1)),(x(2),y(2)),(x(n),y(n))(上标表示样本编号),下面我们需要定义一个目标函数来衡量 y y y y ^ \hat y y^之间的差异,线性回归使用的是最小均方误差损失,这里我们使用交叉熵损失,其公式为:
L = ∑ i = 1 n C ( y ^ ( i ) , y ( i ) ) = ∑ i = 1 n − [ y ( i ) l n ( y ^ ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − y ^ ( i ) ) ] L=\sum_{i=1}^{n}C(\hat y^{(i)},y^{(i)})=\sum_{i=1}^{n}-[y^{(i)} ln(\hat y^{(i)})+(1-y^{(i)})ln(1-\hat y^{(i)})] L=i=1nC(y^(i),y(i))=i=1n[y(i)ln(y^(i))+(1y(i))ln(1y^(i))]

  其中
C ( y ^ ( i ) , y ( i ) ) = { − l n ( y ^ ( i ) ) , i f   y ( i ) = 1 − l n ( 1 − y ^ ( i ) ) , i f   y ( i ) = 0 C(\hat y^{(i)},y^{(i)})=\left\{ \begin{aligned} -ln(\hat y^{(i)}) &,&if \ y^{(i)}=1\\ -ln(1-\hat y^{(i)}) & ,& if \ y^{(i)}=0 \\ \end{aligned} \right. C(y^(i),y(i))={ln(y^(i))ln(1y^(i))if y(i)=1if y(i)=0
  这里为什么要这样定义呢?在线性回归中我们希望预测值和真实值越接近越好,而真实值有无穷多个可能的取值,所以我们希望预测值和真实值的均方误差越小越好;而在二分类问题中,真实值只能取0或1,我们希望正样本输出接近1,负样本输出接近0,即正样本的似然概率越大越好。
  举一个例子,假设样本及其对应的标签如下表所示:

x ( 1 ) x^{(1)} x(1) C 1 C1 C1
x ( 2 ) x^{(2)} x(2) C 2 C2 C2
x ( 3 ) x^{(3)} x(3) C 1 C1 C1
x ( 4 ) x^{(4)} x(4) C 1 C1 C1
x ( 5 ) x^{(5)} x(5) C 2 C2 C2

  我们知道正样本预测值为 y ^ ( i ) = σ ( z ( i ) ) = σ ( w T ⋅ x ( i ) + b ) \hat y^{(i)}=\sigma (z^{(i)})=\sigma (w^T·x^{(i)}+b) y^(i)=σ(z(i))=σ(wTx(i)+b),负样本为 1 − y ^ ( i ) 1-\hat y^{(i)} 1y^(i),那么我们可以求出似然概率为:
L ( w ) = y ^ ( 1 ) ⋅ ( 1 − y ^ ( 2 ) ) ⋅ y ^ ( 3 ) ⋅ y ^ ( 4 ) ⋅ ( 1 − y ^ ( 5 ) ) L(w)=\hat y^{(1)}·(1-\hat y^{(2)})·\hat y^{(3)}·\hat y^{(4)}·(1-\hat y^{(5)}) L(w)=y^(1)(1y^(2))y^(3)y^(4)(1y^(5))
  我们希望 L ( w , b ) L(w,b) L(w,b)越大越好,这样就能使得正样本输出越来越接近1,负样本输出越来越接近0,对结果取 l n ln ln可以得到:
L ( w ) = l n ( y ^ ( 1 ) ) + l n ( 1 − y ^ ( 2 ) ) + l n ( y ^ ( 3 ) ) + l n ( y ^ ( 4 ) ) + l n ( 1 − y ^ ( 5 ) ) L(w)=ln(\hat y^{(1)})+ln(1-\hat y^{(2)})+ln(\hat y^{(3)})+ln(\hat y^{(4)})+ln(1-\hat y^{(5)}) L(w)=ln(y^(1))+ln(1y^(2))+ln(y^(3))+ln(y^(4))+ln(1y^(5))
  结果再取负号,然后扩展到 n n n个样本就得到了上面定义的交叉熵损失函数,我们希望其值越小越好。
  因此目标函数为:
L ( w ) = ∑ i = 1 n − [ y ( i ) l n ( y ^ ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − y ^ ( i ) ) ] L(w)=\sum_{i=1}^{n}-[y^{(i)} ln(\hat y^{(i)})+(1-y^{(i)})ln(1-\hat y^{(i)})] L(w)=i=1n[y(i)ln(y^(i))+(1y(i))ln(1y^(i))]
  我们要做的就是找到一组参数 w w w使得目标函数的值最小,即 w ∗ = a r g m i n w L ( w ) w^*=arg \mathop{min}\limits_{w}L(w) w=argwminL(w),然后用梯度下降法迭代求解。


  那逻辑回归可以使用均方误差函数吗?假设使用均方误差函数:
y ^ = σ ( w T ⋅ x + b ) \hat y=\sigma (w^T·x+b) y^=σ(wTx+b)
L ( w ) = 1 2 ∑ i = 1 n ( y ( i ) − y ^ ( i ) ) 2 L(w)=\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-\hat y^{(i)})^2 L(w)=21i=1n(y(i)y^(i))2
  我们可以求出梯度为:
d L ( w ) d w = d L ( w ) d y ^ ( i ) ⋅ d y ^ ( i ) d z ⋅ d z d w = − ∑ i = 1 n ( y ( i ) − y ^ ( i ) ) ⋅ y ^ ( i ) ( 1 − y ^ ( i ) ) ⋅ x ( i ) \begin{aligned} \frac{dL(w)}{d w}&=\frac{dL(w)}{d \hat y^{(i)}}·\frac{d \hat y^{(i)}}{dz}·\frac{dz}{dw} \\ &=-\sum \limits_{i=1}^{n}( y^{(i)}-\hat y^{(i)}) ·\hat y^{(i)}(1- \hat y^{(i)})·x^{(i)} \\ \end{aligned} dwdL(w)=dy^(i)dL(w)dzdy^(i)dwdz=i=1n(y(i)y^(i))y^(i)(1y^(i))x(i)
  当 y ( i ) = 1 y^{(i)}=1 y(i)=1时,如果 y ^ ( i ) = 1 \hat y^{(i)}=1 y^(i)=1(即标签是1,预测值是1,预测值接近目标值), d L ( w ) d w = 0 \frac{dL(w)}{d w}=0 dwdL(w)=0,这是合理的,因为我们希望预测正确的时候梯度为0;
  如果 y ^ ( i ) = 0 \hat y^{(i)}=0 y^(i)=0(即标签是0,预测值是1,预测值远离目标值), d L ( w ) d w = 0 \frac{dL(w)}{d w}=0 dwdL(w)=0,这是不合理的,因为预测值不正确,但是梯度却为0;
  同理,当 y ( i ) = 0 y^{(i)}=0 y(i)=0时,如果 y ^ ( i ) = 1 \hat y^{(i)}=1 y^(i)=1 d L ( w ) d w = 0 \frac{dL(w)}{d w}=0 dwdL(w)=0;如果 y ^ ( i ) = 0 \hat y^{(i)}=0 y^(i)=0 d L ( w ) d w = 0 \frac{dL(w)}{d w}=0 dwdL(w)=0


  交叉熵损失和均方误差损失的图像如下所示,黑色表示交叉熵损失的图像,红色表示均方误差损失,可以看出交叉熵损失变化更剧烈。
在这里插入图片描述

二、逻辑回归与线性回归对比

1.定义

   线性回归的公式为: y ^ = w T ⋅ x + b \hat y=w^T·x+b y^=wTx+b,它可能的输出任何值。
   逻辑回归的公式为: y ^ = σ ( w T ⋅ x + b ) \hat y=\sigma (w^T·x+b) y^=σ(wTx+b),它可能的输出值在0和1之间。

2.损失函数

  线性回归使用均方误差损失,公式为: L ( w ) = 1 2 ∑ i = 1 n ( y ( i ) − y ^ ( i ) ) 2 L(w)=\frac{1}{2}\sum_{i=1}^{n}(y^{(i)}-\hat y^{(i)})^2 L(w)=21i=1n(y(i)y^(i))2
  逻辑回归使用交叉熵损失,公式为: L ( w ) = ∑ i = 1 n − [ y ( i ) l n ( y ^ ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − y ^ ( i ) ) ] L(w)=\sum_{i=1}^{n}-[y^{(i)} ln(\hat y^{(i)})+(1-y^{(i)})ln(1-\hat y^{(i)})] L(w)=i=1n[y(i)ln(y^(i))+(1y(i))ln(1y^(i))]

3.参数更新

  对于线性回归,我们可以求出损失函数的梯度为:
d L ( w ) d w = d L ( w ) d y ^ ( i ) ⋅ d y ^ ( i ) d w = − ∑ i = 1 n ( y ( i ) − y ^ ( i ) ) ⋅ x ( i ) \begin{aligned} \frac{dL(w)}{d w}&=\frac{dL(w)}{d \hat y^{(i)}}·\frac{d \hat y^{(i)}}{dw} \\ &=-\sum \limits_{i=1}^{n}( y^{(i)}-\hat y^{(i)}) ·x^{(i)} \\ \end{aligned} dwdL(w)=dy^(i)dL(w)dwdy^(i)=i=1n(y(i)y^(i))x(i)
w = w − η d L ( W ) d w w=w-\eta \frac{dL(W)}{dw} w=wηdwdL(W)
  对于逻辑回归,我们把公式表示为: y ^ = σ ( z ) \hat y=\sigma (z) y^=σ(z) z = w T ⋅ x + b z=w^T·x+b z=wTx+b
  根据链式法则: d L ( w ) d w = d L ( w ) d y ^ ( i ) ⋅ d y ^ ( i ) d w = d L ( w ) d y ^ ( i ) ⋅ d y ^ ( i ) d z ⋅ d z d w \frac{dL(w)}{dw}=\frac{dL(w)}{d \hat y^{(i)}}·\frac{d \hat y^{(i)}}{dw}=\frac{dL(w)}{d \hat y^{(i)}}·\frac{d \hat y^{(i)}}{dz}·\frac{dz}{dw} dwdL(w)=dy^(i)dL(w)dwdy^(i)=dy^(i)dL(w)dzdy^(i)dwdz
  其中: d L ( w ) d y ^ ( i ) = ∑ i = 1 n − [ y ( i ) y ^ ( i ) − 1 − y ( i ) 1 − y ^ ( i ) ] \frac{dL(w)}{d \hat y^{(i)}}=\sum \limits_{i=1}^{n}-[\frac{y^{(i)}}{\hat y^{(i)}}-\frac{1-y^{(i)}}{1-\hat y^{(i)}}] dy^(i)dL(w)=i=1n[y^(i)y(i)1y^(i)1y(i)]
d y ^ ( i ) d z = y ^ ( i ) ( 1 − y ^ ( i ) ) \frac{d \hat y^{(i)}}{dz}= \hat y^{(i)}(1- \hat y^{(i)}) dzdy^(i)=y^(i)(1y^(i))
d z d w = x ( i ) \frac{dz}{dw}=x^{(i)} dwdz=x(i)
  将上面的式子整合起来得到:

d L ( w ) d w = ∑ i = 1 n − [ y ( i ) y ^ ( i ) − 1 − y ( i ) 1 − y ^ ( i ) ] ⋅ y ^ ( i ) ( 1 − y ^ ( i ) ) ⋅ x ( i ) = − ∑ i = 1 n [ y ( i ) ( 1 − y ^ ( i ) ) − y ^ ( i ) ( 1 − y ( i ) ) ] ⋅ x ( i ) = − ∑ i = 1 n ( y ( i ) − y ^ ( i ) ) ⋅ x ( i ) \begin{aligned} \frac{dL(w)}{d w}&=\sum \limits_{i=1}^{n}-[\frac{y^{(i)}}{\hat y^{(i)}}-\frac{1-y^{(i)}}{1-\hat y^{(i)}}] ·\hat y^{(i)}(1- \hat y^{(i)})·x^{(i)} \\ &=-\sum \limits_{i=1}^{n}[y^{(i)}(1-\hat y^{(i)})-\hat y^{(i)}(1-y^{(i)})]·x^{(i)} \\ &=-\sum \limits_{i=1}^{n}(y^{(i)}-\hat y^{(i)})·x^{(i)} \\ \end{aligned} dwdL(w)=i=1n[y^(i)y(i)1y^(i)1y(i)]y^(i)(1y^(i))x(i)=i=1n[y(i)(1y^(i))y^(i)(1y(i))]x(i)=i=1n(y(i)y^(i))x(i)
w = w − η d L ( W ) d w w=w-\eta \frac{dL(W)}{dw} w=wηdwdL(W)
  我们可以发现线性回归和逻辑回归的梯度在形式上是相同的。





本文根据李宏毅老师2020机器学习资料整理。
地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值