机器学习笔记-Logistic回归

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=Xy

1 - 逻辑斯蒂回归问题

1.1 - 问题的提出

从一个人的身体数据来判断这个人有没有心脏病,这是一个典型的二元分类问题。 logistic regression \text{logistic regression} logistic regression关注的是根据一个人的身体状况来给出可能心脏病发的概率。也就是说我们想要知道的是 P ( + 1 ∣ x ) P(+1|x) P(+1x)的值是大小。这样的问题可以称为 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=1x)进行建模。或者说目标函数是 f ( x ) = P ( y = 1 ∣ x ) f(x)=P(y=1|x) f(x)=P(y=1x),我们的任务是找一个最佳的模型( 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(+1x)[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(+1x1))
( 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(+1x2))
⋯ \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(+1xN))

这样我们就可以找一个 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=0dwixi

现在我们想要的并不是这个分数的大小( 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+es1

逻辑斯蒂回归从表面上看就是加了一个 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=1x)
根据上面给出的等式可以定义:

P ( + 1 ∣ x ) = h ( x ) , P ( − 1 ∣ x ) = 1 − h ( x ) P(+1|x) =h(x), \quad P(-1|x) = 1 -h(x) P(+1x)=h(x)P(1x)=1h(x)

这样, h ( x ) h(x) h(x)描述了在给定的特征 x x x下该样本属于正例 ( y = 1 ) (y=1) (y=1)的概率; 1 − h ( x ) 1- h(x) 1h(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)×(1h(x2))(1h(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} =====1h(x)11+ewTx11+ewTx1+ewTx11+ewTxewTx1+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)×(1h(x2))××(1h(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 1h(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=1Nh(ynxn)

我们现在的目的就是 **极大化似然函数:** $$\mathop{max}\limits_{h}\prod_{n=1}^N h(y_nx_n)$$

重写一下逻辑斯蒂函数: θ ( 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=1Nh(ynxn)=n=1N1+exp(ynwTxn)1=n=1Nθ(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=1Nθ(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=1Nθ(ynwTxn)=maxwn=1Nlnθ(ynwTxn)=minwn=1Nlnθ(ynwTxn)

其中

θ ( s ) = 1 1 + e − s \theta(s) = \frac{1}{1+e^{-s}} θ(s)=1+es1

这样我们就得到了** 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=1Nlnθ(ynwTxn)=minwn=1Nln(1+exp(ynwTxn)1)=minwn=1Nln(1+exp(ynwTxn))=minwn=1Nln(1+exp(ynwTxn))=minwEin(w) n=1Nerr(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=1Nln(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=1Nln(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=1Nln( 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} wiEin(w)=N1n=1N(ln())((1+exp()))((wi)(ynwTxn))=N1n=1N(1)(exp())(ynxn,i)=N1n=1N(1+exp()exp())(ynxn,i)=N1n=1Nθ()(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}) wEin(w)=N1n=1Nθ(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=1Nθ(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 ynwTxn0。所有的 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+1wt+η 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)=N1n=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)+ηvTEin(wt)

这样的话,原来的问题: m i n ∣ ∣ v ∣ ∣ = 1   E i n ( w t + η v ) min_{||v||=1} \ E_{in}(w_t+\eta v) minv=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} minv=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)} minv=1 vTEin(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,

  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=1Nθ(ynwTxn)(ynxn)
  2. 梯度下降更新权重
    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(+1x)的值这个问题出发,我们使用 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, 从而构造模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值