开始的话:
从基础做起,不断学习,坚持不懈,加油。
一位爱生活爱技术来自火星的程序汪
对于 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+e−z1
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=1∣x;w)=σ(wTx+b)=σ(z)
p
(
y
=
0
∣
x
;
w
)
=
1
−
σ
(
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 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(y∣x)=σ(z)y(1−σ(z))1−y
上式将分类为 0 0 0和分类和 1 1 1的概率计算公式合二为一。假设分类器分类足够准确,此时对于一个样本,如果它是属于 1 1 1类,分类器求出的属于 1 1 1类的概率应该尽可能大,即 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x)尽可能接近 1 1 1;如果它是 0 0 0类,分类器求出的属于 0 0 0类的概率应该尽可能大,即 p ( y = 0 ∣ x ) 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)) logp(y∣x)=ylogσ(z)+(1−y)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(y∣x)对 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(y∣x)=−ylogy −(1−y)log(1−y )
自然的我们的 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)=m1∑i=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(y∣x)=−ylogy −(1−y)log(1−y ) (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 wb∗xb其中 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+e−z1
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+e−wTx1=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
−(1−y)log(1−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}))
L(θ)=−(ylogy
+(1−y)log(1−y
))
代入 ( 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+(1−y)log(1−1+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(θ)=−([ylogewTx−log(1+ewTx)]+(1−y)(−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(θ)=−(ylogewTx−log(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(θ)=−(ywTx−ln(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(θ)=−(yx−x1+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(y−y
)
单个的偏导是这样,那么总的成本函数 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(θ)=−N1∑i=1N[x(y−y )]
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(θ)=−N1∑i=1N[x(y−y )]
而对于参数 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(θ)=−N1∑i=1N(y−y )
最后更新 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+αN1∑i=1N(y−y )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+αN1∑i=1N(y−y )
α \alpha α就是我们熟悉的 学习率 了。
谢谢
更多代码请移步我的个人 g i t h u b github github,会不定期更新。
欢迎关注