0 - 回顾
l i n e a r r e g r e s s i o n linear\ regression linear regression如果使用平方错误的话,我们可以很方便的解析出最好的 w w w是什么。即 w b e s t = X † y w_{ best}=X^{\dagger} y wbest=X†y
1 - 逻辑斯蒂回归问题
1.1 - 问题的提出
从一个人的身体数据来判断这个人有没有心脏病,这是一个典型的二元分类问题。 logistic regression \text{logistic regression} logistic regression关注的是根据一个人的身体状况来给出可能心脏病发的概率。也就是说我们想要知道的是 P ( + 1 ∣ x ) P(+1|x) P(+1∣x)的值是大小。这样的问题可以称为 s o f t b i n a r y c l a s s i f i c a t i o n soft\ \ binary\ \ classification soft binary classification,因为现在我们想要的结果不单是一个样本所属的类别是 × \times × (是反例)或者是 ◯ \bigcirc ◯(是正例)?我们关心的是取值为正例 ◯ \bigcirc ◯的概率的大小:如果这个值接近于 1 1 1,那么为 ◯ \bigcirc ◯的可能性就大;如果这个值接近于 0 0 0,那么为 ◯ \bigcirc ◯的可能性就小。
所以 logistic regression \text{logistic regression} logistic regression想做的是对给定特征 x x x下 y y y为正例的概率 P ( y = 1 ∣ x ) P(y=1|x) P(y=1∣x)进行建模。或者说目标函数是 f ( x ) = P ( y = 1 ∣ x ) f(x)=P(y=1|x) f(x)=P(y=1∣x),我们的任务是找一个最佳的模型( hyperthesis \text{hyperthesis} hyperthesis)进行拟合。
1.2 - Soft Binary Classification
我们想要得到的目标函数是 f ( x ) = P ( + 1 ∣ x ) ⊆ [ 0 , 1 ] f(x) = P(+1|x) \subseteq [0, 1] f(x)=P(+1∣x)⊆[0,1], 即针对一个输入 x x x, 函数给出是正例的可能性,那么我们理想的希望拿到的数据应该是下面这样的:
(
x
1
,
y
1
′
=
0.9
=
P
(
+
1
∣
x
1
)
)
(x_1, y_1^{'}=0.9 = P(+1|x_1))
(x1,y1′=0.9=P(+1∣x1))
(
x
2
,
y
2
′
=
0.2
=
P
(
+
1
∣
x
2
)
)
(x_2, y_2^{'}=0.2 = P(+1|x_2))
(x2,y2′=0.2=P(+1∣x2))
⋯
\cdots
⋯
(
x
N
,
y
N
′
=
0.6
=
P
(
+
1
∣
x
N
)
)
(x_N, y_N^{'}=0.6 = P(+1|x_N))
(xN,yN′=0.6=P(+1∣xN))
这样我们就可以找一个 h y p o t h e s i s hypothesis hypothesis g g g, 让 g g g在 d a t a data data上的表现很好(误差很小),这样 g g g可能就和我们想要的那个未知的 t a r g e t f u n c t i o n f target\ function\ f target function f很相近。但是实际我们得到的数据和做 b i a n r y c l a s s i f i c a t i o n bianry\ classification bianry classification时是一样的。即是下面这样的:
(
x
1
,
y
1
′
=
1
)
(x_1, y_1^{'}=1)
(x1,y1′=1)
(
x
2
,
y
2
′
=
0
)
(x_2, y_2^{'}=0)
(x2,y2′=0)
⋯
\cdots
⋯
(
x
N
,
y
N
′
=
0
)
(x_N, y_N^{'}=0)
(xN,yN′=0)
1.3 - Logistic回归的假设函数
同样的,对每一个样本 x = ( x 0 , x 1 , x 2 , ⋯ , x d ) x = (x_0, x_1, x_2, \cdots, x_d) x=(x0,x1,x2,⋯,xd)的所有的特征加权求和(每一个样本有 d d d个维度的特征, x 0 x_0 x0表示的 b i a s bias bias或者是 t h r e s h o l d threshold threshold, 相应的 w 0 = 1 w_0 = 1 w0=1):
s = ∑ i = 0 d w i x i s = \sum_{i=0}^dw_ix_i s=i=0∑dwixi
现在我们想要的并不是这个分数的大小( linear regression \text{linear regression} linear regression想要的是这个)。直观上我们想要分数 s s s越高,对应患病风险越高;分数 s s s越低,对应患病的风险越小。并且我们想要的输出是一个介于 [ 0 , 1 ] [0, 1] [0,1]之间的数(拥有概率的意义),所以我们使用 l o g i s t i c logistic logistic函数(或者称为 θ \theta θ函数)来将上述的特征加权和的 ( − ∞ , + ∞ ) (-\infty, +\infty) (−∞,+∞)的输出转为 [ 0 , 1 ] [0, 1] [0,1]。
所以我们要做的就是找到一个 logistic hyperthesis \text{logistic hyperthesis} logistic hyperthesis来拟合 target function \text{target function} target function。
logistic函数
θ
\theta
θ
1.4 - logistic函数:
l o g i s t i c logistic logistic函数会把分数高的输出为1, 分数低的输出为0。
θ ( s ) = e s 1 + e s = 1 1 + e − s \theta(s) = \frac{e^s}{1+e^s}=\frac{1}{1+e^{-s}} θ(s)=1+eses=1+e−s1
逻辑斯蒂回归从表面上看就是加了一个 l o g i s t i c logistic logistic函数的线性回归。即将线性运算的结果 w T x w^Tx wTx输入到 θ \theta θ函数中,使用 h ( x ) = 1 1 + e x p ( − w T x ) h(x) = \frac{1}{1+exp({-w^Tx})} h(x)=1+exp(−wTx)1来计算在给定 x x x情况下 y y y为正例的概率。
2 - logistic回归的损失函数
2.1 - 三种线性的模型的对比
现在将 l o g i s t i c r e g r e s s i o n logistic\ regression logistic regression和我们之间接触过的 l i n e a r r e g r e s s i o n linear\ regression linear regression和 l i n e a r c l a s s i f i c a t i o n linear\ classification linear classification做一些对比。三种线性的模型共同点是都计算特征的加权和: s = w T x s = w^Tx s=wTx
在线性分类方法中, P L A PLA PLA通过关注划分错误的点也就是 e r r 0 / 1 err_{0/1} err0/1来进行分割线的调整;在线性回归中,我们使用平方误差 s q u a r e e r r o r square\ error square error来衡量真实值和预测值之间的差距,通过最小化平方误差可以很容易的得到线性回归的解析解;在逻辑斯蒂回归中如何去定义我们想要最小化的 E i n E_{in} Ein(答案是利用似然函数)。
2.2 - 交叉熵损失/logistic损失
我们想要建模的函数表示的是样本为正例的可能性,即
h
(
x
)
=
P
(
y
=
1
∣
x
)
h(x) = P(y=1|x)
h(x)=P(y=1∣x)
根据上面给出的等式可以定义:
P ( + 1 ∣ x ) = h ( x ) , P ( − 1 ∣ x ) = 1 − h ( x ) P(+1|x) =h(x), \quad P(-1|x) = 1 -h(x) P(+1∣x)=h(x),P(−1∣x)=1−h(x)
这样, h ( x ) h(x) h(x)描述了在给定的特征 x x x下该样本属于正例 ( y = 1 ) (y=1) (y=1)的概率; 1 − h ( x ) 1- h(x) 1−h(x)则描述了在给定的特征 x x x下该样本属于负例的概率。假设某一个数据集 D = ( x 1 , ◯ ) , ( x 2 , × ) , ⋯ , ( x N , × ) D={(x_1, \bigcirc),(x_2, \times),\cdots,(x_N, \times)} D=(x1,◯),(x2,×),⋯,(xN,×)。那么这个数据集上的似然函数为:
P ( ◯ ∣ x 1 ) × P ( × ∣ x 2 ) ⋯ P ( × ∣ x N ) P(\bigcirc |x_1)\times P(\times |x_2) \cdots P(\times |x_N) P(◯∣x1)×P(×∣x2)⋯P(×∣xN)
根据上面的定义可以变为:
h
(
x
1
)
×
(
1
−
h
(
x
2
)
)
⋯
(
1
−
h
(
x
N
)
)
h(x_1)\times (1-h(x_2)) \cdots (1-h(x_N))
h(x1)×(1−h(x2))⋯(1−h(xN))
而
1
−
h
(
x
)
=
1
−
1
1
+
e
−
w
T
x
=
1
+
e
−
w
T
x
−
1
1
+
e
−
w
T
x
=
e
−
w
T
x
1
+
e
−
w
T
x
=
1
1
+
e
w
T
x
=
h
(
−
x
)
\begin{aligned} &1 - h(x) \\ = & 1 - \frac{1}{1+e^{-w^Tx}}\\ = & \frac{1+e^{-w^Tx}-1}{1+e^{-w^Tx}}\\ = & \frac{e^{-w^Tx}}{1+e^{-w^Tx}}\\ = & \frac{1}{1+e^{w^Tx}}\\ = & h(-x) \end{aligned}
=====1−h(x)1−1+e−wTx11+e−wTx1+e−wTx−11+e−wTxe−wTx1+ewTx1h(−x)
根据以上的性质似然函数的表达式变为:
l
i
k
e
l
i
h
o
o
d
(
h
)
=
h
(
x
1
)
×
(
1
−
h
(
x
2
)
)
×
⋯
×
(
1
−
h
(
x
N
)
)
=
h
(
x
1
)
×
h
(
−
x
2
)
×
⋯
×
h
(
−
x
N
)
\begin{aligned} likelihood(h)& = h(x_1)\times (1-h(x_2)) \times \cdots \times (1-h(x_N)) \\ & = h(x_1)\times h(-x_2) \times \cdots \times h(-x_N) \\ \end{aligned}
likelihood(h)=h(x1)×(1−h(x2))×⋯×(1−h(xN))=h(x1)×h(−x2)×⋯×h(−xN)
那么接下来就可以利用极大似然估计法来估计模型参数。所以我们现在的目标是最大化似然函数
h
(
x
1
)
×
h
(
−
x
2
)
×
⋯
×
h
(
−
x
N
)
h(x_1)\times h(-x_2) \times \cdots \times h(-x_N)
h(x1)×h(−x2)×⋯×h(−xN),
极大化似然函数就是令每一个样本属于其真实标记的概率极大化:
极大化
x
1
x_1
x1属于正例的概率
h
(
x
1
)
h(x_1)
h(x1) AND 极大化
x
2
x_2
x2属于负例的概率
h
(
−
x
2
)
h(-x_2)
h(−x2)(即极大化
1
−
h
(
x
2
)
⟶
1 - h(x_2) \longrightarrow
1−h(x2)⟶ 极小化
h
(
x
2
)
⟶
h(x_2)\longrightarrow
h(x2)⟶极小化
x
2
x_2
x2属于正例的概率) AND
⋯
\cdots
⋯ AND极小化
x
N
x_N
xN属于负例的概率。
将每一个样本的
y
y
y写入上式可以得到似然函数:
l
i
k
e
l
i
h
o
o
d
(
h
)
=
∏
n
=
1
N
h
(
y
n
x
n
)
likelihood(h) = \prod_{n=1}^N h(y_nx_n)
likelihood(h)=n=1∏Nh(ynxn)
重写一下逻辑斯蒂函数:
θ
(
x
)
=
1
1
+
e
x
p
(
−
x
)
\theta (x) = \frac{1}{1+exp(-x)}
θ(x)=1+exp(−x)1,
重写一下我们的逻辑斯蒂回归模型的假设函数:
h
(
x
)
=
1
1
+
e
x
p
(
−
w
T
x
)
h(x) = \frac1{1 + exp(-w^Tx)}
h(x)=1+exp(−wTx)1
那么
∏ n = 1 N h ( y n x n ) = ∏ n = 1 N 1 1 + e x p ( − y n w T x n ) = ∏ n = 1 N θ ( y n w T x n ) (1) \prod_{n=1}^{N}h(y_nx_n) = \prod_{n=1}^{N}\frac1{1+exp(-y_nw^Tx_n)} = \prod_{n=1}^N\theta(y_nw^Tx_n)\tag1 n=1∏Nh(ynxn)=n=1∏N1+exp(−ynwTxn)1=n=1∏Nθ(ynwTxn)(1)
我们的目标变为寻找参数 w w w使得 ( 1 ) (1) (1)最大
m a x w ∏ n = 1 N θ ( y n w T x n ) max_w\prod_{n=1}^N \theta(y_nw^Tx_n) maxwn=1∏Nθ(ynwTxn)
在机器学习中通常定义损失函数,并最小化,所以取 l o g log log,并且变为求最小值
m a x w l n ∏ n = 1 N θ ( y n w T x n ) = m a x w ∑ n = 1 N l n θ ( y n w T x n ) = m i n w ∑ n = 1 N − l n θ ( y n w T x n ) \mathop{max}\limits_{w} \ ln \prod_{n=1}^N \theta(y_nw^Tx_n) = max_w \sum_{n=1}^Nln \theta(y_nw^Tx_n) = min_w \sum_{n=1}^N - ln \theta(y_nw^Tx_n) wmax lnn=1∏Nθ(ynwTxn)=maxwn=1∑Nlnθ(ynwTxn)=minwn=1∑N−lnθ(ynwTxn)
其中
θ ( s ) = 1 1 + e − s \theta(s) = \frac{1}{1+e^{-s}} θ(s)=1+e−s1
这样我们就得到了**
logistic regression
\text{logistic regression}
logistic regression的损失函数**:
m
i
n
w
∑
n
=
1
N
−
l
n
θ
(
y
n
w
T
x
n
)
=
m
i
n
w
∑
n
=
1
N
−
l
n
(
1
1
+
e
x
p
(
−
y
n
w
T
x
n
)
)
=
m
i
n
w
∑
n
=
1
N
l
n
(
1
+
e
x
p
(
−
y
n
w
T
x
n
)
)
=
m
i
n
w
∑
n
=
1
N
l
n
(
1
+
e
x
p
(
−
y
n
w
T
x
n
)
)
=
m
i
n
w
∑
n
=
1
N
e
r
r
(
w
,
x
n
,
y
n
)
⏟
E
i
n
(
w
)
\begin{aligned} & \quad min_w \sum_{n=1}^N - ln \theta(y_nw^Tx_n) \\ &= min_w \sum_{n=1}^N-ln(\frac{1}{1+exp(-y_nw^Tx_n)}) \\ &= min_w \sum_{n=1}^N ln(1+exp(-y_nw^Tx_n)) \\ &= min_w \sum_{n=1}^N ln(1+exp(-y_nw^Tx_n)) \\ &= min_w \underbrace{\sum_{n=1}^{N} err(w, x_n, y_n)}_{E_{in}(w)} \end{aligned}
minwn=1∑N−lnθ(ynwTxn)=minwn=1∑N−ln(1+exp(−ynwTxn)1)=minwn=1∑Nln(1+exp(−ynwTxn))=minwn=1∑Nln(1+exp(−ynwTxn))=minwEin(w)
n=1∑Nerr(w,xn,yn)
这里有一个概念
e
r
r
(
w
,
x
,
y
)
=
l
n
(
1
+
e
x
p
(
−
y
w
x
)
)
err(w, x, y) = ln(1+exp(-ywx))
err(w,x,y)=ln(1+exp(−ywx))被定义为
c
r
o
s
s
e
n
t
r
o
p
y
e
r
r
o
r
cross\ entropy\ error
cross entropy error。
到这里我们就把想要极大化似然函数的目的变为要极小化
E
i
n
E_{in}
Ein。得到了如下的目标,下一小节讲解如何求解使得损失函数最小的
w
w
w:
m
i
n
w
∑
n
=
1
N
l
n
(
1
+
e
x
p
(
−
y
n
w
T
x
n
)
)
min_w \sum_{n=1}^N ln(1+exp(-y_nw^Tx_n))
minwn=1∑Nln(1+exp(−ynwTxn))
3 - Gradient of Logistic Regression Error
3.1 - 求交叉熵损失的梯度
这里给出一个结果,逻辑斯蒂的损失函数 E i n E_{in} Ein也是一个凸函数。所以当我们想要最小化 E i n E_{in} Ein的时候, 就是要找到该函数的“谷底”,而在“谷底”的时候梯度为0。所以最佳的 w w w就是使得梯度 ▽ E i n ( w ) \triangledown E_{in}(w) ▽Ein(w)等于 0 0 0的 w w w, 此时 E i n E_{in} Ein最小。
E i n ( w ) = 1 N ∑ n = 1 N l n ( 1 + e x p ( − y n w T x n ) ) E_{in}(w) = \frac1N \sum_{n=1}^N ln(1+exp(-y_nw^Tx_n)) Ein(w)=N1n=1∑Nln(1+exp(−ynwTxn))
所以第一步就是求 E i n ( w ) E_{in}(w) Ein(w)的梯度。
- 首先对
E
i
n
(
w
)
E_{in}(w)
Ein(w)求导,即计算
▽
E
i
n
(
w
)
\bigtriangledown E_{in}(w)
▽Ein(w)
E i n ( w ) = 1 N ∑ n = 1 N l n ( 1 + e x p ( − y n w T x n ⏞ ∘ ) ⏟ □ ) E_{in}(w) = \frac1N \sum_{n=1}^N ln(\underbrace{ 1+exp( \overbrace{-y_nw^Tx_n}^{\circ}) }_{\Box}) Ein(w)=N1n=1∑Nln(□ 1+exp(−ynwTxn ∘))
应用求导的链式法则对
w
i
w_i
wi求偏导
∂
E
i
n
(
w
)
∂
w
i
=
1
N
∑
n
=
1
N
(
∂
l
n
(
□
)
∂
□
)
(
∂
(
1
+
e
x
p
(
∘
)
)
∂
∘
)
(
∂
(
−
y
n
w
T
x
n
)
∂
(
w
i
)
)
=
1
N
∑
n
=
1
N
(
1
□
)
(
e
x
p
(
∘
)
)
(
−
y
n
x
n
,
i
)
=
1
N
∑
n
=
1
N
(
e
x
p
(
∘
)
1
+
e
x
p
(
∘
)
)
(
−
y
n
x
n
,
i
)
=
1
N
∑
n
=
1
N
θ
(
∘
)
(
−
y
n
x
n
,
i
)
\begin{aligned} \frac{\partial E_{in}(w)}{\partial w_i} & = \frac1N \sum_{n=1}^N (\frac{\partial ln(\Box)}{\partial \Box} )(\frac{\partial(1+exp(\circ))}{\partial \circ})(\frac{\partial(-y_nw^Tx_n)}{\partial(w_i)}) \\ & =\frac{1}{N}\sum_{n=1}^{N}(\frac{1}{\Box})(exp(\circ))(-y_nx_{n,i}) \\ & =\frac{1}{N}\sum_{n=1}^{N}(\frac{exp(\circ)}{1+exp(\circ)})(-y_nx_{n,i}) \\ & =\frac{1}{N}\sum_{n=1}^{N}\theta(\circ)(-y_nx_{n,i}) \\ \end{aligned}
∂wi∂Ein(w)=N1n=1∑N(∂□∂ln(□))(∂∘∂(1+exp(∘)))(∂(wi)∂(−ynwTxn))=N1n=1∑N(□1)(exp(∘))(−ynxn,i)=N1n=1∑N(1+exp(∘)exp(∘))(−ynxn,i)=N1n=1∑Nθ(∘)(−ynxn,i)
可以得到:
∂ E i n ( w ) ∂ w = 1 N ∑ n = 1 N θ ( − y n w T x n ) ( − y n x n ) \frac{\partial E_{in}(w)}{\partial w} = \frac{1}{N}\sum_{n=1}^{N}\theta(-y _nw^Tx_n)(-y_nx_{n}) ∂w∂Ein(w)=N1n=1∑Nθ(−ynwTxn)(−ynxn)
- 求解使得梯度为0的
w
w
w
w a n t ▽ E i n ( w ) = 1 N ∑ n = 1 N θ ( − y n w T x n ) ( − y n x n ) = 0 want \ \triangledown E_{in}(w) = \frac{1}{N}\sum_{n=1}^{N}\theta(-y _nw^Tx_n)(-y_nx_{n}) = 0 want ▽Ein(w)=N1n=1∑Nθ(−ynwTxn)(−ynxn)=0
这里可以看到梯度是一个加权和,其中的权值为 θ ( − y n w T x n ) \theta(-y_nw^Tx_n) θ(−ynwTxn)。一种情况是,该梯度要为0,那么所有的权值项都要为0。即 θ ( − y n w T x n ) \theta(-y_nw^Tx_n) θ(−ynwTxn)都要为0。那么此时就要求 − y n w T x n -y_nw^Tx_n −ynwTxn非常小,即 y n w T x n ≫ 0 y_nw^Tx_n \gg 0 ynwTxn≫0。所有的 y n w T x n y_nw^Tx_n ynwTxn都满足远远大于0( w T x n w^Tx_n wTxn和 y n y_n yn同号),说明该数据必须是线性可分的。所以想要得到解析解是困难的。并且不同于 l i n e a r r e g r e s s i o n linear\ regression linear regression,在 l i n e a r r e g r e s s i o n linear\ regression linear regression中我们要求的是一个线性的方程式,但是这里是一个非线性的方程式,所以我们不可能可以得到类似与 l i n e a r r e g r e s s i o n linear\ regression linear regression的 a n a l y t i c s o l u t i o n analytic\ solution analytic solution。
回顾下 P L A PLA PLA算法在寻求最优的 w w w时所使用的方法,不像 l i n e a r r e g r e s s i o n linear\ regression linear regression可以直接得到 a n a l y t i c s o l u t i o n analytic\ solution analytic solution, P L A PLA PLA是一步一步的对参数 w w w进行修正: 每一次看看 w w w在哪个数据点犯了错, 当发现犯了错误之后就对 w w w做修正,直到不再犯错。 我们可以把以上的这个过程简化的表示如下:
w t + 1 ← w t + 1 ⏟ η [ [ s i g n ( w T x n ) ≠ y n ] ] y n x n ⏟ v w_{t+1} \leftarrow w_{t} + \underbrace{1}_{\eta} \underbrace{ [[ \ sign(w^Tx_n) \ne y_n \ ]]y_nx_n}_{v} wt+1←wt+η 1v [[ sign(wTxn)=yn ]]ynxn
即如果样本
(
x
n
,
y
n
)
(x_n, y_n)
(xn,yn)犯错,那么就根据该样本对方向进行更新;如果没有犯错,那么就不更新。
其中的
η
\eta
η是步长,
v
v
v是更新的方向。当对步长和方向做不同的规定的时候, 就可以得到不同的算法。我们把这样的算法: 一步一步的改进,每一次都决定方向,然后走一小步称为
iterative optimization approach
\text{iterative optimization approach}
iterative optimization approach。
Quiz
在梯度中:
▽
E
i
n
(
w
)
=
1
N
∑
n
=
1
N
θ
(
−
y
n
w
T
x
n
)
(
−
y
n
x
n
)
\bigtriangledown E_{in}(w) = \frac{1}{N}\sum_{n=1}^{N}\theta(-y_nw^Tx_n)(-y_nx_{n})
▽Ein(w)=N1∑n=1Nθ(−ynwTxn)(−ynxn),哪一个样本点的权重值是最大的。
answer:
y
n
w
T
x
n
y_nw^Tx_n
ynwTxn值最小的样本点。
why:
y
n
w
T
x
n
y_nw^Tx_n
ynwTxn的值最小,有可能是负值,也就是说此时的
w
w
w在这个样本点上是错的。即,犯错误的点会得到比较大的权重值。
4 - 梯度下降算法
4.1 - 为什么是负梯度方向
iterative optimization \text{iterative optimization} iterative optimization要做的事情就是找一个合适的方向 v v v,然后决定一个步长 η \eta η,通过这样的方式来不断的更新 w w w。
f
o
r
t
=
0
,
1
,
2
,
⋯
for\ t = 0, 1, 2, \cdots
for t=0,1,2,⋯
w
t
+
1
=
w
t
+
η
v
w_{t+1} = w_{t} + \eta v
wt+1=wt+ηv
u
n
t
i
l
s
t
o
p
,
r
e
t
u
r
n
w
a
s
g
until\ stop, return\ w\ as\ g
until stop,return w as g.
其中:
v
v
v是方向(为方便计算规范化为长度为1的向量),
η
\eta
η是步长。
logistics regression \text{logistics regression} logistics regression的损失函数 E i n ( w ) E_{in}(w) Ein(w)是一个凸函数, 像如下的一个山谷的形状,想象当我们把一个球放在山坡的某一个地方,也就是对应于某一个 w w w,这时更新的方法就是把球慢慢的滚下去( w w w向谷底的方向移动),当球滚到谷底的时候,我们就找到了梯度为0的点,也就是最佳的 w w w所在的点。所以我们现在的目标就是要把球滚下去, v v v表示滚下去的方向(长度为1的向量), η \eta η表示每一步走多远。
想要最快的到达谷底(达到 E i n E_{in} Ein的最小值),那么对于任意给定的一个步长 η > 0 \eta > 0 η>0,一个比较贪心的想法是我们要选择一个“最陡”的下降方向 v v v来做更新(选择一个最陡的方向滚下去)。因为每一步能走的距离是一定的(一步只可以走30公分),所以现在需要的是选择好的方向 v v v:所谓好的方向就是使得沿着这个方向走了一步之后下降了最多:即使得 E i n ( w w + 1 ) E_{in}(w_{w+1}) Ein(ww+1)最小:
m i n ∣ ∣ v ∣ ∣ = 1 E i n ( w t + η v ⏟ w t + 1 ) \mathop{min}\limits_{||v||=1} \ E_{in}(\underbrace{w_t+\eta v}_{w_{t+1}}) ∣∣v∣∣=1min Ein(wt+1 wt+ηv)
这样的好的方向怎么决定呢?
利用泰勒(Taylor expansion:简单理解为一条曲线可以在很小的范围内被一条直线近似的替代)展开,如果
η
\eta
η是足够小的。那么可以得到:
E i n ( w t + η v ) ≈ E i n ( w t ) + η v T ▽ E i n ( w t ) E_{in}(w_t+\eta v) \approx E_{in}(w_t) + \eta v^T \bigtriangledown E_{in}(w_t) Ein(wt+ηv)≈Ein(wt)+ηvT▽Ein(wt)
这样的话,原来的问题: m i n ∣ ∣ v ∣ ∣ = 1 E i n ( w t + η v ) min_{||v||=1} \ E_{in}(w_t+\eta v) min∣∣v∣∣=1 Ein(wt+ηv)变为如下的线性问题:
m i n ∣ ∣ v ∣ ∣ = 1 E i n ( w t ) ⏟ k n o w n + η ⏟ g i v e n p o s i t i v e v T ⏟ u n k n o w n ▽ E i n ( w t ) ⏟ k n o w n min_{||v||=1} \ \underbrace{E_{in}(w_t)}_{known} +\underbrace{\eta}_{given \ positive} \underbrace{v^T}_{unknown} \underbrace{\bigtriangledown E_{in}(w_t)}_{known} min∣∣v∣∣=1 known Ein(wt)+given positive ηunknown vTknown ▽Ein(wt)
所以现在的情况是:
E
i
n
(
w
t
)
E_{in}(w_t)
Ein(wt),
▽
E
i
n
(
w
t
)
\bigtriangledown E_{in}(w_t)
▽Ein(wt),
η
\eta
η都是已知的。想要知道的是什么样子的
v
v
v可以使得该式子最小。
因为
E
i
n
(
w
t
)
E_{in}(w_t)
Ein(wt),
η
\eta
η都是已知的, 所以我们的最小化目标可以变为下式:
m i n ∣ ∣ v ∣ ∣ = 1 v T ▽ E i n ( w t ) min_{||v||=1} \ {v^T}{\bigtriangledown E_{in}(w_t)} min∣∣v∣∣=1 vT▽Ein(wt)
要使得该式子最小的最 o p t i m a l optimal optimal的方向 v v v就是和 ▽ E i n ( w t ) \bigtriangledown E_{in}(w_t) ▽Ein(wt)的方向相反那个向量(两个向量正好方向相反的时候內积会最小),又我们要求 v v v是单位向量, 所以可以得到最好的更新权重的方向是:
v = − ▽ E i n ( w t ) ∣ ∣ ▽ E i n ( w t ) ∣ ∣ v = - \frac{\bigtriangledown E_{in}(w_t)}{||\bigtriangledown E_{in}(w_t)||} v=−∣∣▽Ein(wt)∣∣▽Ein(wt)
即,梯度的负方向!
4.2 - 梯度下降算法
得到了最好的方向, 我们就可以对
w
w
w来进行更新(就知道了球应该会怎么滚), 对于一个小的
η
\eta
η, 权重的更新规则如下:
w
t
+
1
=
w
t
−
η
▽
E
i
n
(
w
t
)
∣
∣
▽
E
i
n
(
w
t
)
∣
∣
w_{t+1} = w_{t} - \eta \frac{\bigtriangledown E_{in}(w_t)}{||\bigtriangledown E_{in}(w_t)||}
wt+1=wt−η∣∣▽Ein(wt)∣∣▽Ein(wt)
即,往梯度的反方向走一小步。这个方法就是
g
r
a
d
i
e
n
t
d
e
s
c
e
n
t
gradient\ descent
gradient descent,只要能算出梯度,这个问题就可以解决。
4.3 - 如何选择步长
已经解决了更新的方向的问题, 现在我们考虑步长的问题。
对于
η
\eta
η的设置,太小或者太大都不合适。一个不错的选择是步长最好是正比与梯度。**梯度大的时候,步长大一点;梯度小的时候,步长小一点。**也就是说比较好的步长应该是这样的
η
^
=
λ
∣
∣
▽
E
i
n
(
w
t
)
∣
∣
\hat{\eta} = \lambda ||\bigtriangledown E_{in}(w_t)||
η^=λ∣∣▽Ein(wt)∣∣.这样,原来的更新规则:
w
t
+
1
=
w
t
−
η
▽
E
i
n
(
w
t
)
∣
∣
▽
E
i
n
(
w
t
)
∣
∣
w_{t+1} = w_{t} - \eta \frac{\bigtriangledown E_{in}(w_t)}{||\bigtriangledown E_{in}(w_t)||}
wt+1=wt−η∣∣▽Ein(wt)∣∣▽Ein(wt)
得到
g
r
a
d
i
e
n
t
d
e
s
c
e
n
t
gradient\ descent
gradient descent最终的更新规则:
w
t
+
1
=
w
t
−
η
▽
E
i
n
(
w
t
)
w_{t+1} = w_{t} - \eta \bigtriangledown E_{in}(w_t)
wt+1=wt−η▽Ein(wt)
4.4 - 逻辑斯蒂回归算法
现在我们得到了完整的 l o g i s t i c r e g r e s s i o n logistic\ regression logistic regression算法的流程如下:
初始化
w
0
w_0
w0
F
o
r
t
=
0
,
1
,
⋯
For\ t = 0, 1, \cdots
For t=0,1,⋯
- 计算梯度
▽ E i n ( w ) = 1 N ∑ n = 1 N θ ( − y n w T x n ) ( − y n x n ) \bigtriangledown E_{in}(w)= \frac{1}{N}\sum_{n=1}^{N}\theta(-y_nw^Tx_n)(-y_nx_{n}) ▽Ein(w)=N1n=1∑Nθ(−ynwTxn)(−ynxn) - 梯度下降更新权重
w t + 1 = w t − η ▽ E i n ( w t ) w_{t+1} = w_{t} - \eta \bigtriangledown E_{in}(w_t) wt+1=wt−η▽Ein(wt)
⋯
\cdots
⋯ 直到
▽
E
i
n
(
w
)
≈
0
\bigtriangledown E_{in}(w) \approx 0
▽Ein(w)≈0 或者已经更新了足够多的步数
返回最新的
w
t
+
1
w_{t+1}
wt+1作为
g
g
g。
在每一个迭代步中,花费最大是计算梯度:所有的样本的 θ \theta θ函数值和样本值的乘积和。
5 - 总结
这篇介绍了 logistic regression \text{logistic regression} logistic regression,从我们想要直接计算 P ( + 1 ∣ x ) P(+1|x) P(+1∣x)的值这个问题出发,我们使用 l o g i s t i c f u n c t i o n logistic\ function logistic function作为假设函数,并且定义了 c r o s s cross cross- e n t r o p y e r r o r entropy\ error entropy error。我们想要最小化这个 e r r o r error error,那么就要计算这个 e r r o r error error的梯度, 得到的梯度是 θ \theta θ函数和资料的乘积的一个求和平均。但是我们没有办法直接得到梯度为 0 0 0时候 w w w的解,所以就引出了 g r a d i e n t d e s c e n t gradient\ descent gradient descent这样的 i t e r a t i v e o p t i m i z a t i o n a p p r o a c h iterative\ optimization\ approach iterative optimization approach可以帮助我们找到最佳的权重值 w w w, 从而构造模型。