我如何理解深度学习?

即使你是搞建模的,假如没搞过神经网络,可能也不清楚,甚至你做过神经网络工程,但如果仅仅是调用一下算法库,也可能是一知半解。

Alphgo在围棋上战胜李世石属于里程碑的时间,因此,深度学习也被炒得很热,但什么叫深度学习,为什么是深度,其实大多不知道,如果解释成多层神经网络估计也没多少人明白。

即使你是搞建模的,假如没搞过神经网络,可能也不清楚,甚至你做过神经网络工程,但如果仅仅是调用一下算法库,也可能是一知半解。

当然,大数据时代,我们也许会用就可以了,特别是对于企业来讲,不用知道其原理。但深度学习作为一个方向性的东西,笔者总是想探究一些其本质的东西,特别是希望能理解深度学习理解世界的方式,也许其对于成长有所帮助。

虽然以前网上找过一些深度学习的资料,但一直启发有限,直到最近读到台湾大学李宏毅教授的一个深度学习的课件,还有很多知乎大神的解释,才有更多的领悟,今天,就顺着大师的脉络,以浅显的方式去认知深度学习。

这是篇普及基本知识的文章,有很多的图片辅助理解,笔者也尽量简单的描述,没有晦涩的公式,权当作为自己的读书笔记吧。

认识机器学习

机器学习=寻找一个合适函数f,就是这么简单,这就是席卷全球的人工智能做的事情,下面一张图已经道尽了一切。

我如何理解深度学习?

但寻找f这个函数是如此困难,比如下面我要用图像识别一只猫或狗:

我要做什么呢?

首先,寻找一堆的函数,比如f1,f2……。

其次,找到一堆训练用的猫狗图片,将图片输入到f中,获得对应的结果,比如,输入一只猫,函数告诉我这是一只猫,输入一只狗,函数告诉我是一只狗,否则,就换。

最后,选择识别正确的函数f作为结果,也就是我们通常所说的算法,或称模型,或称Alphgo,或者,这个f,就是所谓的人工智能

下图示例了该过程:

我如何理解深度学习?

再次,要用前面正确的f,输入一些新的猫的图片,看看这个f(即模型)靠不靠谱,这个过程也叫测试过程,即下图所示的Testing,而上图的过程,叫训练过程Training,大家听到阿尔法狗每天都要自我对局几千万盘,这个过程就叫Training。

我如何理解深度学习?

这个是机器学习的基础知识,理解深度学习,这个是出发点,我想大多人都懂了,不懂,肯定是没认真看图解字。

人的大脑。

人的大脑有几十亿个被称作neuron(神经细胞、神经元)的微小细胞,这些神经元相互之间通过无数连接线组成,如果一个神经细胞在一段时间内受到高频率的刺激,则它和输入信号的神经细胞之间的连接强度就会按某种过程改变,使得该神经细胞下一次受到激励时更容易兴奋。

我如何理解深度学习?

这个就是神经网络,人的认知模型,那么如何模拟神经网路,也就是如何模拟人的认知过程,也叫人工神经网络。

那么一个神经元neuron如何模拟?

下图是一个人工neuron的示意:

我如何理解深度学习?

a指各种输入信息,比如图像信息的输入,w指权重,就是神经连接线被刺激后的大小,b指偏移量,最后,这些信息通过加权形成输入的z,z作为外部刺激的一种表达形式,统一通过一个激活函数σ的转换,给定最终的输出结果a。

这就是一个人工模拟的神经元过程,读懂它,再给你一个案例。

我如何理解深度学习?

神经网络有太多的neuron,因此,人工神经是有很多人工neuron相互连接构成的,每一个neuron有不同的权重,偏移或者激活函数,如下图:

我如何理解深度学习?

前向全连接神经网络是一种经常采用的人工神经网络,如下图:

我如何理解深度学习?

再给一个示例,坚持看下去:

我如何理解深度学习?

深度学习。

我们可以看到上面的神经网络有很多层,那么抽象一下,下面这种神经网络类型就叫做深度学习。

我如何理解深度学习?

深度学习是指有多个隐藏层的人工神经网络,我们终于揭开了深度学习这个马甲,从数学角度来讲,它没有什么好神秘的。

一个应用例子。

输入一个手写字,判定属于哪个数字(假如限定0-9),大家似曾相识吧。

我如何理解深度学习?
图片是256*256像素,数字化后,1代表有色,0代表无色,这样,输入就变成1个256维变量,输出每个位置数据表达的是属于该位置数据的置信度,比如输出分类器自上而下分别代表1,2,3,4,5,..0,输出的数据代表的是这个数字的置信度,这里输出中2的位置的置信度最大是0.7,则判定这张图片分类成2。

图像识别也是这么来的,只不过输出的分类除了数字,可能还包括动物,比如猫,狗,用的识别工具就是人工神经网络,下图示例了识别过程,核心就是,寻找一张合适的神经网络。

我如何理解深度学习?

那么,到底如何实现呢?

首先,准备一堆的训练图片和标识:

我如何理解深度学习?

其次,训练目标如下图所示,要求在输入图片1的时候,对应的y1要最大,输入图片2的时候,对应的y2要最大。

我如何理解深度学习?

再次,要设置一个损失函数L,标识训练的好坏,也就是训练识别的结果跟实际尽量匹配,假如输入的图片是1,则最后y1最好是1,而其他y2-y10最好全是0,这样损失函数L就是最小,即0,如下图示例:

我如何理解深度学习?

而如何让L最小呢,这是神经网络最核心的东西,大家前面已经看到,实际上这个网络的未知数有权重w,偏移量b(常量),我们一般叫它神经网络的参数θ,这是一个未知数求解的问题。

