被掰弯的线性函数,海王一样的logstic

目录


1、直男 线性回归
2、海王logistic,被掰弯的线性回归
3、海王征服的妹子
3.1 Word2Vector
3.2 XGBoost
3.3 深度学习中的sigmod


摘要

本文将要讲述的内容是多个机器学习方法推导的一些共通之处,虽涉及到算法的推导,但还是希望能尽量轻松愉快的讲解,并且能够帮助大家,将这几个算法的推导,更加系统化的理解。

本文主要将要讲到的几个机器学习的方法包括线性回归、logstic回归、XGBoost、Word2Vector以及深度学习等一系列方法的推导以及他们在推导中的共通之处。可能这里提到的内容,很多大神都有提到过,没有关系,可以再次温习一下。

1、直男 线性回归

以前学习的时候,就有大神跟我说过,机器学习,得线性着得天下,现在想来,机器学习就是线性到非线性的过程,线性学好了,从线性到非线性的演变自然就能通了。线性与非线性的概念,这里简单的介绍下:在二维空间,能够被一条直线分开的数据,叫线性可分,而这条直线就是线性函数,有意思的是,二维空间线性不可分的数据,在三维或更高维可能可以线性可分,从这一点说,线性与非线性貌似是维度的压制。

线性回归,说的就是,不管多少维,用来学习的就是一个线性函数,函数为:

F ( X ) = W T X + b F(X)= \mathbf{W^TX+b} F(X)=WTX+b

通俗的解释下这个应用场景,比如说,有这样一批数据,对于每一个数据,有 m m m个对房价的影响因素,写成一个向量 x i x_i xi,然后经过调查,知道 x i x_i xi 情况下,房价就是 y i y_i yi 元。如果搜集很 n n n组数据数据,也就是 i = 1 , 2 , 3 , . . . , n i=1, 2, 3, ..., n i=1,2,3,...,n,得到 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D=\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\} D={(x1,y1),(x2,y2),...,(xn,yn)},写成向量的形式 D = { ( X , Y ) } D =\{(X, Y)\} D={(X,Y)},其中 X = ( x 1 , x 2 , . . . , x n ) X=(x_1, x_2, ..., x_n) X=(x1,x2,...,xn) Y = ( y 1 , y 2 , y 3 , . . . , y n ) Y=(y_1,y_2,y_3, ..., y_n) Y=(y1,y2,y3,...,yn),接下来简单的说明求解过程。

根据最小错误准则,算法预测的数据与实际的数据之间的差距,应该约小越好,在进经典的线性回归中,使用的 loss function 是均方误差:

L ( W ) = 1 2 ( F ( X ) − Y ) 2 L(W) = \frac{1}{2}(F(X)-Y)^2 L(W)=21(F(X)Y)2

很明显, L ( W ) L(W) L(W) 为凸函数,可以求导试试:

∂ L ( W ) ∂ W = X T X W − X T Y \frac{\partial L(W)}{\partial W} = \mathbf{X^TXW-X^TY} WL(W)=XTXWXTY

如果 X T X X^TX XTX 的逆存在,就可以直接求得最优解:

W = ( X T X ) − 1 X T Y \mathbf{W} = \mathbf{(X^TX)^{-1}X^TY} W=(XTX)1XTY

对于 X T X X^TX XTX不可逆的情况,可以使用梯度下降或加一个 λ I \lambda I λI向量来求解,其中 0 < λ < 1 0< \lambda < 1 0<λ<1 I I I为单位矩阵。如果有小伙伴对于线性回归感兴趣,或者觉得以上讲解过于简单,没有弄清楚,可以参照我的另外一篇博文机器学习:线性回归(Linear Regression)

2、海王logistic,被掰弯的线性回归

线性回归的推导过程,其实跟logistic回归的推导过程并不一样,这也是在线性回归的时候,粗略带过,直男的待遇,不是特别重视。但是,logistic回归就是基于它来的,每一个海王都有青涩的曾经,一定是受了挫折,预测和分类都不达标,只能改变自己,线性崛起,被迫掰弯自己,华丽转身成logistic回归。

