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
从一个人的身体数据来判断这个人有没有心脏病,这是一个典型的二元分类问题。 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)进行拟合。
我们想要得到的目标函数是 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)
同样的,对每一个样本 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。
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为正例的概率。
现在将 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(答案是利用似然函数)。
我们想要建模的函数表示的是样本为正例的可能性,即 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))
这里给出一个结果,逻辑斯蒂的损失函数 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)的梯度。
应用求导的链式法则对 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)
这里可以看到梯度是一个加权和,其中的权值为 θ ( − 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在这个样本点上是错的。即,犯错误的点会得到比较大的权重值。
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)
即,梯度的负方向!
得到了最好的方向, 我们就可以对 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,只要能算出梯度,这个问题就可以解决。
已经解决了更新的方向的问题, 现在我们考虑步长的问题。
对于 η \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)
现在我们得到了完整的 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,⋯
⋯ \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 θ函数值和样本值的乘积和。
这篇介绍了 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, 从而构造模型。