Fork me on GitHub

白话深度学习

开篇名义-何为深度学习

如果你看到这本小册,说明你对深度学习有一定兴趣,想对其进行一定的了解,这就代表我们有了共同的话题。在这本小册中,就让我们一起学习,共同完成深度学习的入门。

深度学习的影响

虽然深度学习是最近几年才出现的名词,但它基于神经网络模型和基于数据统计的核心思想已经被研究了数百年了。自古以来,人们就希望能够从已知的数据或经验来对未来的情形或未知的状况进行预测。

近年来,深度学习作为人工智能领域的最重要的技术进展,在很多领域取得了瞩目的成果。例如大家耳熟能详别的由Google开发的AlphaGo人工智能围棋软件,在2017年战胜当时世界排名第一的选手柯洁;我们平时经常使用的Google翻译,科大讯飞的语音输入法,2018年风靡一时的微信小程序“猜画小歌”;抖音/快手中的美颜,滤镜;支付宝的人脸识别登录等等,这些应用的背后都是深度学习技术的应用,所以说,深度学习已经在不断改变我们的生活,为我们的学习生活带来便利。

深度学习不仅仅是在算法层面上的升级,更是一种解决问题方法的转变。在人工智能领域,深度学习之所以目前受到格外瞩目,主要是因为深度学习从原始的数据输入到最终的预测输出,中间不涉及人工的过多干涉,学习过程是自主完成的,这也是深度学习和机器学习的最大区别。

既然本小册是说深度学习,那我们拆开来说,那就是“深度”和“学习”。显然“深”和“浅”相对应的,这里的浅实际上对应的就是机器学习中的神经网络。那么什么是机器学习呢?

机器学习

按照周志华老师在机器学习书籍中的描述

机器学习正是这样的一门科学,它致力于研究如何通过计算的手段,利用经验来改善系统自身的性能,在计算机系统中“经验”通常以数据的形式存在,因此机器学习研究的主要内容是关于计算机从数据中产生“模型”的算法,即“学习算法”。有了学习算法,我们把经验数据提供给它,他就能基于这些数据产生模型,在面对新的情况时,模型会给我们提供相应的判断。

也就是说,机器学习就是学习算法的过程,并且是基于数据的学习过程

那么什么是学习呢?按照图灵奖获得者赫伯特.西蒙的说法:“如果一个系统,能够通过执行某个过程,就此改进了它的性能,那么这个过程就是学习”。从这句话可以看出,学习的目标是改进性能,也就是要学会一些东西,而不仅仅是学习的过程,如果学了之后没学会,那么这个过程是不算做学习的。

“机器学习”联合起来就是基于数据和经验知识使得系统的性能得到提升和改善。

说起来不是很好理解,那举一个我们人类学习的例子,如上图所示,一个小孩子,刚出生的时候对外面的世界是一无所知的,当他第一次看到“花”这种植物的时候,他不知道这种植物叫做“花”,但是小孩子的父母或周围的人会告诉他这叫做“花”,伴随着小孩子的成长,他见到了很多次长成“花”这种样子的植物,他都被告知这是“花”,因此,在之后他看到一个从来没见过的但是长得很像“花”的植物,不出意外,他会得出这种植物也是“花”的判断。

上述就是作为人类来说的一种学习行为,对于机器学习来说,同样是这种原理,不同的是,“机器学习”中的“机器”一般情况下指代的是计算机,计算机接收的是数据,当计算机重复多次的接收这种数据,计算机也能给出它的判断,我们就认为计算机学会了某种东西,也就是“机器学习”。

“机器学习”属于统计学习的范畴,相信对“机器学习”有所了解的读者应该都看过一本叫做《统计学习方法》的读物,作者李航博士开篇曾言,统计学习的对象是数据,他从数据出发,提取数据的特征,抽象出数据的模型,发现数据中的知识,又回到对数据的分析预测中。和周志华老师对“机器学习”的定义基本上一致。

通常情况下“机器学习”是人们利用经验知识,将原始的数据进行特征抽取,然后根据某些衡量标准对这些特征进行分类。正如一句谚语“早霞不出门,晚霞行千里”所说,我们根据当天早晨的是否会出现早霞这一特征,来对今天的天气情况进行预测和判断,这是人们根据多年对天气的观察总结出来的经验,而“早霞”这一现象便是人们提取的特征,“今天是否下雨”则是人们想要得到的结果,人们根据特征对这一结果进行判断。此外还有“燕子低飞蛇过道,蚂蚁搬家蛤蟆叫,大雨不久要来到”,“雨前有风雨不久,雨后无风雨不停”等等这些谚语,实际上本人认为,可以理解成广义上的“机器学习”的过程,只不过,这些特征都是人们根据不断的经验总结出来的,而不是基于一定的数学方法推算出来的,而我们所说的“机器学习”,一般是狭义上的,也就是,人们根据一定的数学方法对数据的特征进行抽取,并根据某些指标对特征进行分类判断。很显然,不论是广义的还是狭义的,最后的预测结果和特征抽取的好坏高度相关,也就是说,如果特征选的不好,那么预测的结果的有可能是不可信的。因此,早期的机器学习研究人员,会用大部分的时间来设计提取更加合适的特征,这就是为什么传统机器学习有时候也会称为特征工程