这里用logistic来解决分类问题,模型训练成功后,输出给定样本特征及模型超参数的情况下,属于某类别的概率。经典案例,二分类问题,如果事件 A A A发生的概率为 P A P_A PA,那么事件 A A A不发生的概率就是 1 − P A 1-P_A 1PA,判断的时候,可以用比
P A 1 − P A \frac{P_A}{1-P_A} 1PAPA
这个公式是有名字的哦,它叫事件发生的几率(大概就是我们通俗的说,这个事情发生的机率挺大的“几率”),几率 > 1 >1 >1,认为事件会发生,反之,认为事件不发生。对几率取对数,得到 l n P A 1 − P A ln\frac{P_A}{1-P_A} ln1PAPA就是对数几率了,假设我们用线性模型来回归对数几率的值为
f ( x ) = w x + b = l n P A 1 − P A f(x) =wx+b=ln \frac{P_A}{1-P_A} f(x)=wx+b=ln1PAPA
求解可得
F ( x ) = P A = e f ( x ) 1 + e f ( x ) = 1 1 + e − f ( x ) = 1 1 + e − ( w x + b ) F(x)=P_A=\frac{e^{f(x)}}{1+e^{f(x)}}=\frac{1}{1+e^{-f(x)}}=\frac{1}{1+e^{-(wx+b)}} F(x)=PA=1+ef(x)ef(x)=1+ef(x)1=1+e(wx+b)1

看到这个公式,我们是不是很熟悉,对的,这就是logistic(概率分布函数),也就是它把线性函数给掰弯了,上个图展示下:

在这里插入图片描述

图1. logistic分布的概率密度函数和分布函数

现在,需要求的是一个时间发生的概率,要学的参数还是线性函数中的 w , b w,b w,b,那是不是还是按照之前的最小错误率准则构造最小均方误差的loss function呢?回答这个问题之前,先把问题定义清楚。假设有一堆事情,其表示为 ( x i , y i ) (x_i, y_i) (xi,yi),其中 i = 1 , 2 , 3 , . . . , n i=1, 2, 3, ..., n i=1,2,3,...,n x i x_i xi是一组判断事件发生与否的已知因素,比如判断一个程序员是否有女朋友的时候,可以总结这个小伙跟女生交流是否脸红(小伙,都红过吧),是否常洗澡换衣…, 假设已知因素很多,有 m m m个,然后 y i y_i yi就表示该小伙有没有女友的事实了, y i = 1 y_i=1 yi=1表示有, y i = 0 y_i=0 yi=0就是没有。然后,经过某些有心人士的搜集,就有了一批数据 D = ( X , Y ) D=(X,Y) D=(X,Y),也就是说 上述的 i = 1 , 2 , . . . , n i=1,2, ..., n i=1,2,...,n,也就是 X = ( x 1 , x 2 , . . . , x n ) , Y = ( y 1 , y 2 , . . . , y n ) X=(x_1, x_2, ..., x_n), Y=(y_1, y_2, ..., y_n) X=(x1,x2,...,xn),Y=(y1,y2,...,yn)
数据有了,如果用均方误差函数,这loss function为:
L ( W ) = 1 2 ∑ i = 1 n ( F ( x i ) − y i ) 2 = 1 2 ∑ i = 1 n ( 1 1 + e − ( w i x i + b ) − y i ) 2 \begin{aligned} L(W) &= \frac{1}{2}\sum_{i=1}^{n}(F(x_i)-y_i)^2 \\ &= \frac{1}{2}\sum_{i=1}^{n}(\frac{1}{1+e^{-(w_ix_i+b)}}-y_i)^2 \end{aligned} L(W)=21i=1n(F(xi)yi)2=21i=1n(1+e(wixi+b)1yi)2

什么都不说了,无脑求导呗

∂ L ( w ) ∂ w = ∑ i = 1 n ( F ( x i ) − y i ) ( 1 − F ( x i ) ) F ( x i ) ( − x i ) \frac{\partial L(w)}{\partial w} = \sum_{i=1}^{n}{(F(x_i)-y_i)(1-F(x_i))F(x_i)(-x_i)} wL(w)=i=1n(F(xi)yi)(1F(xi))F(xi)(xi)

假设某个事件发生 F ( x i ) F(x_i) F(xi) = 1,该事件发生,则 1 − F ( x i ) = 0 1-F(x_i)=0 1F(xi)=0,最后求得 ∂ L ( w ) ∂ w = 0 \frac{\partial L(w)}{\partial w} = 0 wL(w)=0,符合实际,离目标很近的时候,梯度为 0 0 0 F ( x i ) = 0 F(x_i) = 0 F(xi)=0,这个时候离目标很远,同样求得 ∂ L ( w ) ∂ w = 0 \frac{\partial L(w)}{\partial w} = 0 wL(w)=0,无法有优化了。

