深度学习是基于神经网络的机器学习
深度学习可以概括为特征的抽象和结果的预测。深度学习是将原始的数据特征通过多步的特征转换得到一种更高层次、更抽象的特征表示,并进一步输入到预测函数得到最终结果。深度学习需要解决的关键问题是贡献度分配问题(Credit Assignment Problem,CAP),即一个系统中不同的组件(component)或其参数对最终系统输出结果的贡献或影响。深度学习的目标是让模型自动学习出好的特征表示,从而最终提升预测模型的准确率。
深度学习采用的模型主要是神经网络模型。主要原因是神经网络模型可以使用误差反向传播算法(Backpropagation),能够比较好地解决贡献度分配问题。只要是超过一层的神经网络都会存在贡献度分配问题,因此可以将超过一层的神经网络都看作深度学习模型。

深度学习逐渐超过表示学习范畴,用于处理更加复杂的推理、决策等问题。表示学习(Representation Learning)可以自动地学习出有效的特征(即表示),并提高最终机器学习模型的性能。早期,深度学习主要用来进行表示学习,但目前更多地用来处理更加复杂的推理、决策等问题。概括来说,深度学习是将“表示学习+预测模型的学习”进行端到端的学习,中间不需要人工干预。其中,端到端学习(End-to-End Learning),也称端到端训练,是指在学习过程中不进行分模块或分阶段训练,直接优化任务的总体目标。
关系梳理:人工智能>机器学习>深度学习
人工智能包括机器学习,机器学习包含深度学习。人工智能(AI)的重要组成部分是机器学习(ML),而神经网络(NN)是ML的一个子领域。深度学习可以看做是神经网络的分支,使用了更复杂和更深层次的网络结构,如卷积神经网络(CNN),来处理更高维度和更抽象的数据,如图像、声音和文本。此外,逐渐兴起的强化学习也是机器学习的一个分支。深度学习与强化学习可以相互结合,称为深度强化学习(DRL)。

从生物神经网络到人工神经网络
神经网络是一种模仿生物神经系统的人工智能算法。通常,机器学习中的神经网络指的是人工神经网络,人工神经网络是为模拟人脑神经网络而设计的一种计算模型,它从结构、实现机理和功能上模拟人脑神经网络。人工神经网络与生物神经元类似,由多个节点(人工神经元)互相连接而成,可以用来对数据之间的复杂关系进行建模。不同节点之间的连接被赋予了不同的权重,每个权重代表了一个节点对另一个节点的影响大小。在对神经网络进行训练时,不断优化神经元之间的权重,使得输出的结果逐渐接近预期的结果,最终确认整个网络的参数,并用于执行下游任务。

常用的神经网络结构包括前馈网络、记忆网络和图网络。1)前馈网络:各个神经元按接收信息的先后分为不同的神经层,整个网络中的信息朝一个方向传播,没有反向的信息传播。2)记忆网络:也称为反馈网络,网络中的神经元不但可以接收其他神经元的信息,也可以接收自己的历史信息,具有记忆功能记忆神经网络中的信息传播可以是单向或双向。3)图网络:是定义在图结构数据上的神经网络。每个节点都由一个或一组神经元构成,节点之间的连接可以是有向的,也可以是无向的。每个节点可以收到来自相邻节点或自身的信息。图网络是前馈网络和记忆网络的泛化。

深度学习与神经网络发展历史(1943-2017)
神经网络诞生于1943年,深度学习崛起于2006年。1943年,心理学家McCulloch和数学家Pitts最早提出了一种基于简单逻辑运算的人工神经网络—MP模型,开启了人工神经网络研究的序幕。1986年,Hinton提出第二代神经网络,并利用误差的反向传播算法来训练模型,该算法对神经网络的训练具有重要意义。1989年,Yann LeCun等提出卷积神经网络(CNN)用来识别手写体。1997年,循环神经网络(RNN)的改进型长短时记忆网络(LSTM)被提出。2006年,Hinton首次提出了深度置信网络(Deep Belief Network,DBN)和深度学习的概念。2014年,生成对抗网络(GAN)的提出是深度学习的又一突破性进展。2016年,AlphaGo击败围棋世界冠军李世石,将深度学习推向高潮。