何为深度学习

既然传统学习需要使用大量的时间设计算法用来进行特征的提取,那么我们不禁会想:有没有什么方法能够使算法进行特征的自动选择,将人们从特征工程中解脱出来呢?答案是肯定的,这就是本小册要说的深度学习。

伴随着多年以来对机器学习的深入研究,机器学习研究人员发现,对于人工神经网络(Artificial Neural Network-ANN)相比于决策树,贝叶斯这些机器学习算法,不需要人工设计特征化,ANN能够自动完成特征的提取,并且得到的效果还很好,由此,ANN的学习迎来了高潮。

如图所示便是人工神经网络机器学习算法的示意图,之所以取名如此,是因为人工神经网络机器学习算法模拟的正是人类对于信息处理的生物学过程,并将这一过程进行抽象,得到的一种机器学习模型。联想我们的日常生活,我们是如何对外部信息作出反馈,如下图所示,你的背后有个人叫你的名字,你接收到的是声音信息,大脑会对接收的声音进行分析,并确定的确是在叫你,并且根据声音的特征来判断声音来自于你的背后,你的大脑会将转身并且应答的命令下达,并控制你的身体作出反馈。

对于人工神经网络,输入数据包含了数据的所有特征,输出为预测结果,特征的选取通过神经网络中的隐藏层通过算法设计自主实现,不再需要人为的进行特征提取。对于人工神经网络的具体实现算法,会在后续章节详细说明。

任何一个事物都是具有两面性的,人工神经网络也不例外。人工神经网络始终存在着一个问题,那就是算法模型缺失可解释性,因为人工神经网络的输入的是数据的全部特征,这些特征存在于人工神经网络模型的数据空间内,人们是很难对输入数据中那些特征对最终的输出影响更大作出明确解释,为什么这些特征对应着这个输出,而其他的输入数据也会对应这个输出呢?这也就是所说的黑盒问题,人们不知道神经网络内部参数表示的具体意义是什么,只知道这个模型是有效的,但是很难去解释,这带来的问题就是,如果想让人工神经网络表现的更好一些,人们不知道从哪些数据特征上下手,只能进行一些人工神经网络模型参数的调节,例如权重初始化的调节,学习率的调节,优化方法的调整等等,但是这些参数的调整并没有一个明确指导算法,因此这同样给从业者带来了很大的麻烦。既然这样,那么为什么还要用它呢?这是因为,不论是对研究员还是对于我们日常处理事务,我们首先应该考虑解决“有没有”的问题,然后再去考虑如何才能变得更好的问题,人工神经网络几乎能完成任何数据的表达,这就是它的巨大优势。

随着互联网的发展,各种传感器设备和存储设备的造价降低,数据变得越来越多,目前我们已经进入了大数据时代,单靠人工神经网络算法已经很难实现对当前高维度及海量数据的表达。此外,有赖于硬件计算能力的大幅度提升,这个时候人们产生了两个思路以实现对这些高纬度及海量数据的表述:一个是增大神经网络的宽度,也就是增加神经网络隐藏层节点的数量;另一个思路是增加神经网络的深度,也就是本小册所说的深度学习。就如上图所示,保持隐藏层节点数量相等,左图为增大神经网络的宽度,而右图则是选择增加网络的深度。到底哪种方案更好呢?微软研究院的相关研究人员在相关研究论文中给出了研究答案,如下表所示

该研究主要使用的是语音识别任务,图标左侧表示的是神经网络的层数和每层的节点数,DBN表示深度信念网络,BP表示误差反向传播参数更新机制,LBP表示分层反向传播参数更新机制,以单词错误率进行衡量指标,在左侧图标可以看到,每层的神经元数量不变,增加网络的层数,使网络更深,单词错误率不断降低;右侧表示的是始终保持单层网络,增加该层的神经元数量,可以看到,当神经元数量相同时,更深的网络表达能力更好,这也就是为什么进行深度学习,而不是进行“宽度学习”。上述的DBN,BP,LBP等,读者在此不用深究,只需要需要比较图表中红色矩形框区域。

深度学习的特点

在说深度学习的特点之前,先了解一下何为人工智能,按照维基百科的定义,人工智能是指由人制造出来的机器所表现出来的智能。通常人工智能是指通过普通电脑程式来呈现人类智能的技术。该词也指出研究这样的智能系统是否能够实现,以及如何实现。人工智能的研究领域很广,包机器学习,计算机视觉,知识图谱,自然语言处理等等,正如下图所示,并且在各个研究领域之间并不是完全独立的,不同的研究领域之间存在着一定的交叉。

根据上文中对机器学习和深度学习的描述以及人工智能的定义我们知道,机器学习就是学习算法的过程,是人们利用经验知识提高系统性能的过程。机器学习是人工智能领域的一个分支,也可以看做是一种技术手段。而深度学习可以看成是实现机器学习的一种技术手段。深度学习由很多简单函数复合而成,当这些符合函数足够多的时候,深度学习模型就可以表达非常复杂的变换,以实现对高纬度及海量数据的处理。