换个方向,既然是概率,那假设每个事件发生的概率互相不影响(独立),每个事件都用的同一个分布函数(同分布),对于样本 i i i,取其对应标签成立情况下的概率为:
p i = F ( x i ) y i ( 1 − F ( x i ) ) ( 1 − y i ) p_i = F(x_i)^{y_i}(1-F(x_i))^{(1-y_i)} pi=F(xi)yi(1F(xi))(1yi)

如果样本 y i = 1 y_i=1 yi=1,说明事件发生, p i = F ( x i ) p_i=F(x_i) pi=F(xi);如果 y i = 0 y_i=0 yi=0,取的是 p i = 1 − F ( x i ) p_i=1-F(x_i) pi=1F(xi)
所有样本,不管是没发生还是发生,每个样本都正确的概率(极大似然)为:
L ( w ) = ∏ i = 1 n p i L(w)=\prod_{i=1}^{n}{p_i} L(w)=i=1npi

最大化这个函数,以达到所有的样本都按照其特定的事实去发生(正样本)与不发生(负样本),就可以得到训练的模型了。

对数似然为:

l ( w ) = l o g L ( w ) = l o g ∏ i = 1 n p i = ∑ i = 1 n ⟮ y i l o g F ( x i ) + ( 1 − y i ) l o g ( 1 − F ( x i ) ) ⟯ \begin{aligned} l(w) &= logL(w) \\ &= log\prod_{i=1}^{n}{p_i} \\ &= \sum_{i=1}^{n}{\lgroup y_ilogF(x_i)+(1-y_i)log(1-F(x_i))\rgroup} \end{aligned} l(w)=logL(w)=logi=1npi=i=1nyilogF(xi)+(1yi)log(1F(xi))

梯度的推导过程如下:

∂ l ( w ) ∂ w j = ∑ i = 1 n ( y i F ( x i ) − 1 − y i 1 − F ( x i ) ) ∂ F ( x i ) ∂ w j = ∑ i = 1 n y i − y i F ( x i ) − F ( x i ) + y i F ( x i ) F ( x i ) ( 1 − F ( x i ) ) F ( x i ) ( 1 − F ( x i ) ) ( − x j ) = ∑ i = 1 n ( F ( x i ) − y i ) x j \begin{aligned} \frac{\partial l(w)}{\partial w_j} &= \sum_{i=1}^{n}{(\frac{y_i}{F(x_i)}-\frac{1-y_i}{1-F(x_i)})\frac{\partial F(x_i)}{\partial w_j}} \\ &=\sum_{i=1}^{n}{\frac{y_i-y_iF(x_i)-F(x_i)+y_iF(x_i)}{F(x_i)(1-F(x_i))}} F(x_i)(1-F(x_i))(-x_j) \\ &= \sum_{i=1}^{n}{(F(x_i)-y_i)x_j} \end{aligned} wjl(w)=i=1n(F(xi)yi1F(xi)1yi)wjF(xi)=i=1nF(xi)(1F(xi))yiyiF(xi)F(xi)+yiF(xi)F(xi)(1F(xi))(xj)=i=1n(F(xi)yi)xj

logistic梯度有了,算法就可以根据训练数据求解了。至此logistic回归,的讲解就告一段落了,需要深度回味的少年可以看看这篇博文,机器学习:Logisitic回归

3、海王征服的妹子们

讲完海王logistic自己的故事,现在可以说说海王的妹子们了,为什么说下面几个是海王的妹子呢,卖个关子,且往下看。

3.1 Word2vec

此处主要的是想说与logistic函数相关的部分,但是为了让不同的人都知道word2vector大概干了什么事情,所以额外的介绍一点基本知识,然后快速进入到说明为什么说Word2vector是海王的妹子。

3.1.1 Word2vec简单介绍

话说,最开始想做的事情并不是embedding(word2vector),想做的事情,类似于大家小学的时候,语文课常做的题,完形填空,也就是给定一个句子中的几个词,填写你认为最有可能的词。就是这样的一件事件,用算法怎么做呢?
做法很多,各种机器学习方法都可以,但是这里说到的是经典的三层神经网络模型,如下图所示:

在这里插入图片描述

