deep learning 06. Logistic Regression

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WUUUSHAO/article/details/88313897

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

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

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

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

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

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

s i g m o i d 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) 之间的值。
我们把线性回归中的 Y Y 作为 z z 的话, z = Y = w T x + b z = Y = w^Tx + b
那我们就可以了做分类任务了(大于 0.5 0.5 作为类别 1 1 ,小于 0.5 0.5 作为类别 0 0 )。

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

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

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

扫描二维码关注公众号,回复: 5515029 查看本文章

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

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

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

令: y ^ = σ ( z ) = σ ( w T x + b ) \widehat{y}=σ(z)=σ(w^Tx + 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})

自然的我们的 c o s t cost f u n c t i o n 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)

G r a d i e n t Gradient

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

对于上式中的 l o g log 我们换成 l n 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}) (1)

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

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

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

这个没问题的对吧!

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

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}} (2)

上面这个也没问题对吧!

经过 ( 2 ) (2) 式的转变,我们可以将 ( 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 ( θ ) = ( y l o g y ^ + ( 1 y ) l o g ( 1 y ^ ) ) L(\theta) = - (ylog\widehat{y} + (1-y)log(1- \widehat{y}))

代入 ( 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 o g log 展开(也可写为 l n 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 ( θ ) = ( 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 o g log -> l n ln

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

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

开始求偏导:

y w T x yw^Tx w w 求偏导则为 y x yx
l n ( 1 + e w T x ) ln({1+e^{w^Tx}}) 求偏导,就要掌握复合函数的求偏导了。
l n ( g ( x ) ) ln(g(x)) 偏导为 1 g x \frac{1}{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}}
所以最终为:
δ 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}}) ( 3 ) (3)

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

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

单个的偏导是这样,那么总的成本函数 c o s t cost f u n c t i o n 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})]

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

对于参数 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})]

而对于参数 b b 呢,其实也是一样的,只不过 x x 此时为 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 w b b

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

b = b α δ L ( w , b ) δ b b= b - \alpha\frac{\delta L(w,b)}{\delta 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

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

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

谢谢

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

猜你喜欢

转载自blog.csdn.net/WUUUSHAO/article/details/88313897