deep learning 06. Logistic Regression

开始的话:
从基础做起,不断学习,坚持不懈,加油。
一位爱生活爱技术来自火星的程序汪

对于 L o g i s t i c Logistic Logistic R e g r e s s i o n Regression Regression,这里想详细说明下, l o s s loss loss f u n c t i o n function function是怎么来的?毕竟了解一个模型最好的方式就是通过损失函数了。

我们知道线性回归的公式为:

Y = w T x + b Y = w^Tx + b Y=wTx+b

线性回归是做 回归 的,也就是结果输出是连续的。那怎么做类似于 [ 0 , 1 ] {[0,1]} [0,1]这样的分类任务呢?
机智的人们发现给线性回归加一个 a c t i v a t i o n activation activation f u n c t i o n function function,然后我们就可以做分类任务了(想吐槽分类为啥叫回归呢?可能是是从回归而来的吧!)
这个函数 s i g m o i d sigmoid sigmoid

σ ( z ) = 1 1 + e − z σ(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1

s i g m o i d sigmoid sigmoid函数的图像为:

import numpy as np
import math
import matplotlib.pyplot as plt

X = np.linspace(-10,10,100)
y = [1 / (1 + math.e**(-x)) for x in X]

plt.plot(X,y)
plt.show()

输出是 ( 0 , 1 ) (0,1) (0,1)之间的值。
我们把线性回归中的 Y Y Y作为 z z z的话, z = Y = w T x + b z = Y = w^Tx + b z=Y=wTx+b
那我们就可以了做分类任务了(大于 0.5 0.5 0.5作为类别 1 1 1,小于 0.5 0.5 0.5作为类别 0 0 0)。

假设 s i g m o i d sigmoid sigmoid函数 σ ( z ) σ(z) σ(z),表示属于正类 1 1 1的概率,那么负类 0 0 0,我们就可以这样定义:
p ( y = 1 ∣ x ; w ) = σ ( w T x + b ) = σ ( z ) p(y=1|x;w) =σ(w^Tx+b)= σ(z) p(y=1x;w)=σ(wTx+b)=σ(z)
p ( y = 0 ∣ x ; w ) = 1 − σ ( z ) p(y=0|x;w) = 1 - σ(z) p(y=0x;w)=1σ(z)

这个是不是很熟悉?是的就是伯努利分布( B e r n o u l l i Bernoulli Bernoulli d i s t r i b u t i o n distribution distribution).

所以我们可以合并两个式子,可得到:

p ( y ∣ x ) = σ ( z ) y ( 1 − σ ( z ) ) 1 − y p(y|x) = σ(z)^y(1- σ(z))^{1-y} p(yx)=σ(z)y(1σ(z))1y

上式将分类为 0 0 0和分类和 1 1 1的概率计算公式合二为一。假设分类器分类足够准确,此时对于一个样本,如果它是属于 1 1 1类,分类器求出的属于 1 1 1类的概率应该尽可能大,即 p ( y = 1 ∣ x ) p(y=1|x) p(y=1x)尽可能接近 1 1 1;如果它是 0 0 0类,分类器求出的属于 0 0 0类的概率应该尽可能大,即 p ( y = 0 ∣ x ) p(y=0|x) p(y=0x)尽可能接近1。

为了计算方便,我们两边取对数

l o g p ( y ∣ x ) = y l o g σ ( z ) + ( 1 − y ) l o g ( 1 − σ ( z ) ) log p(y|x) = ylogσ(z) + (1-y)log(1- σ(z)) logp(yx)=ylogσ(z)+(1y)log(1σ(z))

我们的目的是求出 z = w T x + b z=w^Tx + b z=wTx+b中的 w w w b b b,使得我们的 p ( y ∣ x ) p(y|x) p(yx) 0 0 0 1 1 1类别的可能性最大,而我们的损失函数,是希望取得最大可能性的情况下损失最小,是一个求最小值的过程,所以我们在上式中加一个 − - 号,来解决,所以我们的 l o s s loss loss f u n c t i o n function function就得到了。用极大似然估计( M a x i m u m Maximum Maximum L i k e l i h o o d Likelihood Likelihood E s t i m a t e Estimate Estimate)的方法去极大化似然函数也就是最小化损失函数了。

令: y ^ = σ ( z ) = σ ( w T x + b ) \widehat{y}=σ(z)=σ(w^Tx + b) y =σ(z)=σ(wTx+b)

L ( y ^ , y ) = − l o g p ( y ∣ x ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) L(\widehat{y},y) = -log p(y|x) = - ylog\widehat{y} - (1-y)log(1- \widehat{y}) L(y ,y)=logp(yx)=ylogy (1y)log(1y )

自然的我们的 c o s t cost cost f u n c t i o n function function也就出来了(损失函数是针对一个样本的,成本函数是对所有的样本的)。

J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ , y ) J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\widehat{y},y) J(w,b)=m1i=1mL(y ,y)