图中 x 1 , x 2 , . . . , x V x_1, x_2, ..., x_V x1,x2,...,xV是词经过one-hot形式向量,有 V V V个数输入神经元,实际上就能处理 V V V个词的情况。中间层有 N N N维,这里 N < V N<V N<V,最后一层就是softmax层,维度也是 V V V,输出的是填入每个词的概率,期望是完形填空正确答案的词概率最大。训练好后,机器就会做完形填空了,是不是很厉害,最厉害的是得到的 W V × N W_{V\times N} WV×N,因为之前的词向量是one-hot形式,一个词的向量与该矩阵相乘,就是把这个矩阵的某一行给拿出来,然后这个向量也就是后来我们使用的embedding后的词向量。

3.1.2 基于Hierarchical Softmax的word2vec

是不是觉得这么做就已经不错了呀,是的,不过能问题也很明显呀,现在知道 V V V是词典的维度,那如果 V V V超级大呢,参数暴增,计算量大,还不好优化,这里借助了霍夫曼编码构造的霍夫曼树,构造Hierarchical Softmax

在这里插入图片描述
从图中可以看到,输出层叶子节点数还是 V V V,也就是词典的维度,但是从 n ( w 2 , 1 ) → w 2 n(w_2, 1) \rightarrow w_2 n(w2,1)w2的路径,不再需要计算所有的softmax,需要处理的是,在每个节点岔路口,决定是往左还是往右。如果往左是 y i = 1 y_i=1 yi=1,往右是 y i = 0 y_i=0 yi=0;基于logistic的二分类问题(这里规定1是负类,0是正类,有点绕,但是先不管)。

参照logistic回归来,可以知道,正类概率:
P ( + ) = 1 1 + e − θ x P(+) = \frac{1}{1+e^{-\theta x}} P(+)=1+eθx1
一次到叶子节点,需要走多步,并且每次都走对,才能到达目的地,则对于 n ( w 2 ) n(w_2) n(w2)来说,它走到 w 2 w_2 w2的需要走三步,概率是分别每一步概率的乘积,表示如下:
L ( w 2 ) = P ( − ∣ n ( w 2 , 1 ) ) × P ( − ∣ n ( w 2 , 2 ) ) × P ( + ∣ n ( w 2 , 3 ) ) L(w_2) = P(-|n(w_2, 1))\times P(-|n(w_2, 2))\times P(+|n(w_2, 3)) L(w2)=P(n(w2,1))×P(n(w2,2))×P(+n(w2,3))
转换一下
l ( w 2 ) = ∏ i = 1 3 P ( + ) ( 1 − y i ) × P ( − ) y i l(w_2)=\prod_{i=1}^{3}{P(+)^{(1-y_i)}\times P(-)^{y_i}} l(w2)=i=13P(+)(1yi)×P()yi

上面这个公式跟logistic的损失函数就很像了,继续往下对于所有的训练样本,都正确的概率为:
L ( w ) = ∏ i = 1 n l ( w i ) L(w)=\prod_{i=1}^{n}{l(w_i)} L(w)=i=1nl(wi)
这个就是最后要优化的目标函数,接下来定义一些符号,方便后续推导。输入的词为 w w w,其从输入层词向量求和平均后的霍夫曼树根节点词向量为 x w x_w xw, 从根节点到 w w w所在的叶子节点,包含的节点总数为 l w l_w lw, w w w在霍夫曼树中从根节点开始,经过的第 i i i个节点表示为 p i w p_i^w piw,对应的霍夫曼编码为 d i w ∈ { 0 , 1 } d_i^w \in \{0, 1\} diw{0,1},其中 i = 2 , 3 , . . . , l w i=2, 3, ..., l_w i=2,3,...,lw。而该节点对应的模型参数表示为 θ i w \theta_i^w θiw, 其中 i = 1 , 2 , 3 , . . . , l w − 1 i=1, 2, 3, ..., l_w-1 i=1,2,3,...,lw1,没有 i = l w i=l_w i=lw是因为模型参数仅仅针对于霍夫曼树的内部节点。

定义 w w w经过的霍夫曼树某一个节点 j j j的逻辑回归概率为 P ( d j w ∣ x w , θ j − 1 w ) P(d^w_j|x_w, \theta^w_{j-1}) P(djwxw,θj1w),其表达式为,并且

