机器学习 学习记录(三)

来源:互联网 发布:centos 6.5 32位下载 编辑:程序博客网 时间:2024/06/07 08:07

本篇博客将着重介绍深度学习的相关知识
上篇,我们提到了逻辑回归的方法,这种方法用来处理分类问题,从上篇博客中,我们也知道了逻辑回归的一些局限性。有的时候类别并不能直接被一条直线分开,这个时候就需要我们采用特征变换的方法来将所用的特征变换到可以被直线分开的状态,。通常这种特征变换的方法比较难找,不容易得到,所以我们就思考有没有一种简单有效的方法来避开特征变换。事实上是有的。这种方法就是我们所说的深度学习。在介绍深度学习之前,我们看一下上篇博客提到的下列结构

这里写图片描述

上面图片描述了一种简单的神经元结构。在这张图上我们能看到,一个神经元应该包括输入(Input),权重(Weight),求和(Summation),激活函数(Sigmoid)。可能会问,那深度学习是什么呢?下面就将解释这个概念。上图中的这种其实就是简单的二分类所用到的结构,那如果我们多用几个这样的神经元是不是就可以处理一些更复杂的问题呢。答案是肯定的。请看下面的结构

引用块内容
图片引用自李宏毅(台湾大学)机器学习

通过上面的的结构,我们可以将一些无法用线性分类的数据进行坐标变换,从而实现数据比较规整的分布,进行线性分类。比如下面的数据

引用块内容
图片引用自知乎用户 王小龙 在 《如何简单形象又有趣地讲解神经网络是什么?》问题下的回答

这副图中的图片,显然我们无法找到一条直线简单有效地将图中数据分成两类。虽说如此,但我们可以通过坐标变换的方式,将图中的数据变成如下的分布状态

引用块内容
图片引用自知乎用户 王小龙 在 《如何简单形象又有趣地讲解神经网络是什么?》
其实这里的坐标变换你如果有经验的话可以利用自己的经验将数据直接变换开来,但是如果没有经验,那么神经网络或许可以帮你的忙。所以到这里我们就清楚了,其实神经网络做的就是坐标变换的事情,只不过利用神经网络,我们就不用在意找到坐标变换方法的细节。
通过上面的介绍,我们对神经网络就有了大致了解。接下来我们就将介绍一种神经网络的结构:全相连结构(Fully Connected Forward Network)。
引用块内容

我们来总结以下上面图中的三个要点:
1.神经网络其实是分层的(输入层Input Layer–>输出层Output Layer);
2.全相连结构中上一层的一个输出连上了下一层的所有神经元;
3.在输入层和输出层之间可能还会有很多层,我们将输入层和输出层之间的这些层称为隐藏层(Hidden Layer)。

那什么是深度学习呢?

深度学习其实就是指一个神经网络中有很多个隐藏层

这里写图片描述
DL图
在深度学习的方法里,我们不需要去考虑额外的东西,我们最大的关注点就是神经网络的具体结构。对于不同的问题,不同的神经网络结构会带来不一样的效果。
当隐藏层够多的时候,其空间变换的效果相对来讲就会更好。下面以一个实际的小栗子,具体来阐述以下,Deep Learning的操作过程。

手写数字识别:
1.Function Set- - - -Decide which net-structure to be used

这里写图片描述

2.Goodness of a function- - - - Cross-entropy

这里写图片描述

3.Find the best function - - - -Gradient Descent
求出Lwi,利用梯度递减法不断更新参数,直至找到最合适的一组wi

你可能会问,这么复杂的导数我怎么求啊?

不用担心,各位大牛已经帮我们做完了。现在市面上有很多很多的框架帮我们解决求导的问题,比较著名的有Google的Tensorflow(它的诞生就是为了深度学习服务的), LISA lab的Theano(它的诞生不是剑指深度学习)等。所以你可以不必担心求导的细节。即使如此,下面我们也将会留出一定篇幅来阐述,神经网络中求导是如何运算的。
假设yiy^i所对应的y^ilnyili,于是最终的

L(w1,w2,w3,,wk)=i=1ny^ilnyi=i=1nli

其中li=y^ilnyi
假设
li=l(wi1,wi2,,wim)

引用块内容

为了求得lw1,利用链式求导法则

lw1=lzzw1

其中zw1是显而易见的,它等于x1
因此
lw1=lzx1

于是下面的关键就是求解lz
lz=lσ(z)dσ(z)dz

其中dσ(z)dz是显而易见的。
继续运用链式求导法则:

lσ(z)=lzzσ(z)+lz′′z′′σ(z)+

=lzw3+lz′′w4+

于是我们能够得到:
lz=dσ(z)z(lzw3+lz′′w4+)

这样我们就得到前一层的z偏导与后一层z偏导之间的关系,我们把它表示成下面形式

引用块内容
图片引用自李宏毅(台湾大学)机器学习

前一层的偏导由后一层决定,后一层偏导由之后层的偏导决定,最终推到输出层,而输出层的偏导是显然的,于是就能够求出l(w1,w2,,wk)关于任何一个参数的偏导了。
求出偏导之后要做的就是利用梯度递减法更新参数。
到这里就把深度学习的梯度递减法讲完了

原创粉丝点击