G r a d i e n t Gradient Gradient

最后就是用梯度下降法去求解逻辑回归了的参数 w w w b b b了。

对于上式中的 l o g log log我们换成 l n ln ln也是没有任何问题的。
ok,开始我们的推导吧!
第一:先简化下我们的损失函数。

L ( y ^ , y ) = − l o g p ( y ∣ x ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) L(\widehat{y},y) = -log p(y|x) = - ylog\widehat{y} - (1-y)log(1- \widehat{y}) L(y ,y)=logp(yx)=ylogy (1y)log(1y ) (1)

y ^ = σ ( z ) = σ ( w T x + b ) \widehat{y}=σ(z)=σ(w^Tx + b) y =σ(z)=σ(wTx+b)

对于偏置 b b b我们可以看做 w b ∗ x b w_b*x_b wbxb其中 x b = 1 x_b=1 xb=1 s o so so

y ^ = σ ( z ) = σ ( w T x ) \widehat{y}=σ(z)=σ(w^Tx) y =σ(z)=σ(wTx)

这个没问题的对吧!

σ ( z ) = 1 1 + e − z σ(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1

y ^ = σ ( z ) = σ ( w T x ) = 1 1 + e − w T x = e w T x 1 + e w T x \widehat{y}=σ(z)=σ(w^Tx)=\frac{1}{1+e^{-w^Tx}}=\frac{e^{w^Tx}}{1+e^{w^Tx}} y =σ(z)=σ(wTx)=1+ewTx1=1+ewTxewTx (2)

上面这个也没问题对吧!

经过 ( 2 ) (2) (2)式的转变,我们可以将 ( 1 ) (1) (1)式变为:

L ( θ ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) L(\theta) = - ylog\widehat{y} - (1-y)log(1- \widehat{y}) L(θ)=ylogy (1y)log(1y )
L ( θ ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) L(\theta) = - (ylog\widehat{y} + (1-y)log(1- \widehat{y})) L(θ)=(ylogy +(1y)log(1y ))

代入 ( 2 ) (2) (2)

L ( θ ) = − ( y l o g e w T x 1 + e w T x + ( 1 − y ) l o g ( 1 − e w T x 1 + e w T x ) ) L(\theta) = - (ylog\frac{e^{w^Tx}}{1+e^{w^Tx}} + (1-y)log(1- \frac{e^{w^Tx}}{1+e^{w^Tx}})) L(θ)=(ylog1+ewTxewTx+(1y)log(11+ewTxewTx))

然后把对数 l o g log log展开(也可写为 l n ln ln,后面展开方便)

L ( θ ) = − ( [ y l o g e w T x − l o g ( 1 + e w T x ) ] + ( 1 − y ) ( − l o g ( 1 + e w T x ) ) L(\theta) = - ([ylog e^{w^Tx} - log({1+e^{w^Tx}}) ]+ (1-y)(-log(1+e^{w^Tx})) L(θ)=([ylogewTxlog(1+ewTx)]+(1y)(log(1+ewTx))

L ( θ ) = − ( y l o g e w T x − l o g ( 1 + e w T x ) L(\theta) = - (ylog e^{w^Tx} - log({1+e^{w^Tx}}) L(θ)=(ylogewTxlog(1+ewTx)

l o g log log-> l n ln ln

L ( θ ) = − ( y w T x − l n ( 1 + e w T x ) L(\theta) = - (yw^Tx - ln({1+e^{w^Tx}}) L(θ)=(ywTxln(1+ewTx)

ok!到目前为止简化完了。

开始求偏导:

y w T x yw^Tx ywTx w w w求偏导则为 y x yx yx
l n ( 1 + e w T x ) ln({1+e^{w^Tx}}) ln(1+ewTx)求偏导,就要掌握复合函数的求偏导了。
l n ( g ( x ) ) ln(g(x)) ln(g(x))偏导为 1 g x \frac{1}{g{x}} gx1 乘以 g ( x ) g(x) g(x)的偏导。
所以就能得到: x e w T x 1 + e w T x x\frac{e^{w^Tx}}{1+e^{w^Tx}} x1+ewTxewTx
所以最终为:
δ L ( θ ) δ w = − ( y x − x e w T x 1 + e w T x ) \frac{\delta L(\theta)}{\delta w} =-(yx-x\frac{e^{w^Tx}}{1+e^{w^Tx}}) δwδL(θ)=(yxx1+ewTxewTx) ( 3 ) (3) (3)

其中
e w T x 1 + e w T x = y ^ \frac{e^{w^Tx}}{1+e^{w^Tx}} = \widehat{y} 1+ewTxewTx=y

所以 ( 3 ) (3) (3)可以简写为:
δ L ( θ ) δ w = − x ( y − y ^ ) \frac{\delta L(\theta)}{\delta w} = -x(y- \widehat{y}) δwδL(θ)=x(yy )

单个的偏导是这样,那么总的成本函数 c o s t cost cost f u n c t i o n function function为:

δ L ( θ ) δ w = − 1 N ∑ i = 1 N [ x ( y − y ^ ) ] \frac{\delta L(\theta)}{\delta w} = -\frac{1}{N}\sum_{i=1}^{N}[{}x(y- \widehat{y})] δwδL(θ)=N1i=1N[x(yy )]

ok, 应该没什么问题吧!,作为非科班的表示压力很大,哈哈。

对于参数 w w w的求导就是:

δ L ( θ ) δ w = − 1 N ∑ i = 1 N [ x ( y − y ^ ) ] \frac{\delta L(\theta)}{\delta w} = -\frac{1}{N}\sum_{i=1}^{N}[x(y- \widehat{y})] δwδL(θ)=N1i=1N[x(yy )]

而对于参数 b b b呢,其实也是一样的,只不过 x x x此时为 1 1 1

δ L ( θ ) δ w = − 1 N ∑ i = 1 N ( y − y ^ ) \frac{\delta L(\theta)}{\delta w} = -\frac{1}{N}\sum_{i=1}^{N}(y- \widehat{y}) δwδL(θ)=N1i=1N(yy )

最后更新 w w w b b b

w = w − α δ L ( w , b ) δ w w = w - \alpha\frac{\delta L(w,b)}{\delta w} w=wαδwδL(w,b)

b = b − α δ L ( w , b ) δ b b= b - \alpha\frac{\delta L(w,b)}{\delta b} b=bαδbδL(w,b)

代入各自的偏导公式:

w = w + α 1 N ∑ i = 1 N ( y − y ^ ) x w = w + \alpha \frac{1}{N}\sum_{i=1}^{N}(y- \widehat{y})x w=w+αN1i=1N(yy )x

b = b + α 1 N ∑ i = 1 N ( y − y ^ ) b = b + \alpha \frac{1}{N}\sum_{i=1}^{N}(y- \widehat{y}) b=b+αN1i=1N(yy )

α \alpha α就是我们熟悉的 学习率 了。

谢谢

更多代码请移步我的个人 g i t h u b github github,会不定期更新。
欢迎关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值