P ( d j w ∣ x w , θ j − 1 w ) = { σ ( θ j − 1 x w ) d j w = 0 , 1 − σ ( θ j − 1 x w ) d j w = 1. P(d^w_j|x_w, \theta^w_{j-1})=\begin{cases} \sigma(\theta_{j-1}x_w) &d_j^w=0,\\ 1-\sigma(\theta_{j-1}x_w)& d_j^w=1. \end{cases} P(djwxw,θj1w)={σ(θj1xw)1σ(θj1xw)djw=0,djw=1.

L ( w ) L(w) L(w)展开后求导:
l o g L ( w ) = l o g ⟮ ∏ i = 1 n l ( w i ) ⟯ = l o g ⟮ ∏ i = 1 n ∏ j = 2 l w σ ( θ j − 1 x w ) ( 1 − d j w ) × ( 1 − σ ( θ j − 1 x w ) ) d j w ⟯ = ∑ i = 1 n ∑ j = 2 l w l ( w , j ) \begin{aligned} logL(w) &= log\lgroup \prod_{i=1}^{n}{l(w_i)} \rgroup\\ &= log\lgroup\prod_{i=1}^{n}{\prod_{j=2}^{l_w}{\sigma(\theta_{j-1}x_w)^{(1-d_j^w)}\times (1-\sigma(\theta_{j-1}x_w))^{d_j^w}}}\rgroup \\ &=\sum_{i=1}^{n}{\sum_{j=2}^{l_w}{l(w,j)}} \end{aligned} logL(w)=logi=1nl(wi)=logi=1nj=2lwσ(θj1xw)(1djw)×(1σ(θj1xw))djw=i=1nj=2lwl(w,j)
其中 l ( w , j ) = σ ( θ j − 1 x w ) ( 1 − d j w ) + ( 1 − σ ( θ j − 1 x w ) ) d j w l(w,j) = \sigma(\theta_{j-1}x_w)^{(1-d_j^w)} + (1-\sigma(\theta_{j-1}x_w))^{d_j^w} l(w,j)=σ(θj1xw)(1djw)+(1σ(θj1xw))djw,对 l ( w , j ) l(w,j) l(w,j)求导有
∂ l ( w , j ) ∂ θ j − 1 = ⟮ 1 − d j w σ ( θ j − 1 x w ) − d j w 1 − σ ( θ j − 1 x w ) ⟯ ∂ σ ( θ j − 1 x w ) ∂ θ j − 1 = 1 − d j w − σ ( θ j − 1 x w ) + d j w σ ( θ j − 1 x w ) − d j w σ ( θ j − 1 x w ) σ ( θ j − 1 x w ) ( 1 − σ ( θ j − 1 x w ) ) σ ( θ j − 1 x w ) ( 1 − σ ( θ j − 1 x w ) ) x w = ⟮ 1 − d j w − σ ( θ j − 1 x w ) ⟯ x w \begin{aligned} \frac{\partial l(w,j)}{\partial \theta_{j-1}}&=\lgroup\frac{1-d_j^w}{\sigma(\theta_{j-1}x_w)} -\frac{d_j^w}{1-\sigma(\theta_{j-1}x_w)}\rgroup\frac{\partial \sigma(\theta_{j-1}x_w)}{\partial\theta_{j-1}} \\ &=\frac{1-d_j^w-\sigma(\theta_{j-1}x_w)+d_j^w \sigma(\theta_{j-1}x_w)-d_j^w \sigma(\theta_{j-1}x_w)}{\sigma(\theta_{j-1}x_w)(1-\sigma(\theta_{j-1}x_w))}\sigma(\theta_{j-1}x_w)(1-\sigma(\theta_{j-1}x_w))x_w \\ &=\lgroup1-d_j^w-\sigma(\theta_{j-1}x_w)\rgroup x_w \end{aligned} θj1l(w,j)=σ(θj1xw)1djw1σ(θj1xw)djwθj1σ(θj1xw)=σ(θj1xw)(1σ(θj1xw))1djwσ(θj1xw)+djwσ(θj1xw)djwσ(θj1xw)σ(θj1xw)(1σ(θj1xw))xw=1djwσ(θj1xw)xw
对于一个训练样本则有梯度为: ∑ j = 2 l w ⟮ 1 − d j w − σ ( θ j − 1 x w ) ⟯ x w \sum_{j=2}^{l_w}{\lgroup1-d_j^w-\sigma(\theta_{j-1}x_w)\rgroup x_w} j=2lw1djwσ(θj1xw)xw

同样的方法,可以得到 x w x_w xw的更新为: ∂ l ( w i ) ∂ x w = ∑ j = 2 l w ⟮ 1 − d j w − σ ( θ j − 1 x w ) ⟯ θ j − 1 \frac{\partial l(w_i)}{\partial x_w}=\sum_{j=2}^{l_w}{\lgroup1-d_j^w-\sigma(\theta_{j-1}x_w)\rgroup \theta_{j-1}} xwl(wi)=j=2lw1djwσ(θj1xw)θj1

后续的跟新过程这里就不详细介绍了,有兴趣的同学可以详细研究下这个博文word2vec原理

从推导的过程中,不难看出,从基本原理和推导过程,具有很高的一致性,logistic全面浸入word2vec,他们两个搞对象实锤。

3.2 Xgboost中的logistic和深度学习中的Sigmoid

如果说logistic跟word2vec是情侣的话,logistic跟XGboost以及logistic跟深度学习也就是一个曾经暧昧过。

3.2.1 XGboost中的logistic

Xgboost大家可能已经很熟悉了,基本原理的话就是多个弱模型的级联,后一模型学习的是前一模型的残差。对于Xgboost框架,其loss function可以是均方误差函数,也可以是极大似然函数。本文关注的是其跟logistic的关联性,这里将要介绍是采用极大似然函数,目标函数是logistic的情况。

Xgboost的推导过程,这里不详细介绍,感兴趣的同学可以看下这篇博文机器学习:XGBoost,这里直接把结论拿出来使用,最终目标函数的形式为:
L ~ ( t ) ( q ) = − 1 2 ∑ j = 1 T ( ∑ i ∈ I j g i ) 2 ∑ i ∈ I j h i + λ + γ T \tilde{L}^{(t)}(q)=-\frac{1}{2}\sum_{j=1}^{T}{\frac{(\sum_{i \in I_j}^{}{g_i})^2}{\sum_{i\in I_j }^{}{h_i+\lambda}}}+\gamma T L~(t)(q)=21j=1TiIjhi+λ(iIjgi)2+γT
其中, T T T为叶子节点的个数, I j I_j Ij为叶子节点 j j j中的样本集合, g i g_i gi为目标函数的一阶导, h i h_i hi为目标函数的二阶导, λ \lambda λ γ \gamma γ分别用来平滑叶子节点权重弄和控制惩罚模型复杂度的。

上面函数是用来评价一个既定树结构的好坏的,如果想要找到最优的树结构,则需要穷举数据结构并求每个数的得分,为了减少计算,一般都采用贪心算法进行后续求解。这里可以跟logistic挂钩的地方就是一阶导 g i g_i gi和二阶导 h i h_i hi可以是通过logistic函数来求得,并且使用logistic的时候,其使用的极大似然函数是凸函数,可以二阶泰勒来进行推导。所以,logistic估计只是曾经暗恋过XGboost而已。

3.2.2 深度学习中的Sigmoid

深度学习中,主要是激活函数,特别是分类时,最后通常会接一个softmax层。此处的单个sigmoid函数与logistic函数的形状是一致的,如果深度学习最后输出的softmax只有一个神经元,那么loss function定义为:
L ( w ) = ∏ i = 1 n F ( x i ) ( y i ) ( 1 − F ( x i ) ) ( 1 − y i ) L(w)=\prod_{i=1}^{n}{F(x_i)^{(y_i)}(1-F(x_i))^{(1-y_i)}} L(w)=i=1nF(xi)(yi)(1F(xi))(1yi)
其中 i = 1 , 2 , 3 , . . . , n i=1, 2, 3, ..., n i=1,2,3,...,n是样本数量,根上式求导,梯度下降,后续的梯度传递采用链式求导法则,求解只有一个输出神经元的神经网络是完全没有问题的。

问题是输出神经元的数目一般来说是有多个,对于多分类问题,在处理的时候,标签转换为 y i = ( y 1 i , y 2 i , . . . , y c i ) y_i=(y^i_1,y^i_2, ..., y_c^i) yi=(y1i,y2i,...,yci)向量, 其中
y i j = { 1 j = k , 0 j ≠ k . y_i^j=\begin{cases} 1 &j=k,\\ 0& j \neq k. \end{cases} yij={10j=k,j=k.
其中 k k k是样本的类别。

对于多个神经元输出的概率向量 y ^ i = ( y ^ 1 i , y ^ 2 i , . . . , y ^ C i ) \hat{y}_i=(\hat{y}^i_1,\hat{y}^i_2, ..., \hat{y}_C^i) y^i=(y^1i,y^2i,...,y^Ci), 取其发生的概率为:
p j = y j T y ^ j = ∑ i = 1 C y i j y ^ i j p_j=y_j^T\hat{y}_j=\sum_{i=1}^{C}{y^j_i\hat{y}_i^j} pj=yjTy^j=i=1Cyijy^ij
其中 C C C为类别数,对于所有样本都按照其观测的情况一起发生的概率为:
P = L ( w ) = ∏ i = 1 n p i = ∏ i = 1 n y i T y ^ i P =L(w)= \prod_{i=1}^{n}{p_i}=\prod_{i=1}^{n}{y_i^T\hat{y}_i} P=L(w)=i=1npi=i=1nyiTy^i
上述同样是极大似然的思想,对其去对数有:
l ( w ) = − l o g L ( w ) = − ∑ j = 1 n ∑ i = 1 C y i j l o g ( y ^ i j ) l(w) = -logL(w) = -\sum_{j=1}^{n}{\sum_{i=1}^{C}{}y_i^jlog(\hat{y}_i^j)} l(w)=logL(w)=j=1ni=1Cyijlog(y^ij)
对其求导,求梯度,按照链式求导法则反向传递,可求解深度学习网络。

简单的给出求导结果, 设 l = − ∑ i = 1 C y i l o g ( y ^ i ) l=-\sum_{i=1}^{C}{}y_ilog(\hat{y}_i) l=i=1Cyilog(y^i)

∂ l ∂ z j = ∂ l ∂ y ^ i ∂ y ^ i ∂ z j \frac{\partial l}{\partial z_j} =\frac{ \partial l}{\partial \hat{y}_i}\frac{\partial \hat{y}_i}{\partial z_j} zjl=y^ilzjy^i

∂ l ∂ y ^ i = − ∑ i = 1 C y i y ^ i \frac{ \partial l}{\partial \hat{y}_i}=-\sum_{i=1}^{C}{\frac{y_i}{\hat{y}_i}} y^il=i=1Cy^iyi

∂ y ^ i ∂ z j = { y ^ j ( 1 − y ^ j ) j = i , − y ^ i y ^ j j ≠ i . \frac{ \partial \hat{y}_i}{\partial z_j}=\begin{cases} \hat{y}_j(1-\hat{y}_j) &j=i,\\ -\hat{y}_i\hat{y}_j& j \neq i. \end{cases} zjy^i={y^j(1y^j)y^iy^jj=i,j=i.

∂ l ∂ z j = − y i y ^ i y ^ i ( 1 − y ^ i ) + ∑ i ≠ j y i y ^ i y ^ i y ^ j = y ^ i − y i \frac{\partial l}{\partial z_j} =-\frac{y_i}{\hat{y}_i}\hat{y}_i(1-\hat{y}_i)+\sum_{i \neq j}{\frac{y_i}{\hat{y}_i}\hat{y}_i\hat{y}_j}=\hat{y}_i-y_i zjl=y^iyiy^i(1y^i)+i=jy^iyiy^iy^j=y^iyi

深度学习中间的激活函数,目前来说有很多的可选项,包括Relu、tanh等;这些暂且不谈,按照本文上述过程来看,logistic跟深度学习渊源还是颇深的,至少曾经相互喜欢过。

4、总结

本文从传统机器学习线性模型出发,讲述了线性模型掰弯后变为logistic模型。在此基础上,通俗的说明了线性模型的求解过程、详细的描述了logistic回归的求解过程。从logistic函数及极大似然的角度,总结了具有雷同思想的改进版word2vec之Hierarchical Softmax、XGBoost中使用logistic目标函数,深度学习中使用sigmoid的情况,并对其相似之处做了详细的介绍;
本文所讲的内容并没有特别新颖之处,只是对已有算法做了一个简单的归纳总结,期望对学习或者已经了解这些算法的同学,在理解上面提供一些角度和切入点,对这些算法有更好的了解。
最后个人觉得,从拟人的角度上说,线性函数是狠心的掰弯自己,有了后续的成功,但是我们小伙伴们,可以对自己狠一点,但是不提倡掰弯哦!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值