- 深度学习500问:AI工程师面试宝典
- 谈继勇
- 2305字
- 2022-09-03 00:42:29
3.1 基本概念
深度学习是机器学习研究中的一个新的领域,其目的在于建立模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,如图像、声音和文本。下面将介绍深度学习的一些基本概念,比如神经网络的类型、常用的神经网络模型结构、深度学习和机器学习的区别与联系,以及在实际应用中如何选择深度学习开发平台的一些建议等。
3.1.1 神经网络的类型
神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。
感知机
多层感知机中的特征神经元模型被称为感知机,由Frank Rosenblatt于1957年发明。简单的感知机如图3-1所示。
图3-1 简单的感知机
其中x1、x2、x3为感知机的输入,其输出为:
假如把感知机想象成一个加权投票机制,比如3位评委给一个歌手打分,打分分别为4分、1分、-3分,这3个评分的权重分别是1、3、2,则该歌手最终得分为4×1+1×3+(-3)×2=1。按照比赛规则,选取的threshold为3,说明只有歌手的综合评分大于3时,才可顺利晋级。对照感知机,该选手被淘汰,因为:
用-b代替threshold,输出变为:
设置合适的w和b,一个简单的感知机单元的与非门如图3-2所示。
图3-2 简单的感知机单元的与非门
当输入为0、1时,感知机输出为0×(-2)+1×(-2)+3=1。
更为复杂的感知机由简单的感知机单元组合而成,如图3-3所示。
图3-3 更为复杂的感知机
多层感知机
多层感知机由感知机推广而来,它最主要的特点是有多个神经元层,因此也叫深度神经网络,其示意图如图3-4所示。
图3-4 深度神经网络示意图
输出层可以不止有一个神经元。隐含层可以只有一层,也可以有多层。输出层为多个神经元的神经网络如图3-5所示。
图3-5 输出层为多个神经元的神经网络
3.1.2 神经网络的常用模型结构
图3-6中包含了大部分常用的神经网络模型结构。
图3-6 常用的神经网络模型结构
3.1.3 深度学习和机器学习的区别与联系
首先来看两者的基本概念。机器学习(Machine Learning)利用计算机、概率论、统计学等知识,输入数据,让计算机学会新知识。机器学习的过程,就是训练数据去优化目标函数。深度学习(Deep Learning)是一种特殊的机器学习,具有强大的能力和灵活性。它通过学习将世界表示为嵌套的层次结构,每个表示都与更简单的特征相关,而抽象的表示则用于计算更抽象的表示。
两者的区别如下。
(1)传统的机器学习需要定义一些手工特征,从而有目的地去提取目标信息,非常依赖任务的特异性,以及设计特征的专家的经验。
(2)深度学习可以从大数据中先学习简单的特征,并从中逐渐学习更为复杂、抽象的深层特征,不依赖人工的特征工程。这也是深度学习在大数据时代受欢迎的一大原因。
机器学习和深度学习之间的联系如图3-7所示。
图3-7 机器学习和深度学习之间的联系
3.1.4 为什么使用深层表示
深度神经网络能解决好多问题,其实并不需要很大的神经网络,但是得有深度,得有比较多的隐含层,这是为什么呢?主要有以下两个原因。
(1)深度神经网络是一种特征递进式的学习算法,浅层的神经元直接从输入数据中学习一些低层次的简单特征,如边缘、纹理等。而深层的特征则基于已学到的浅层特征继续学习更高级的特征,从计算机的角度学习深层的语义信息。
(2)深层的网络隐含单元数量相对较少,隐含层数目较多,如果浅层的网络想要达到同样的计算结果,则需要指数级增长的单元数量才可以。
3.1.5 深度学习架构分类
根据深度学习结构、技术和应用领域的不同,我们可以大致把深度学习架构分为3类。
(1)无监督的或生成式学习的深度架构:针对模式分析和合成任务,用于在没有目标类标签信息的情况下捕捉观测到的或可见数据的高阶相关性。人们所熟知的无监督特征或表达学习指的就是这一类深度网络。无监督或生成式学习的代表网络有深度玻尔兹曼机(Deep Boltzman Machine,DBM)、受限玻尔兹曼机(Restricted Boltzman Machine,RBM)、广义除噪自编码器和积网络(Sum-Product Network,SPN)等。
(2)有监督学习的深度网络:直接提供用于模式分类目的的判别能力,它的特点是描述了可见数据条件下的后验分布。这种有监督的学习,目标类别标签总是以直接或间接形式给出,所以它们也被称作判别式深度网络。
(3)混合深度网络:目标是判别式模型,往往以生成式或无监督深度网络的结果作为重要辅助,常见的实现方式是通过优化和正则化类别中的深度网络,或者通过使用判别式准则对第一个类别所述的深度生成式或无监督深度网络的参数进行估计。
3.1.6 如何选择深度学习开发平台
现有的开源深度学习平台主要有Caffe、PyTorch、MXNet、CNTK、Theano、TensorFlow、Keras和Fastai等。如何选择一个适合自己的平台?下面列出一些参考依据。
(1)与现有编程平台、技能整合的难易程度。
主要是前期积累的开发经验和资源,比如编程语言、前期数据集存储格式等。
(2)与相关的机器学习、数据处理生态整合的紧密程度。
深度学习研究离不开各种数据处理、可视化、统计推断等软件包。建模之前,要考虑是否具有方便的数据预处理工具;建模之后,要考虑是否具有方便的工具进行可视化、统计推断、数据分析。
(3)对数据量及硬件的要求和支持。
深度学习在不同应用场景下的数据量是不一样的,这也导致我们可能需要考虑分布式计算、多GPU计算的问题。例如,对计算机图像处理研究的人员往往需要将图像文件和计算任务分布到多台计算机节点上去执行。当下每个深度学习平台都在快速发展,每个平台对分布式计算等场景的支持也在不断演进。
(4)深度学习平台的成熟程度。
成熟程度是一个比较主观的考量因素,这些因素包括:社区的活跃程度、和开发人员进行交流的难易度,以及当前应用的发展势头。
(5)平台利用的多样性。
有些平台是专门为深度学习研究和应用而开发的,有些平台对分布式计算、GPU等架构有强大的优化,能否用这些平台/软件做其他事情?比如有些深度学习软件是可以用来求解二次型优化的;有些深度学习平台很容易被扩展,可以被运用在强化学习的应用中。