本报告以2017年之前几种典型的深度学习算法为研究对象,对其进行深度拆解和分析。主要算法包括:卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)、深度强化学习(Deep Reinforcement Learning,DRL)。此外,深度学习还包括很多其他算法和模型,例如深度信念网络、概率图模型、序列生成模型等。
前馈神经网络:最早发明的简单人工神经网络
前馈神经网络是最早发明的简单人工神经网络。神经网络是一种典型的分布式并行处理模型,通过大量神经元之间的交互来处理信息,每一个神经元都发送“兴奋和抑制”的信息到其他神经元。前馈神经网络(FNN)也经常称为全连接神经网络(Fully Connected Neural Network,FCNN)或多层感知器(Multi-Layer Perceptron,MLP)。在前馈神经网络中,各神经元分别属于不同的层,每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层。其中,第0层称为输入层,最后一层称为输出层,其他中间层称为隐藏层。整个网络中无反馈,信号从输入层向输出层单向传播。

通用近似定理保证了前馈神经网络的强拟合能力。前馈神经网络具有很强的拟合能力,常见的连续非线性函数都可以用前馈神经网络来近似。该能力由通用近似定理来保证,即对于具有线性输出层和至少一个使用激活函数的隐藏层组成的前馈神经网络,只要其隐藏层神经元的数量足够,它可以以任意的精度来近似任何一个定义在实数空间中的有界闭集函数。
前馈神经网络标志人工智能从高度符号化的知识期向低符号化的学习期开始转变。前馈神经网络在20世纪80年代后期就已被广泛使用,大部分都采用两层网络结构(即一个隐藏层和一个输出层),神经元的激活函数基本上都是Sigmoid函数,使用的损失函数大多数是平方损失。前馈神经网络是一种连接主义的典型模型,标志这人工智能从高度符号化的知识期向低符号化的学习期开始转变。

反向传播算法:神经网络参数学习的重要算法
反向传播算法是神经网络训练中经常使用的高效计算梯度方法。神经网络参数可以通过梯度下降法来进行学习,反向传播算法(BackPropagation,BP)是经常使用的高效计算梯度方法。“反向传播”体现在,第l层的误差项可以通过第l+1层的误差项计算得到。通俗的解释是:将输出的结果与真实结果对比,计算误差(损失函数),并以误差降到最低为目标,不断调整卷积核参数和全连接网络权重,直到达到预期效果。由于这种调整方向是从输出到输入逐级返回,因此叫做反向传播。

自动梯度计算:变手动计算为自动计算
深度学习框架包含的自动梯度计算功能大大提高了模型开发效率。神经网络的参数主要通过梯度下降来进行优化。通常,当确定了风险函数以及网络结构后,可以手动计算梯度并用代码进行实现。但是手动的方式一方面较为低效,另一方面容易出现错误,影响开发效率。目前,主流的深度学习框架都包含了自动梯度计算的功能,开发者只需考虑网络结构并用代码实现,梯度计算即可由深度学习框架来自动完成,大大提高准确度和开发效率。
自动微分是大多数深度学习框架首选的自动计算梯度方法。自动计算梯度方法包括数值微分、符号微分和自动微分。
1)数值微分:指的是用数值方法来计算函数的导数。
2)符号微分:是一种基于符号计算(也叫代数计算)的自动求导方法,是指用计算机来处理带有变量的数学表达式,其输入和输出都是数学表达式,不需要代入具体的值。
3)自动微分:是一种可以对程序或函数进行导数计算的方法,其基本原理是,所有的数值计算可以分解为一些基本操作,然后利用链式法则来自动计算一个复合函数的梯度。按照计算导数的顺序,自动微分可以分为两种模式:前向模式和反向模式。自动微分可以直接在原始程序代码进行微分,因此成为目前大多数深度学习框架的首选。

CNN:卷积+汇聚+全连接
典型的卷积神经网络是由卷积层、汇聚层、全连接层交叉堆叠而成。其中,一个卷积块包括连续M个卷积层和b个汇聚层(M通常设置为2∼5,b为0或1)。一个卷积网络中可以堆叠N个连续的卷积块,然后在后面接着K个全连接层(N的取值区间比较大,比如1∼100或者更大;K一般为0∼2)。CNN能够有效的将大数据量的图片降维成小数据量,并有效的保留图片特征。