深度学习模型的一个重要特点,那就是端到端的训练,不再是将单独调试的部分拼接起来组成一个系统,而是将整个系统搭建好之后一起训练。也就是说,输入的是我们的原始数据,经过深度学习模型,直接得到最终我们想要的结果,中间过程是未知的。

比如在对于图像识别任务,输入一张图片,直接输出这张图片对应的类别;对于语音识别任务,输入一段语音,直接输出这段语音中对应的文字内容。正如下图所示。

就如同上文中对人工神经网络的描述,深度学习就是一个黑盒系统,虽然性能很好,但是我们不能明确的说出为什么,也就是“知其然,不知其所以然”。实际上这是因为深度学习模型的高度非线性造成的,随着深度模型深度的增加,模型内包含的参数越来越多,模型表达的非线性复杂度越来越高,已然超出了人能够推理的范围。

随着深度学习模型复杂度的增高,我们就需要更大量的数据来训练深度学习模型,很显然,如果模型中包含100个参数,并且使用1000个数据样本可以使模型训练的很好,但是当模型的参数增加到百万级,甚至亿级呢?显然1000个样本是无能为力的,有赖于目前的大数据时代,深度学习所表现出来的“学习”性,正是伴随着大量的数据体现出来的,深度学习依赖的神经网络随着数据量的增加而变得越来越好,这就是深度学习的另一个特点,深度学习需要有大量的样本数据用以达到更好的效果。

%asset_img params_cnn.png 五种深度学习模型参数量%

基于深度学习端到端训练,以及大量数据样本支撑的特点,我们在使用深度学习算法模型的时候,首先要准备充足的样本来保证深度学习的进行,之后要设计合适深度学习算法模型结构以实现端到端的训练。

图中所示为随着数据规模的增加,机器学习和深度学习的性能表现,可以看出,如果数据规模较小的,机器学习相比于深度学习的性能是更好的,因为对于机器学习来说,是基于统计特征进行计算实现,而深度学习是通过数据来不断调整优化内部参数实现,小规模的数据无法使深度学习的内部参数得到很好的更新;但是随着数据规模的增加,深度学习的性能明显优于机器学习,这就是因为足够的数据为深度学习的参数优化提供了动力,因此其性能明显优越于机器学习。

总结

本章节学习了机器学习和深度学习的概念和深度学习的特点。机器学习研究的是如何使用经验知识提高系统的性能,它是人工智能领域的一个分支,同时也是一种实现人工智能技术手段;深度学习则是以机器学习中的人工神经网络为基础,通过增加人工神经网络的层数,提高模型的表达能力和性能,深度学习可以看做是一种机器学习的技术手段。深度学习需要相比机器学习更大的数据规模以实现更好的模型性能,此外,深度学习的一个巨大优势是不需要过多的人工特征干预,可以实现端到端训练。

以上是关于机器学习和深度学习的一些概念性描述,希望读者能对相关概念有一些初步认识,其中涉及到的一些名词,如人工神经网络,BP等会再后续中详细介绍。

思考

深度学习中的“深度”是说的神经网络的层数,为什么说“深度”相比传统神经网络表达能力更强?

餐前小食—常用术语与数学基础

上一个章节,主要是从概念上对机器学习和深度学习进行了一些描述,本章开始,我们便要正式进入正题,主要是在机器学习中常用的术语和一些我们需要的数学基础,请放心,只要你读过高中,应该就没问题。

常用术语

  • 数据集

    机器学习或者深度学习都属于统计学的范畴,而统计是在数据的基础上进行的。任何事物都可以当做被统计的对象,例如一堆西瓜,一群人,一片树林都可以看做统计对象,在统计学中,称待统计对象中的每个个体成为样本,个体的数量称为样本量

    统计是基于多个样本而言的,对单个样本,是无法进行统计的,正如“统计”这个词所言,可以理解成“统计”是总体的计算,因此,待统计的对象必须要满足一定的数量。

    所有的数据统称为数据集,数据集中存储的是原始数据样本的特征,例如对于原始是一堆西瓜的数据,样本集中存储的是每个西瓜的颜色,大小,重量等特征;对于原始数据是一群人的数据,样本集中存储的是每个人的身高,体重,年龄,性别等特征。

最简单的机器学习模型—线性模型

深度学习的起源—神经网络

让模型自我进化—误差反向传播

弥补线性模型的缺陷—激活函数

让模型更鲁棒—正则化方法

参数太多怎么办—卷积神经网络

让计算机认识一只猫—图像分类任务

让计算机找到这只猫—目标检测任务

明天股票会跌吗—隐马尔科夫模型

具有记忆功能的网络—循环神经网络

想要更好的记忆力—循环神经网络变体LSTM/GRU

序列到序列的预测—Seq2Seq结构

想要预测的更准—注意力机制

训练更稳定一些—数据规范化

模型的更新准则—优化算法

数据何处来何处去—深度学习模型的搭建

一个小例子—cifar10数据集图像分类

恭喜入门,请继续前行

-------------本文结束知识分享,方便你我-------------
0%