逻辑回归灵魂拷问之(二)——渐入佳境
在上篇文章(小试牛刀)中我们讲述了一些逻辑回归的常见问答,这篇文章还是继续上篇文章继续深入挖掘逻辑回归的常见问题。
1、逻辑回归的为什么采用交叉熵的损失函数
这个一般是通过极大似然估计推导出来的。由于最终的结果服从伯努利分布,我们有:
P
(
Y
=
1
∣
x
)
=
p
(
x
)
P(Y=1|x)=p(x)
P(Y=1∣x)=p(x)
P
(
Y
=
0
∣
x
)
=
1
−
p
(
x
)
P(Y=0|x)=1-p(x)
P(Y=0∣x)=1−p(x)
可以得到似然函数:
Π
[
p
(
x
i
)
y
i
(
1
−
p
(
x
i
)
)
1
−
y
i
]
\Pi[p(x_i)^{y_i}(1-p(x_i))^{1-y_i}]
Π[p(xi)yi(1−p(xi))1−yi]
取
l
o
g
log
log可以得到:
L
(
w
)
=
Σ
[
y
i
l
o
g
(
p
(
x
i
)
)
+
(
1
−
y
i
)
l
o
g
(
1
−
p
(
x
i
)
)
]
L(w)=\Sigma[y_ilog(p(x_i))+(1-y_i)log(1-p(x_i))]
L(w)=Σ[yilog(p(xi))+(1−yi)log(1−p(xi))]
进一步可以得到损失函数:
−
1
N
Σ
[
y
i
l
o
g
(
p
(
x
i
)
)
+
(
1
−
y
i
)
l
o
g
(
1
−
p
(
x
i
)
)
]
-\frac{1}{N}\Sigma[y_ilog(p(x_i))+(1-y_i)log(1-p(x_i))]
−N1Σ[yilog(p(xi))+(1−yi)log(1−p(xi))]
我们都知道交叉熵公式为:
−
(
y
i
l
o
g
(
p
(
x
i
)
)
+
(
1
−
y
i
)
l
o
g
(
1
−
p
(
x
i
)
)
)
-(y_ilog(p(x_i))+(1-y_i)log(1-p(x_i)))
−(yilog(p(xi))+(1−yi)log(1−p(xi)))
从最大似然推导出来的损失函数刚好就是交叉熵。
2、逻辑回归的优化方法是什么,以及为什么使用该方法
逻辑回归常用的优化方法是梯度下降法。
能够采用梯度下降法的原因就是逻辑回归的代价函数是凸函数,采用梯度下降不会陷入到一个局部最优解中,它会一直朝着全局最优靠近。
还有一个问题是为什么采用最大似然而不可以采用最小二乘法,比如这样的:
L
=
Σ
(
y
i
−
1
1
+
e
−
w
T
x
i
+
b
)
2
L=\Sigma(y_i-\frac{1}{1+e^{-w^Tx_i+b}})^2
L=Σ(yi−1+e−wTxi+b1)2
主要的原因有也是上面的式子是一个非凸的函数,容易得到局部最优解。
3、逻辑回归为什么要使用激活函数,以及为什么使用sigmoid函数,它有什么好处
sigmoid函数的好处主要有:
单调递增,可以将值压缩到0-1之间,求导非常的容易等。但是这些sigmoid的好处并不是作者采用sigmoid函数最根本的原因。满足该类条件的函数其实有很多。
主要原因用一句话解释的话就是:逻辑回归是广义线性模型中的一种,并且服从于伯努利分布,是指数分布族的一种,将逻辑回归的概率函数用指数族分布的形式表示,可以推导除来Sigmoid函数。
广义线性模型的三点假设:
1:
p
(
y
∣
x
;
θ
)
p(y|x;\theta)
p(y∣x;θ)服从指数族分布
2:给定
x
x
x,目标是求解
T
(
y
)
∣
x
T(y)|x
T(y)∣x,即给定
T
(
y
)
T(y)
T(y)在给定
x
x
x下的期望
3:自然参数
η
\eta
η与
x
x
x是线性关系:
η
=
θ
T
x
\eta=\theta^Tx
η=θTx
逻辑回归自然是广义线性模型中的一种
指数族分布
指数族分布一般有如下的形式:
p ( y ; η ) = b ( y ) e x p ( η T T ( y ) − α ( η ) ) p(y;\eta)=b(y)exp(\eta^TT(y)-\alpha(\eta)) p(y;η)=b(y)exp(ηTT(y)−α(η))
其中:
η
是
自
然
参
数
\eta是自然参数
η是自然参数
T
(
y
)
T(y)
T(y)是充分统计量,一般情况下
T
(
y
)
=
y
T(y)=y
T(y)=y
一般我们常见的正态分布,伯努利分布等都是指数族分布。
我们都知道逻辑回归是服从伯努利分布的,我们现在假设激活函数是 h h h,有:
p
(
y
=
1
;
ϕ
)
=
ϕ
,
p
(
y
=
0
;
ϕ
)
)
=
1
−
ϕ
p(y=1;\phi)=\phi ,p(y=0;\phi))=1-\phi
p(y=1;ϕ)=ϕ,p(y=0;ϕ))=1−ϕ
可以得到:
p
(
y
∣
x
)
=
ϕ
y
(
1
−
ϕ
)
1
−
y
=
e
x
p
(
y
l
o
g
ϕ
+
(
1
−
y
)
l
o
g
(
1
−
ϕ
)
)
=
e
x
p
(
y
(
l
o
g
ϕ
1
−
ϕ
)
+
l
o
g
(
1
−
ϕ
)
)
\begin{aligned} p(y|x) &=\phi^y(1-\phi)^{1-y}\\ &= exp(ylog\phi+(1-y)log(1-\phi))\\ &=exp(y(log\frac{\phi}{1-\phi})+log(1-\phi)) \end{aligned}
p(y∣x)=ϕy(1−ϕ)1−y=exp(ylogϕ+(1−y)log(1−ϕ))=exp(y(log1−ϕϕ)+log(1−ϕ))
将上面的式子采用指数族分布的方式写的话:
T
(
y
)
=
y
α
=
−
l
o
g
(
1
−
ϕ
)
b
(
y
)
=
1
η
=
l
o
g
ϕ
1
−
ϕ
=
>
ϕ
=
1
1
+
e
−
η
\begin{aligned} &T(y)=y\\ &\alpha=-log(1-\phi)\\ &b(y)=1\\ &\eta=log\frac{\phi}{1-\phi}=>\phi=\frac{1}{1+e^{-\eta}} \end{aligned}
T(y)=yα=−log(1−ϕ)b(y)=1η=log1−ϕϕ=>ϕ=1+e−η1
衍生问题:其实线性回归的平方还有softmax的函数都可以采用这种方法推导出来
4:逻辑回归与贝叶斯之间有没有什么联系
上一篇文章在正则化中也提到了,正则化防止过拟合的解释可以从贝叶斯的思想出发,下面我们来推导从贝叶斯到逻辑回归的正则化。
逻辑回归其实是假设参数是确定,我们需要来求解参数。贝叶斯假设逻辑回归的参数是服从某种分布的。假设参数
w
w
w的概率模型为
p
(
w
)
p(w)
p(w)。使用贝叶斯推理的话:
p
(
w
∣
D
)
≺
p
(
w
)
p
(
D
∣
w
)
=
Π
j
=
1
M
p
(
w
j
)
Π
i
=
1
N
p
(
D
i
∣
w
j
)
p(w|D)\prec p(w)p(D|w)=\Pi^{M}_{j=1}p(w_j)\Pi^{N}_{i=1}p(D_i|w_j)
p(w∣D)≺p(w)p(D∣w)=Πj=1Mp(wj)Πi=1Np(Di∣wj)
对上式取
l
o
g
log
log
=
>
a
r
g
m
a
x
w
[
Σ
j
=
1
M
l
o
g
p
(
w
j
)
+
Σ
i
=
1
N
l
o
g
p
(
D
i
∣
w
)
]
=
>
a
r
g
m
a
x
w
[
Σ
i
=
1
N
l
o
g
p
(
D
i
∣
w
)
+
Σ
j
=
1
M
l
o
g
p
(
w
j
)
]
=
>
a
r
g
m
i
n
w
(
−
1
N
Σ
i
=
1
N
l
o
g
p
(
D
i
∣
w
)
−
1
N
Σ
j
=
1
M
l
o
g
p
(
w
j
)
)
\begin{aligned} &=>argmax_w[\Sigma^{M}_{j=1}logp(w_j)+\Sigma^{N}_{i=1}logp(D_i|w)]\\ &=>argmax_w[\Sigma^{N}_{i=1}logp(D_i|w)+\Sigma^{M}_{j=1}logp(w_j)]\\ &=>argmin_w (-\frac{1}{N}\Sigma^{N}_{i=1}logp(D_i|w)-\frac{1}{N}\Sigma^{M}_{j=1}logp(w_j)) \end{aligned}
=>argmaxw[Σj=1Mlogp(wj)+Σi=1Nlogp(Di∣w)]=>argmaxw[Σi=1Nlogp(Di∣w)+Σj=1Mlogp(wj)]=>argminw(−N1Σi=1Nlogp(Di∣w)−N1Σj=1Mlogp(wj))
前面的式子大家很熟悉,就是逻辑回归的损失函数。现在假设
p
(
w
)
p(w)
p(w)服从某个分布,相当于引入一个先验的知识。如果
p
(
w
)
p(w)
p(w)服从均值为0拉普拉斯分布:
p
(
w
)
=
1
2
λ
e
−
∣
w
∣
λ
p(w)=\frac{1}{2\lambda}e^{\frac{-|w|}{\lambda}}
p(w)=2λ1eλ−∣w∣
将
p
(
w
)
p(w)
p(w)代入上面的式子可以得到:
Σ
j
=
1
M
l
o
g
p
(
w
j
)
=
>
Σ
j
=
1
M
(
−
∣
w
i
∣
λ
l
o
g
(
1
2
λ
)
)
\Sigma^{M}_{j=1}logp(w_j)=>\Sigma^{M}_{j=1}(-\frac{|w_i|}{\lambda}log(\frac{1}{2\lambda}))
Σj=1Mlogp(wj)=>Σj=1M(−λ∣wi∣log(2λ1))
将参数
1
λ
l
o
g
(
1
2
λ
)
\frac{1}{\lambda}log(\frac{1}{2\lambda})
λ1log(2λ1)用一个新的参数
λ
\lambda
λ代替,然后就可以得到我们正则化L1的正则化项:
λ
Σ
j
=
1
M
∣
w
i
∣
\lambda\Sigma^{M}_{j=1}|w_i|
λΣj=1M∣wi∣
两部分加起来就是逻辑回归L1正则化下的损失函数了。
L2正则化也是同样的道理,只不过是假设 p ( w ) p(w) p(w)服从均值为0的正态分布。
关于逻辑回归的问题就总结到这里了,如果有什么别的问题的话,欢迎大家一起交流。
欢迎大家加入我们challengeHub的群和我们一起交流,关于数据分析,数据挖掘,python学习,深度学习,自然语言处理的都可以进群交流,群内各路大佬。欢迎大家一起学习成长。