“深度学习”一词,最早于2006~2007年,由GeoffreyHinton在《Science》上发表的文章开始被提出并逐渐兴起。深度学习是基于机器学习技术的,其层次结构比机器学习更多、更复杂,算法也有了长足的发展。
对算法的汇总,也是根据常见的机器学习算法和深度学习算法进行分类的,算法基础分类:机器学习MachineLearning。深度学习,DeepLearning。
根据监督学习和非监督学习的不同,机器学习算法分为两大类。下面是机器学习算法的分类层次:
从分类中,我们可以看到神经网络,它也是深度学习的基础。深度学习是建立在机器学习之上的,不同之处是,神经网络的层次结构比机器学习要复杂和多。
它是受生物学领域神经网络的启发,使今天的机器学习、深度学习都具有神经网络的结构。
就像深度学习是在机器学习的基础上发展起来的,它的算法分类也可以分为监督学习和非监督学习两种。
下面以大白话的方式详细介绍深度学习算法:
资料来源:AI|深度学习|算法工程师必备的深度学习资料。
作者简介:华校专,曾任阿里巴巴资深算法工程师,智易科技首席算法研究员,现任腾讯高级研究员,Python大战机器学习作者。
深度学习:计算机从经验中学习,并用层次概念(concept)理解世界。
·从经验中学习:避免人工指定计算机学习所需要的全部知识。
层次概念:计算机通过从简单的概念构造、学习较复杂的概念。这个图表是一种深度层次,所以我们称之为“深度学习”,如果你要绘制一张图,显示这些概念之间的关系。
1.电脑需要获得许多"常识",以人工智能的方式行事,例如:叶子绿了,乒乓球比足球小。
这种“常识”大多是主观和直觉的,很难用形式来表达。有一个问题:如何把这些“常识”传递给电脑。
向计算机传递知识有两种方法:
KB(knowledgebase):通过对真实世界知识进行形式语言的硬编码,计算机利用逻辑推理自动推理这些硬编码的知识。
Cyc是最著名的知识库项目,但是它们中没有一个很大的成功。
机器学习:AI系统从原始数据中提取图案,并做出看上去"聪明"的决定。
例如:使用贝叶斯算法将普通邮件和垃圾邮件分开。
2.传统机器学习算法非常依赖于数据的表达(representation)
例如:在患者诊断方面,AI系统并不直接与患者接触,而是通过医生向AI系统提供有关患者的信息(例如身高、体重等)。这种信息被称为特征(feature)。
在三个层次上,传统机器学习算法严重依赖于数据的表达方式:
什么样的特征是不能用传统的机器学习算法。例如:是直接给身高和体重,还是给出肥胖系数?
也不能用传统的机器学习算法判断这些特征。例如:特性是否离散化?
一些传统机器学习算法不能学习的信息。例如:给一张MRI图像,由于每个像素点与诊断结果的相关性很小,传统的机器学习算法不能学习。
3.依赖于数据的这种表达方式是计算机科学乃至生活中的普遍现象。
例如:生活中的人很容易对阿拉伯数字进行算术运算,但对罗马数字进行算术运算则要花费更多的时间。
在下面的图形线性分类中:左图为笛卡尔坐标系,右边为极坐标系。
数据的不同表示(坐标系的不同)会导致左图难以线性分类,右图更容易进行线性分类。
4.在传统的机器学习应用中,一组特殊的、有效的特征常常被设计成一组专门的、有效的特征集,然后收集这些特征描述下的数据。例如:在语音识别中,一个有效的特征是说话人的声音的声音(vocaltract)。
但在大部分任务中,很难给出有效的特征。例如:从图画中检查汽车的任务,可以用是否有车轮作为特征。但基于像素点的精确描述车轮是困难的。由于阴影、光照条件、观察角度等原因,收集的车轮像素会很复杂。
5.特征设计的一种解决方法是:通过机器学习发现特征。也就是:不仅要学习representation到输出的映射(即模型),也要了解representation本身。它被称为表达学习(reprensentationlearning)。
优势在于:
与人工设计的特征相比,性能要好得多。
让AI系统以最少的人工干预迅速适应新的任务。
它能在几分钟内就学会一系列好的特性,对于复杂的任务,你可以在几小时到几个月内就学会一套好的特性。
对于复杂任务,特征设计需要耗费大量的人力和时间。
1.在设计特征或学习特征时,一个好的指导方针是:分离那些能够解释数据的变化因素。
常常,这些因素并不是直接观测到的量,但却影响着直接观测到的量。例如:在语音识别中,变化因子是:说话人的年龄、性别、口音、说话字等等。车辆图像识别中,变化因素是:汽车的位置、汽车的颜色、观察角度等等。
2.分离变化因素时存在两个问题:
大部分因素只影响数据的某一部分,所以有必要对影响数据的因素进行分解,并提取我们关心的因素。
可能很难从原始数据中提取高层次的、抽象的特征,这使得提取这个特征与解决原始问题一样困难。
例如:说话者的口音只能用接近人类的抽象概念来表达。
3.深度学习所采用的解决方法是:高级特征由低层次特征来表示。也就是:把简单概念(concept)结合起来构造复杂的概念。
如果直接学习从一组像素到对象的映射是非常困难的,如下所示的图片识别任务。通过把需要的复杂映射分解为一系列嵌套的简单映射,深度学习解决了这个问题。每种映射都由模型的不同层描述:
Visual层是作为输入,因为它包含可以观察的变量。
第1层隐含层:描述边(edge)的概念。边缘识别很容易通过对比相邻像素的亮度来识别。
第2层隐含层:描述角度(空间)和轮廓(contour)的概念。边集识别使角度更易于识别。
第3层隐含层:用来描述一个特定物体的整体(例如:人物)(一个物体由一组特定的角/轮廓构成)。利用轮廓和角度特征集的识别,更易于对目标整体进行识别。
4.多层感知机(multilayerperceptron:MLP)是深度学习的一个典型例子。
一种多层感知器是一种功能:它将一组输入值映射为一个输出值,该函数由许多简单的函数组成。将每个函数都视为一个新的输入representation。
5.两种深度学习视角:
一种观点是:深度学习是一种学习数据正确的representaion,这是多层感知机所描述的。
另外一种观点是:深度学习使计算机学会多步计算程序:
·每一层的representaion被看作是一组指令并行执行之后计算机内存的状态。
·更深层次的网络可以依次执行更多指令。
*序列越深的指令函数越强大,因为序列后面的指令可以引用序列前期指令的结果。
从这个角度来看:在每一层的representaion中,不是所有信息都对应输入数据的特征信息,它也可以存储辅助多步计算程序执行的状态信息:与计数器或指针相似,它与输入的内容无关,但有助于组织模型的处理过程。
1.深度学习的“深度”有两个衡量标准。
第一个度量方法是:在帧中必须执行的顺序指令数。
可被认为是流程图中最长路径的长度,它描述了如何根据输入计算模型的输出。但提供不同的功能单位,同一模型可能有不同的深度。
下面的图表给出logisticregression模型的深度。这里的输出是sigmoid函数。
左边的:使用加法、乘法、sigmoid函数作为基本操作单元,那么模型的深度是3。
每个层次的representaion被看作是一组指令并行执行之后计算机内存的状态。
右边的:使用logisticregression模型本身作为基本操作单元,那么模型深度是1。
另一种测量方法是:概念concept图的深度。
流程图的深度可能比概念图本身大得多,因为在复杂的概念下,简单的概念可以被更好地理解。
例如:面部识别应用程序中,如果有一只眼睛在阴影中,AI一开始只能看见一只眼睛。当检测到面部存在时,AI就能推断出可能存在第二只眼睛。
在这个时候,概念图只有两个层次:眼睛为第一层,脸部为第二层。但此时计算概念图的流程图可能是2n层,其中n是每一个概念都被修改的次数。
2.对于模型的深度没有标准值,也不能说出哪种度量方法更合适。
到底模型的深度值是多少才能称为“深”,也没有标准答案。
经常把深度学习看作是一个包含了大量概念concept的学习模型。
深度学习是机器学习的一种,它是一种以层次嵌套的概念来表达世界的一种特别的机器学习方式。
每一个概念都有一些更简单的概念定义,而较抽象的特征则较少抽象。
下面的图表展示了深度学习的从属关系:深度学习<机器学习<人工智能AI。
下面的图表显示了不同AI系统中不同部分的关联。暗框表示计算机从数据中学习得到的部分。
常规学习:知识的硬编码。因此,电脑无法,也不需要从数据中学习知识。
古典机器学习:人工设计特性。电脑从资料学到了“特征->label”之间的映射关系。
特性学习:机器自动地从数据学习到特征,然后学习到“特征->label”之间的映射。
深度学习:机器根据数据自动学习到多层特征(深层特征由浅层特征来表示),再学习到“特征>label”之间的映射。