卷积层利用卷积核实现特征提取。卷积层的作用是提取局部区域的特征,不同的卷积核相当于不同的特征提取器,反之,提取不同的特征需要不同的卷积核。输入原图经过卷积核提取后,即得到特征映射(Feature Map),每个特征映射可以作为一类抽取的图像特征。目前,卷积网络的整体结构趋向于使用更小的卷积核(比如1×1和3×3),以及更深的结构(比如层数大于50)。

每个卷积层后引入非线性激活函数,确保整个网络的非线性。常用的激活函数为线性整流单元(Rectified Linear Unit,ReLU),其实质是将特征图上所有负数变成0,而正数保持不变。其他常用的激活函数还有Sigmoid函数、双曲正切函数(tanh)。激活函数使得神经网络模型具有非线性,从而可以表示非线性的函数,处理更加复杂的任务。

汇聚层进一步压缩数据和参数量。汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer)或池化层,其作用是进行特征选择,降低特征数量,减少参数数量。典型的汇聚层是将每个特征映射划分为2×2大小的不重叠区域,然后使用最大汇聚的方式进行下采样,即用2×2区域的最大值代替整个区域的值。此外,还可以采用2×2区域的平均值来代替整个区域值。以图像为例,汇聚层的使用依据包括,一方面图像中相邻的像素倾向于具有相似的值,另一方面对图片降维通常不会影响识别结果。值得注意的是,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用也变得越来越小,因此目前比较流行的卷积网络中汇聚层的比例有所降低。

全连接层采用神经网络中的前馈网络结构。将池化后的结果按顺序排成一列,输入全连接层。全连接层把相邻两层的神经元全部交叉相联结,两层之间所有神经元都有相应的权重,经计算后得到最终输出结果。通常全连接层在卷积神经网络尾部。

卷积神经网络参数可利用误差反向传播算法来确定。卷积神经网络可以通过误差反向传播(Backpropagation)和梯度下降等算法进行参数学习,包括确定卷积核参数和全连接网络权重等。
卷积神经网络应用从图像识别逐渐向其他领域拓展。卷积神经网络的前身是层级化人工神经网络—神经认知模型,该模型由日本学者福岛邦彦受生物视觉系统研究启发而提出,用来处理手写字符识别等问题。随着各类基于CNN理念的新模型不断被提出,CNN在语音识别、自然语言处理、人脸识别、运动分析、医学诊断等多个方面均有突破。
典型的CNN:LeNet-5和AlexNet
LeNet-5是法国学者Yann LeCun提出的基于梯度学习的卷积神经网络算法。LeNet-5共有7层,包括3个卷积层、2个汇聚层、1和全连接层和1个输出层,接受的输入图像大小为32×32=1024,输出对应10个类别的得分。基于LeNet-5的手写数字识别系统在20世纪90年代被美国很多银行使用,用来识别支票上面的手写数字。

AlexNet是第一个现代深度卷积网络模型。AlexNet首次使用了现代深度卷积网络的技术方法,比如使用GPU进行并行训练,采用ReLU作为非线性激活函数,使用数据增强来提高模型准确率等。AlexNet赢得了2012年ImageNet图像分类竞赛的冠军。AlexNet模型包括5个卷积层、3个汇聚层和3个全连接层。由于网络规模超出了当时的单个GPU的内存限制,AlexNet将网络拆为两半,分别放在两个GPU上,GPU间只在某些层进行通信。

除LeNet-5和AlexNet,其他的CNN模型还包括VGGNet、ZFNet、GoogLeNet、ResNet、DenseNet等。
RNN:具有短期记忆的神经网络
循环神经网络(RNN)是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其他神经元的信息,也可以接受自身的历史信息,形成具有环路的网络结构。和前馈神经网络相比,循环神经网络更加符合生物神经网络的结构。循环神经网络的短期记忆能力提供了一定的存储功能,因此其计算能力更为强大。理论上,循环神经网络可以近似任意的非线性动力系统。

RNN不同的输入输出关系组合,能够解决不同的下游任务。时序上的层级结构,赋予了RNN更灵活的输入输出关系,用于解决不同问题。例如,一对多的结构可用于文本生成,多对一的结构可用于文本分类,多对多的结构可用于问答和机器翻译等。

