创新工场讲AI课:从知识到实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2.1 复杂模型

复杂模型在将来的发展趋势将围绕如下几方面:一是由浅层网络向深层网络发展,目前,学术界已经有一些理论研究支持深层网络结构,它可以进一步指导对复杂模型的深层网络结构的构造;二是将传统的全连接层(Fully Connection)网络延展到局部模型(Local Model),其中包括时间序列模型、图像和空间数据(Spatial Data)模型等一系列模型;三是从局部模型扩展到全局模型。

1.由浅层网络向深层网络发展的复杂模型

最浅层的模型就是传统的线性模型,包括统计学里的线性回归模型等。这些模型把我们给定的输入(input)通过线性组合的方式,形成一个模型输出(output)。但是,线性模型存在的一个问题是,很多实际问题不能用线性函数很好地近似。对此,业界有两种解决方案:一种是在实际问题中,将特征做一些非线性的运算处理,比如对输入特征进行平方运算;另外一种是直接学习一些有效的非线性特征。

神经网络是模型学习非线性特征的一种方法。浅层神经网络需要一个宽的隐含层(Wide Hidden Layer)。我们通过网络结构学习数据集的特征,这些特征被存储在神经网络的结构和参数中。和人为给定特征不一样,这里所有的特征都是通过神经网络学习到的。相比于线性网络(没有隐含层),只有一个隐含层的神经网络的优势是万能近似(Universal Approximation)。也就是说,有一个隐含层的神经网络足以表示所有的函数,而线性模型是不能表示所有函数的。

那么我们为什么要用多层模型呢?多层模型就是含有多个隐含层的深度神经网络(Deep Neural Network,DNN),而对这些DNN的研究,就是深度学习(Deep Learning)。

理论上关于深度学习的优势,业界给出的主要解释是,多层网络可以更加简练地表示一些比较复杂的函数。虽然这些函数可以用两层网络来表示,但是这些表示可能不够简练。比如,我们想用只有一个隐含层的神经网络表示复杂函数,那么就需要指数级数目的神经元,但是如果用DNN来表示的话,则只需要多项式级别的神经元。到目前为止,这个领域还是一个非常活跃的研究热点,因为它对理解深度表示是非常关键的。如果能够在理论上把这个问题研究透彻,就可以转而对实践进行指导。

除上述的理论解释外,大多数从业者还可以通过多层网络学习的特征来更加直观地理解深度网络的作用。这些特征在图像上看是比较清晰的。从CNN的隐含层来看,离输入层近的隐含层提取到的特征是图像的边;再往上层走,网络就会把边进行组合,组合之后的特征就会变成更加复杂的局部组合特征;最后,在再往上的隐含层中,局部组合特征变成更完整的高级特征,比如人脸识别任务,靠近输出的隐含层会学习到比较完整的人脸特征。所以,深度网络是从浅层到深层构造越来越复杂、越来越抽象的高级特征。这种逐级构造特征的方式和人脑视觉处理模块的工作原理是非常相似的。人的视觉皮层也分为V1、V2、V3、V4多个层级,人脑对视觉处理的过程也是从简单到复杂的。所以,深度学习模型与人脑理解图像的方式有很强的相关性。

深度网络在特征表示上有极大的优势,之前没有被广泛应用的其中一个原因是数据不够多、算力不够大,另一个原因是深度网络训练起来非常困难。为了解决深度网络难以训练的问题,研究者提出了一系列的训练技巧。其中一个训练技巧是Dropout,另一个训练技巧是归一化,比如批量正则化(Batch Normalization)。这些方法直到现在都还是研究者常用的训练技巧,但是对批量正则化原理的分析,学术界至今都还没能提出一个特别令人信服的解释。最早的解释是,批量正则化可以有效改善内部协变量偏移(Internal Covariate Shift),但后来的实验发现,实际上协变量偏移并没有那么多。于是,有研究者提出了一些其他解释,比如增加平滑度,等等。总体来讲,对批量正则化原理的解释,目前学术界仍没有定论。今后,深入研究这些技巧背后的理论支撑,仍然是很有必要的。

降低深度网络训练难度的一个非常重要的技巧是使用残差网络(Residual Network,ResNet)。它通过在两层之间引入等价连接,使得深度网络更易于优化。对于这样的连接为什么有效,学术界也提出了一些可能的解释,比如,最近的一些研究从数学层面分析了ResNet结构,并建立了其和微分方程的联系(感兴趣的读者可以搜索论文Neural Ordinary Differential Equations)。通过这个联系,研究者可以提出和ResNet结构类似,但是是从解微分方程角度来考虑的、效果可能会更好的网络。

上面介绍的技巧都是研究者从大量实验中总结出来的经验,虽然它在实践中得到了有效验证,但是有很多技巧仍需要更加完善的理论解释。

2.复杂模型的数学理论与优化

在机器学习领域,有很多关于优化方法的研究。在早期,如果研究人员遇到非凸问题,他们就会担心目标函数在优化时陷入局部最优解。但后来有研究发现,当参数过多时,这些局部最优解往往和全局最优解相差不大。过参数化神经网络甚至可以拟合所有的训练数据,将训练错误率降到0。