如何选择θ,让L最小,需要进行求解。

不做非常艰难的公式推导,我只给出结果,由于L是w的函数,假设向量W是两维w1,w2,则函数图形化后如下:

我如何理解深度学习?

我们的目的就是去寻找这张图L的最低点,一旦最低点确定,w1,w2也确定了,那整个神经网络就确定了,一般采用梯度下降方法,就是对W求导,能够明确参数增减的方向,如果你微积分还记得的话。

寻找的办法一般步骤如下:

首先,初始化W,也就是w1,w2,就是随便找一组初始化参数。

其次,计算L对W的导数(也就是梯度),判断W参数应该的走向,然后重置W:

我如何理解深度学习?
最后,当选择的W使得L最小值变化不大时,就终止,表示此时选择的参数可以满意了。

就好比你在玩帝国时代,需要探索地图的最低点:

我如何理解深度学习?

由于神经网络有很多层次,很多激活函数,因此这个求解的方法非常复杂,其中反向传播算法(Backpropagation)是最通用的一种求解方法。

好了,深度学习原理部分基本讲完了,当然,这仅仅是术的追求,笔者也只是知道皮毛,那这类深度学习对于我们理解这个世界到底有什么帮助?

首先,深度学习的神经网络这么一层层构建到底在干什么?

从物理理解的角度讲,通过现有的不同物质的组合形成新物质,给你举个例子,碳和氧原子通过组合,可以形成三个新物质,见下图:

我如何理解深度学习?

形成的新物质之间又可以相互组合,形成更为复杂的新物质,如此循环,从而形成我们这个世界,这是其物理意义。

从数学的视角,其实就是在做一层层的空间变换,让原来无法区隔的空间变成可以区分,你要理解,这个世界绝对不是线性的。

空间变换有五种形式,回忆一下前面讲的。

我如何理解深度学习?

其中:

aw:做的空间变换是升维/降维、放大/缩小及旋转;

b:做的空间变换是平移;

σ:实现弯曲

比如一维空间,以分类为例,当要分类正数、负数、零,三类的时候,一维空间的直线可以找到两个超平面(比当前空间低一维的子空间。当前空间是直线的话,超平面就是点)分割这三类。但面对像分类奇数和偶数无法找到可以区分它们的点的时候,我们借助 x % 2(取余)的转变,把x变换到另一个空间下来比较,从而分割。我如何理解深度学习?对于二维空间,平面的四个象限也是线性可分。但下图的红蓝两条线就无法找到一超平面去分割:

我如何理解深度学习?

神经网络的解决方法依旧是转换到另外一个空间下,用的是所说的5种空间变换操作。比如下图就是经过放大、平移、旋转、扭曲原二维空间后,在三维空间下就可以成功找到一个超平面分割红蓝两线:

我如何理解深度学习?

上面是一层神经网络可以做到的,设想网络拥有很多层时,对原始输入空间的“扭曲力”会大幅增加,如下图,最终我们可以轻松找到一个超平面分割空间。

我如何理解深度学习?

所谓监督学习就是给予神经网络网络大量的训练例子,让网络从训练例子中学会如何变换空间。每一层的权重W就控制着如何变换空间,我们最终需要的也就是训练好的神经网络的所有层的权重矩阵。

这就是深度学习的变换空间本质。

从物质组成的角度讲,前面由碳氧原子通过不同组合形成若干分子的例子。从分子层面继续迭代这种组合思想,可以形成DNA,细胞,组织,器官,最终可以形成一个完整的人。继续迭代还会有家庭,公司,国家等。这种现象在身边随处可见。并且原子的内部结构与太阳系又惊人的相似。不同层级之间都是以类似的几种规则再不断形成新物质。你也可能听过分形学这三个字。可通过观看从1米到150亿光年来感受自然界这种层级现象的普遍性。

我如何理解深度学习?

图像识别中的人脸识别,只是一种应用,图像由像素组成,像素可以形成菱角,棱角可以形成五官,五官可以形成不同的人脸,每一层代表不同的物质层面 (如分子层)。而每层的W存储着如何组合上一层的物质从而形成新物质。

我如何理解深度学习?我如何理解深度学习?

最后,再看一个空间变换后的案例,左边的红绿是原始空间,右侧是转化后的高纬空间的扭曲图,这个时候,所有的红绿点都被扭曲到了一侧,惊奇的发现可以线性可分了:

我如何理解深度学习?

那么,再问一个深度的问题,当然这个是术的问题,为什么深度学习是深度,而不是宽度?比如:

我如何理解深度学习?

有以下论文用实验数据证明了为什么深度学习网络应该是高个子,而不是矮胖子:

我如何理解深度学习?

为什么要分那么多层,除了激活函数更多,空间变换能力更强,还有啥奥妙?

因为,如果层数太少,可能样本也太少,如下图:

我如何理解深度学习?我如何理解深度学习?

分了层后,每一层会有更多的样本,如下图:

我如何理解深度学习?

最后,如何系统的进行深度学习的使用,下面一张图已经概括了,TensorFlow+theano+keras:

我如何理解深度学习?

深度学习的介绍就到这里了,希望你能看到这里,遗憾的是笔者也仅仅是纸上谈兵,没有实操的经验,看得再多,也没有实际做过一个深度学习项目来得实在。

阿尔法狗采用的是卷积神经网络,如果要深入学习,可以看看其实现过程,有很多的技巧,当然,这要付出很大的代价,但道理是相通的。

希望于你有所启发。

本文为专栏文章,来自:与数据同行,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/38176.html 。

(0)
与数据同行的头像与数据同行专栏
上一篇 2016-11-09 04:59
下一篇 2016-11-17 06:05

相关文章

关注我们
关注我们
分享本页
返回顶部