循环神经网络的参数可以通过梯度下降方法来进行学习。在循环神经网络中主要有两种计算梯度的方式:随时间反向传播(BPTT)算法和实时循环学习(RTRL)算法。随时间反向传播算法的主要思想是通过类似前馈神经网络的误差反向传播算法来计算梯度;实时循环学习则是通过前向传播的方式来计算梯度。虽然2017年Transformer模型和注意力机制的出现带来了一波新算法的崛起,但RNN在小数据集、低算力情况下依然较为有效。
LSTM:将短期记忆进一步延长
LSTM引入门控机制,解决RNN的长程依赖问题。循环神经网络在学习过程中的主要问题是由于梯度消失或爆炸问题(也称为长程依赖问题),可以简单理解为参数无法正常更新(梯度变得很大或变为0),很难建模长时间间隔状态之间的依赖关系。长短时记忆网络(Long Short-term Memory,LSTM)引入门控机制,很好了解决了RNN的上述问题。
LSTM网络特点在于新内部状态和门控机制的引入。1)新的内部状态:与RNN相比,LSTM网络引入一个新的内部状态(internal state)ct,专门进行线性的循环信息传递。在每个时刻t,LSTM网络的内部状态ct记录了到当前时刻为止的历史信息,相当于延长了网络的记忆特性。2)门控机制:引入遗忘门、输入门和输出门。其中,遗忘门控制上一个时刻的内部状态需要遗忘多少信息;输入门控制当前时刻的候选状态有多少信息需要保存;输出门控制当前时刻的内部状态有多少信息需要输出给外部状态。参数训练方面,虽然相比RNN,LSTM引入了更多参数矩阵,但依然可以使用梯度下降算法进行参数更新。

循环神经网络的隐状态s为短期记忆,新内部状态c具有更长的记忆。
循环神经网络中的隐状态s存储了历史信息,可以看作一种记忆。在简单循环网络中,隐状态每个时刻都会被重写,因此是一种短期记忆。在神经网络中,长期记忆可以看作网络参数,隐含了从训练数据中学到的经验,其更新周期要远远慢于短期记忆。在LSTM网络中,记忆单元c可以在某个时刻捕捉到某个关键信息,并有能力将此关键信息保存一定的时间间隔,其保存信息的生命周期要长于短期记忆s,但又远远短于长期记忆,因此称为长(的)短期记忆。
GAN:生成器和判别器的对抗与学习
生成对抗网络通过对抗训练的方式使得生成网络产生的样本服从真实数据分布。生成对抗网络(GAN)突破了以往的概率模型必须通过最大似然估计来学习参数的限制。通俗的解释是,许多深度生成模型其目的在于从底层构造分布函数,并通过设定训练目标来训练模型参数。但对于更复杂的情况,构造函数并不容易,且计算困难。而GAN采用了另一种思维,即放弃构造精确地分布函数,转而通过对抗训练出另一个模型来不断逼近想要的分布,直到生成真假难辨的结果。
GAN主要由生成网络和判别网络组成。在生成对抗网络中,有两个网络进行对抗训练。1)判别网络:目标是尽量准确地判断一个样本是来自于真实数据还是由生成网络产生;2)生成网络:目标是尽量生成判别网络无法区分来源的样本。这两个目标相反的网络不断地进行交替对抗训练。最终,如果判别网络再也无法判断出一个样本是真实存在还是生成的,那么也就等价于生成网络可以生成符合真实数据分布的样本,该生成网络就是可以执行下游任务的模型。