关于神经网络为什么能够拟合所有训练数据,早期的解释是,因为神经网络过参数化(Over-parametrized)了。例如,宽残差网络(Wide ResNet)使用的参数数量是训练数据的100倍,因此必须存在一个这种架构的神经网络,能够拟合所有训练数据。然而,这并不能说明为什么由随机初始化的一阶方法找到的神经网络能够达到最优解。

近期,有两个理论分析比较重要:一个是关于神经网络切空间核的思想,大概思路是,如果神经网络的初始化参数比较大,那么最优解会离初始值非常近,这样神经网络就可以在初始值附近由线性模型来逼近。当神经网络变得无穷宽的时候,这个线性逼近就对应一个核,也就是神经网络切空间核。利用这个核,神经网络就可以用传统凸优化方法来做分析。但是这个思想也存在一系列问题,比如,在上述分析里神经网络使用的是固定的随机特征,并没有学习更高效的特征。所以用这个思想解释非线性神经网络仍是不够全面的。

另外一个可以分析两层的过参数化神经网络的思想是,我们把隐含层看成一个在参数空间的分布,这个分布的学习过程可以用一个非线性微分方程描述。这个方法可以证明:随机梯度下降(Stochastic Gradient Descent,SGD)可以在理想的泛化误差内收敛到全局最优。这个思想和上面介绍的切空间核的思想不一样,但同样得到了业界的较高关注。这个方法能够解释为什么神经网络可以学习特征,并能够全局收敛到一个比较好的特征,而这是上面的切空间核方法无法解释的。

总体来讲,神经网络的数学理论研究现在有很好的进展,并且在下一个十年会被持续推进,而且笔者认为,将来会有一系列比较好的理论出现,它们能够进一步指导相关的实践工作。如早期的支持向量机(Support Vector Machine,SVM)、Boosting模型和凸优化方法等,正是因为有一系列的相关理论可以用来指导实践,才最终获得了令人满意的结果。深度学习领域目前还没有这样的情况出现,不过已经发展到了一个“点”—可以让理论在不久的将来赶上实践,最后将其超越。

3.复杂模型的几何结构发展

模型研究的一个方向是DNN—减少参数数量并降低网络计算的复杂度。在图像方面,利用数据结构的典型代表是卷积神经网络(Convolutional Neural Network,CNN);在时序数据上,比较著名的代表就是循环神经网络(Recurrent Neural Network,RNN)、长短期记忆(Long Short-Term Memory,LSTM)网络;在图形上,比较著名的代表是图神经网络(Graph Neural Network,GNN)。利用几何结构或数据结构,我们可以设计有针对性的网络来降低复杂度。

CNN就是处理空间数据的有效几何结构,能让一些相同的计算单元作用到不同的空间点上,并共享相同的模型参数。RNN通过隐含层来表示计算单元结构,并且同一结构在不同时间可以重复使用,因为不同时间点上的变换参数是一样的,这样就产生了一个参数共享的机制,可以大大减少参数量。由于RNN隐含层只能记住近期的状态,因此LSTM 网络被提出,它主要用来解决RNN时间序列衰减及不能记住长期历史信息的问题。LSTM 网络利用控制门的方式,可以让信息衰减得更慢。另外,GNN也是目前一个比较重要的研究方向,GNN的结构类似CNN,即在不同的节点上通过共享参数把相邻节点的信息逐层聚合。虽然每层网络只聚合相邻节点的信息,但随着层数的增多,聚合的信息就会越来越多。

目前更加高效的生成长距离依赖关系的方法是Attention(注意力)机制。它的本质是从整体信息中找出重点关注的信息,把有限的注意力集中在重点信息上,这样可以节省资源,更高效地获得最有效的信息。举一个例子,机器翻译(Machine Translation)的输出词可以通过Attention机制连接到相对应的输入词,这是一个全局的模型。Attention机制在NLP领域(特别是在机器翻译领域)里有着广泛的应用,是目前最成功的对长距离依赖建模的方法。

另外一个NLP领域里的非常重要的工作是Google发表的一篇论文Attention is All You Need里提出的Transformer模型。传统的序列分析,比如机器翻译,用到了类似于RNN、LSTM网络这样的局部模型,也有基于CNN的模型。而Transformer模型不一样的地方在于,只用全局的Attention模型就可以把机器翻译做得更好。Transformer模型通过不断地对自身使用全局的Self-Attention(自注意力)机制来提取更全面的信息,而这是传统的局部方法做不到的。这个结构现在应用得非常广泛,比如,句子“the animal did not cross the street because it was too tired.”里的“it”指的是“animal”;我们再看第二个句子“the animal did not cross the street because it was too wide.”在这个句子里,“it”指的就是“street”,而不是“animal”,因为只有“street”是“wide”的。这些词与词之间的关系就可以通过Self-Attention机制找出来。

这里简单做一个总结。首先,如何构建复杂模型,这仍然是一个活跃的研究领域。我们不仅要从理论上解释复杂的深度模型,还需要更好地解释一些相关训练技巧。如果我们可以从数学的角度给出更加深入的理论分析,那么今后就可以指导模型的构造了。其次,网络的底层几何结构和所处理的数据相关,这个方向也值得进一步研究。最后,如何构造高效的全局模型,在接下来的几年里,这个方向的研究会有更好的发展,目前以Transformer模型为基础的架构已经取得了巨大成功。