目录
Logistic Regression
Cost Function
梯度下降推导
Note
前言
写这个系列的主要原因,是想系统性地对之前学过的知识进行整理,顺便为秋招做好准备。
本文不再对一些简单的概念进行大量阐述,重点放在算法本身,如公式的推导及统计学的理解。
Logistic Regression 的定义
logistic regression 的本质是线性回归,只是在特征到结果的映射中加了一层sigmoid function。一般用于解决二分类问题,对于给定的数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
}
T=\lbrace(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\rbrace
T={(x1,y1),(x2,y2),...,(xN,yN)},其中
x
∈
R
n
,
y
∈
{
0
,
1
}
x\in R^n,y\in\lbrace0,1\rbrace
x∈Rn,y∈{0,1},有:
y
^
=
g
(
w
T
x
+
b
)
,
w
h
e
r
e
g
(
z
)
=
1
1
+
e
−
z
\hat{y} =g(w^Tx+b),\ where\ g(z) = \cfrac{1}{1+e^{-z}}
y^=g(wTx+b), where g(z)=1+e−z1
有时为了方便,会将偏置
b
b
b放入权重
w
w
w中,即
w
T
=
(
w
(
1
)
,
w
(
2
)
,
.
.
.
,
w
(
n
)
,
b
)
,
x
=
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
n
)
,
1
)
T
w^T=(w^{(1)},w^{(2)},...,w^{(n)},b),\ x=(x^{(1)},x^{(2)},...,x^{(n)},1)^T
wT=(w(1),w(2),...,w(n),b), x=(x(1),x(2),...,x(n),1)T. 这时,模型定义为:
P
(
Y
=
1
∣
x
)
=
1
1
+
e
−
w
T
x
=
σ
(
x
)
P
(
Y
=
0
∣
x
)
=
1
−
σ
(
x
)
\begin {aligned} &P(Y=1|x)= \cfrac{1}{1+e^{-w^Tx}}=\color{Blue}\sigma(x) \\ &P(Y=0|x)= \color{Blue}1-\sigma(x) \end{aligned}
P(Y=1∣x)=1+e−wTx1=σ(x)P(Y=0∣x)=1−σ(x)
为了简化公式,我用
σ
(
x
)
\sigma(x)
σ(x)代替了
g
(
w
T
x
)
g(w^Tx)
g(wTx),这里的
g
(
z
)
g(z)
g(z)就是常提到的sigmoid function。
sigmoid function的求导是一个很漂亮的结果,我们后面在梯度下降推导的时候也会用到。
g
′
(
z
)
=
−
1
(
1
+
e
−
z
)
2
(
1
+
e
−
z
)
′
=
e
−
z
(
1
+
e
−
z
)
2
=
1
1
+
e
−
z
(
1
−
1
1
+
e
−
z
)
=
g
(
z
)
(
1
−
g
(
z
)
)
\begin {aligned}g'(z)&=- \cfrac{1}{(1+e^{-z})^2}(1+e^{-z})'\\ &=\cfrac{e^{-z}}{(1+e^{-z})^2}\\ &= \cfrac{1}{1+e^{-z}} (1-\cfrac{1}{1+e^{-z}})\\ &=g(z)(1-g(z))\\ \end{aligned}
g′(z)=−(1+e−z)21(1+e−z)′=(1+e−z)2e−z=1+e−z1(1−1+e−z1)=g(z)(1−g(z))
Cost Function
根据上述模型的定义,我们可以得出似然函数为:
∏
i
=
1
N
[
σ
(
x
i
)
]
y
i
[
1
−
σ
(
x
i
)
]
1
−
y
i
\prod_{i=1}^N[{\color{Blue}\sigma(x_i)}]^{\color{red}{y_i}} [{\color{Blue}1-\sigma(x_i)}]^{\color{red}{1-y_i}}
i=1∏N[σ(xi)]yi[1−σ(xi)]1−yi
C
o
s
t
F
u
n
c
t
i
o
n
Cost Function
CostFunction定义为:
J
(
w
)
=
−
1
n
log
(
∏
i
=
1
N
[
σ
(
x
i
)
]
y
i
[
1
−
σ
(
x
i
)
]
1
−
y
i
)
=
−
1
n
∑
i
=
1
N
[
y
i
log
σ
(
x
i
)
+
(
1
−
y
i
)
log
(
1
−
σ
(
x
i
)
)
]
=
−
1
n
∑
i
=
1
N
[
y
i
log
σ
(
x
i
)
1
−
σ
(
x
i
)
+
log
(
1
−
σ
(
x
i
)
)
]
=
−
1
n
∑
i
=
1
N
[
y
i
w
T
x
i
+
log
(
1
−
σ
(
x
i
)
)
]
\begin {aligned} J(w) &= - \cfrac{1}{n}\log(\prod_{i=1}^N[{\color{Blue}\sigma(x_i)}]^{\color{red}{y_i}} [{\color{Blue}1-\sigma(x_i)}]^{\color{red}{1-y_i}}) \\ & =- \cfrac{1}{n}\sum_{i=1}^N [ {\color{red}y_i}\log{\color{Blue}\sigma(x_i)}+{\color{red}(1-y_i)}\log{\color{Blue}(1-\sigma(x_i))}] \\ &=- \cfrac{1}{n}\sum_{i=1}^N[{\color{red} y_i}\log{\color{Blue}\frac{\sigma(x_i)}{1-\sigma(x_i)}}+\log{\color{Blue}(1-\sigma(x_i))} ] \\ &=- \cfrac{1}{n}\sum_{i=1}^N[{\color{red} y_i}{\color{Blue}w^Tx_i}+\log{\color{Blue}(1-\sigma(x_i))} ] \end{aligned}
J(w)=−n1log(i=1∏N[σ(xi)]yi[1−σ(xi)]1−yi)=−n1i=1∑N[yilogσ(xi)+(1−yi)log(1−σ(xi))]=−n1i=1∑N[yilog1−σ(xi)σ(xi)+log(1−σ(xi))]=−n1i=1∑N[yiwTxi+log(1−σ(xi))]
注意有些教材(例如《统计学习方法》)会把最后一行写成:
∑
i
=
1
N
[
y
i
w
x
i
−
log
(
1
+
exp
(
w
x
)
)
]
\sum_{i=1}^N[{\color{red} y_i}{\color{Blue}wx_i}-\log{\color{Blue}(1+\exp(wx))} ]
i=1∑N[yiwxi−log(1+exp(wx))]
这种写法公式会更为简洁,而且求导的结果最后相一致,但其将0作为正例,而且sigmoid function的表述不太一致,即:
P
(
Y
=
0
∣
x
)
=
1
1
+
e
w
x
=
σ
(
x
)
P(Y=0|x)= \cfrac{1}{1+e^{wx}}=\color{Blue}\sigma(x)
P(Y=0∣x)=1+ewx1=σ(x)
个人觉得这种写法和我们常规的定义不太一样,实际上,Cost Function只要写出第二行就可以求导,进行梯度下降了。
梯度下降推导
通过对
w
w
w求导,得到其梯度:
∂
J
(
w
)
∂
w
=
−
1
n
∑
i
=
1
N
[
y
i
x
i
+
1
1
−
σ
(
x
i
)
(
1
−
σ
(
x
i
)
)
′
]
=
−
1
n
∑
i
=
1
N
[
y
i
x
i
−
1
1
−
σ
(
x
i
)
σ
(
x
i
)
(
1
−
σ
(
x
i
)
)
x
i
]
=
−
1
n
∑
i
=
1
N
[
y
i
x
i
−
σ
(
x
i
)
x
i
]
=
1
n
∑
i
=
1
N
[
x
i
(
σ
(
x
i
)
−
y
i
)
]
\begin {aligned} \frac{\partial J(w)}{\partial w}&=- \cfrac{1}{n}\sum_{i=1}^N[ y_ix_i+ \cfrac{1}{1-\sigma(x_i)}(1-\sigma(x_i))' ] \\ &=- \cfrac{1}{n}\sum_{i=1}^N[y_ix_i- \cfrac{1}{1-\sigma(x_i)}\sigma(x_i)(1-\sigma(x_i))x_i ] \\ &=- \cfrac{1}{n}\sum_{i=1}^N[ y_ix_i - \sigma(x_i)x_i] \\ &= \cfrac{1}{n}\sum_{i=1}^N[x_i(\sigma(x_i)-y_i)] \end{aligned}
∂w∂J(w)=−n1i=1∑N[yixi+1−σ(xi)1(1−σ(xi))′]=−n1i=1∑N[yixi−1−σ(xi)1σ(xi)(1−σ(xi))xi]=−n1i=1∑N[yixi−σ(xi)xi]=n1i=1∑N[xi(σ(xi)−yi)]
别忘了前面我们把偏置
b
b
b也放进了权重
w
w
w里,拉出来看就是:
∂
J
(
w
)
∂
b
=
1
n
∑
i
=
1
N
[
σ
(
x
i
)
−
y
i
]
\frac{\partial J(w)}{\partial b}= \cfrac{1}{n}\sum_{i=1}^N[\sigma(x_i)-y_i]
∂b∂J(w)=n1i=1∑N[σ(xi)−yi]
然后我们就可以设定learning rate
a
a
a,对
b
b
b,
w
w
w进行权值更新:
w
:
=
w
−
a
∂
J
(
w
)
∂
w
b
:
=
b
−
a
∂
J
(
w
)
∂
b
\begin {aligned} &w := w-a\frac{\partial J(w)}{\partial w}\\ &b := b-a\frac{\partial J(w)}{\partial b}\\ \end {aligned}
w:=w−a∂w∂J(w)b:=b−a∂b∂J(w)
Note
1. 为什么以似然函数的负对数作为cost function?
- 似然函数为连乘,取对数可以化乘除为加减,简化运算;
- 计算出来的概率值为小数,小数与小数相乘容易下溢;
- 取负数是为了满足优化的数学习惯,求损失函数最小值的过程,实际上是对参数极大似然估计的过程。
2.logitic regression的优缺点?
优点:实现简单,计算量少,存储资源低;
缺点:一般情况下,只能处理二分类问题(softmax可以用于多分类),且需要线性可分。
3.logitic regression与SVM的异同?
相同:
- LR和SVM都是线性模型(不考虑核函数),一般情况下都用于线性二分类问题;
- 两者都可以增加不同的正则化项,如L1、L2;
- 两者都可以用来做非线性分类,只需要加核函数就好(LR也可以加核函数);
- 两者都属于判别模型。
区别:
- 损失函数不同,SVM采用的是hinge loss,这两个损失函数都是增加对分类影响较大的样本点的权重,减少与分类关系较小的数据点的权重;
- SVM不依赖数据分布,只与支持向量有关,而LR依赖,与所有样本点都有关;
- SVM是结构风险最小化模型,而LR是经验风险最小化模型。
4.logitic regression和SVM分别在什么场景下用?
这个问题Andrew Ng曾经解答过:n表示feature的数量,m表示样本的数量,
- 如果n相对于m来说很大,则使用LR或者不带核函数的SVM(线性分类);
- 如果n很小,m的数量适中,使用带核函数的SVM;
- 如果n很小,m很大,增加更多的feature,然后用LR或者不带核函数的SVM。
5. 为什么要以sigmoid function来作为hypothesis?
基于最大熵原理(maximum entropy)。
在李航老师的《统计学习方法》中写到,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型的最好的模型。 最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。
其次,伯努利分布(Bernoulli distribution)的指数族(exponential family)形式恰好为sigmoid,而指数族满足最大熵的性质。
假设随机变量
x
x
x服从参数为
θ
\theta
θ的伯努利分布,其概率密度函数为:
f
(
x
∣
θ
)
=
θ
x
(
1
−
θ
)
1
−
x
,
x
∈
{
0
,
1
}
f(x|\theta)=\theta^x(1-\theta)^{1-x},\ x\in\lbrace0,1\rbrace
f(x∣θ)=θx(1−θ)1−x, x∈{0,1}
指数分布族的概率密度函数为:
f
(
x
∣
θ
)
=
h
(
x
)
exp
(
η
(
θ
)
T
(
x
)
−
A
(
θ
)
)
f(x|\theta)=h(x)\exp(\eta(\theta)T(x)-A(\theta))
f(x∣θ)=h(x)exp(η(θ)T(x)−A(θ))
对伯努利分布进行变形,可以得到:
f
(
x
∣
θ
)
=
exp
(
x
log
θ
1
−
θ
+
log
(
1
−
θ
)
)
f(x|\theta)=\exp(x\log\cfrac{\theta}{1-\theta}\ +\ \log(1-\theta) )
f(x∣θ)=exp(xlog1−θθ + log(1−θ))
对比指数分布族,可以得到:
h
(
x
)
=
1
η
(
θ
)
=
log
θ
1
−
θ
T
(
x
)
=
x
A
(
θ
)
=
−
log
(
1
−
θ
)
\begin {aligned} &h(x) =1\\ &\eta(\theta) =\log\cfrac{\theta}{1-\theta}\\ &T(x) =x\\ &A(\theta)=-\log(1-\theta) \end {aligned}
h(x)=1η(θ)=log1−θθT(x)=xA(θ)=−log(1−θ)
将
η
(
θ
)
\eta(\theta)
η(θ)变形为:
−
η
(
θ
)
=
−
log
θ
1
−
θ
-\eta(\theta)=-\log\cfrac{\theta}{1-\theta}
−η(θ)=−log1−θθ
− η ( θ ) = log 1 − θ θ -\eta(\theta)=\log\cfrac{1-\theta}{\theta} −η(θ)=logθ1−θ
exp ( − η ( θ ) ) = 1 − θ θ \exp(-\eta(\theta))=\cfrac{1-\theta}{\theta} exp(−η(θ))=θ1−θ
θ = 1 1 + e − η \theta= \cfrac{1}{1+e^{-\eta}} θ=1+e−η1
得到sigmoid function的形式。
参考资料
李航《统计学习方法》
LR和SVM的联系区别 https://zhuanlan.zhihu.com/p/30419036
sigmoid 背后的数学原理 https://www.zhihu.com/question/35322351/answer/67193153
2019.6.25 修改Cost function最后一行的表述
2019.7.9 补充LR的优缺点、LR与SVM的异同及使用场景
2019.8.13 修改梯度下降正负号的表述