训练过程需要平衡生成网络与判别网络的能力。和单目标的优化任务相比,生成对抗网络的两个网络的优化目标相反,训练过程往往不太稳定,需要平衡两个网络的能力。通俗的说,对于判别网络,其初始判别能力不能太强,否则难以提升生成网络的能力;同时,判别网络的判别能力也不能太弱,否则训练出的生成网络效果也会受限。理想状态下,每次迭代中判别网络比生成网络的能力强一些,通过不断地迭代来逐渐“拔高”生成网络的能力。
GAN有很多变种,广泛应用于众多领域。据Github数据,截至2018年9月,GAN的变种模型已超500种。GAN模型在众多领域得到广泛应用,例如图像数据集自动生成、文字转照片、照片修复、生成3D模型等。
深度强化学习:深度学习与强化学习的结合
深度强化学习是深度学习与强化学习的结合。其中,强化学习用来定义问题和优化目标,深度学习用来解决策略和值函数的建模问题,然后使用误差反向传播算法来优化目标函数。深度强化学习在一定程度上具备解决复杂问题的通用智能。
强化学习指的是从(与环境)交互中不断学习的问题以及解决这类问题的方法。强化学习(Reinforcement Learning,RL),也叫增强学习。强化学习通过智能体不断与环境进行交互,并根据经验调整其策略来最大化其长远的所有奖励的累积值。相比其他机器学习方法,强化学习更接近生物学习的本质,可以应对多种复杂的场景,从而更接近通用人工智能系统的目标。和深度学习类似,强化学习中的关键问题也是贡献度分配问题,每一个动作并不能直接得到监督信息,需要通过整个模型的最终监督信息(奖励)得到,且有一定的延时性。
强化学习可分为基于值函数的方法、基于策略函数的方法,以及两者的结合。其中,基于值函数的方法包括动态规划、时序差分学习等,基于策略函数的方法包括策略梯度、无梯度法等,两者结合的方法包括演员-评论员算法。一般而言,基于值函数的方法在策略更新时可能会导致值函数的改变比较大,对收敛性有一定影响;基于策略函数的方法在策略更新时更加更平稳,但因为策略函数的解空间比较大,难以进行充分的采样,导致方差较大,并容易收敛到局部最优解;演员-评论员算法通过融合两种方法,取长补短,有着更好的收敛性。

第一个强化学习和深度学习结合的模型是深度Q网络。2013年,DeepMind的Mnih等人提出了深度Q网络(DQN)。DQN模型相对简单,仅面向有限的动作空间,但依然在一款名为Atari游戏上取得了超越了人类水平。随着深度强化学习的快速发展,更多基于DQN的改进模型开始出现,例如双Q网络、优先级经验回放、决斗网络等。目前,深度强化学习更多是同时使用策略网络和值网络来近似策略函数和值函数。
深度学习框架:深度学习的工具库
深度学习框架帮助构建、训练和部署深度学习模型。在深度学习中,一般通过误差反向传播算法来进行参数学习,采用手工方式来计算梯度和编写代码的方式较为低效;此外,深度学习模型需要较多的计算机资源,且存在CPU和GPU之间不断进行切换的需求,开发难度较大。因此,一些支持自动梯度计算、无缝CPU和GPU切换等功能的深度学习框架应运而生。比较有代表性的框架包括:Theano、Caffe、TensorFlow、Pytorch、飞桨(PaddlePaddle)、Chainer和MXNet等。


基于以上基础框架,人们开发了建立在框架之上的高度模块化神经网络库,进一步简化构建神经网络模型的过程。比较著名的模块化神经网络框架有:1)基于TensorFlow和Theano的Keras(Keras已被集成到TensorFlow2.0版本中);2)基于Theano的Lasagne;3)面向图结构数据的DGL。
Transformer:基于自注意力机制的新兴架构
Transformer是一种基于自注意力机制的编码器-解码器深度学习模型。2017年6月,Google Brain在神经信息处理系统大会(NeurIPS)发表论文“Attention is all you need”,首次提出了基于自我注意力机制(self-attention)来提高训练速度的Transformer模型,将其用于自然语言处理。Transformer架构由编码器和解码器(Encoder-Decoder)两个部分组成,每个部分包含多个子层,如多头自注意力、前馈神经网络、和归一化等。Transformer架构的优点是:1)可以并行处理输入序列的所有元素,大大提高训练速度;2)不需要依赖循环或卷积结构,能够捕捉长距离的依赖关系,3)可以通过预训练和微调的方式适应不同的任务。因此,Transformer一经问世便大有取代传统CNN、RNN的趋势。


Transformer成为现代深度学习大模型的基础架构,其衍生版本约60个。


风险提示
1、宏观经济波动。若宏观经济波动,产业变革及新技术的落地节奏或将受到影响,宏观经济波动还可能对AI投入产生负面影响,从而导致整体行业增长不及预期。
2、技术进步不及预期。若AI技术和大模型技术进步不及预期,或将对相关的行业落地情况产生不利影响。
3、本报告内容均基于客观信息整理,不构成投资建议。