许志钦作者

从傅里叶分析角度解读深度学习的泛化能力

深度学习成功地应用在很多领域,但对它的理论理解却非常缺乏。这两年,很多理论学家把关注点放在一个关于深度学习与传统学习理论的悖论上。在传统学习理论中,模型的参数越多,模型一般会更好地拟合训练数据,但模型的泛化能力(拟合测试数据集的能力)会变差。在深度学习中,参数的数目比训练数据集要大得多,但深度网络(DNN)却通常既能拟合好训练数据,又保持良好的泛化能力。这个违反直觉的现象被大家称为“明显悖论” (apparent paradox)。

频率原则(F-Principle)

最近有几篇文章 [1,2,3] 从傅里叶分析的角度,在实验和理论上揭示了该悖论背后的一种机制。

▲ 文献1

▲ 文献2

▲ 文献3

一般来说,在深度学习中,大家用来测试结论的例子或者是手写数字集(MNIST),或者是图像分类集(CIFAR)。这两类数据集相对实际应用的数据集确实已经足够简单,但在分析上,它们仍是非常复杂的,因为它们的输入维度仍然非常高(像素点的个数)。

我们可以从拟合一维函数出发考虑这个问题。训练数据集是少数几个均匀采样数据点,如果用多项式去拟合,阶数很高的时候(大于数据点个数),拟合的结果通常是一个能够精确刻画训练数据但振荡厉害的函数。但如果用 DNN,无论多大规模,通常学习到的曲线都是相对平坦的。因为是一维函数,所以很容易想到,振荡和平坦可用傅里叶分析定量地刻画。于是就自然能猜想到,DNN 在学习的时候可能更加偏爱低频成分。

下面是一个一维函数的例子 [1](图 1a 中的黑点),对数据作离散傅里叶变换后如图 1b 所示,考虑图 1b 中的频率峰值(黑点)在训练中的相对误差,如图 1c,频率越高,收敛越慢(蓝色表示相对误差大,红色表示相对误差小)。频率原则可以粗糙地表述成:DNN 在拟合目标函数的过程中,有从低频到高频的先后顺序。(Frequency Principle or F-Principle in [1], or spectral bias in [2])

▲ 图1

F-Principle 并不是一个陌生的概念,而是我们日常生活中经常都在用的一个原则。想象一下,如果让一个人去记住一个没见过的东西,一般比较粗糙的轮廓信息会先被记住,然后再是很多细节。没错,DNN 也正是使用了这样的一个学习过程。举一个例子,我们来训练一个 DNN 来记住一张图片。DNN 的输入是一个位置坐标 (x,y),我们希望它输出这个位置对应的灰度值。图 2 的一系列图展示了不同训练步数,DNN 学习到的图像,正如我们前面所猜测的从粗糙的轮廓到细节的学习过程。

▲ 图2

经验上理解深度学习的泛化能力

一般来说,“平坦”简单的函数会比振荡复杂的函数有更好的泛化能力。DNN 从目标函数的低频成分开始学习。当它学到训练数据的最高频率的时候,此时频率空间误差趋近于零。因为频率空间的误差等于实域空间的误差,所以它的学习也基本停止了。这样深度学习学到的函数的最高频率能够被训练数据给限制住。对于小的初始化,激活函数的光滑性很高,高频成分衰减很快,从而使学习到的函数有更好的泛化能力。

对于低频占优的目标函数,小幅度的高频成分很容易受到噪音的影响。基于频率原则,提前停止训练(early-stopping)就能在实践中提高 DNN 的泛化能力。

理论上理解深度学习的泛化能力

从低频到高频的学习原则并不总是对的,比如在文献 [1] 中讨论到的,如果目标函数是随机数据点(频率空间没有低频占优的特性),或者 DNN 的参数的初始化的值比较大,这个原则就会失效。特别是在大初始化的情况下,DNN 的泛化能力也会变差。

文献 [2] 对 DNN 学习到的函数的频率幅度的估计并不能解释这些现象。特别地,对于层数和神经元数目足够多的 DNN,文献 [2] 给出的理论不能解释为什么 DNN 从低频开始学习。在文献[2] 中,DNN 的拟合函数的高频成分受权重(weights)的谱范数(spectral norm)控制。对于小规模的DNN,可以经常观察到,权重范数随训练而增长,从而允许小规模的 DNN 去拟合目标函数中的高频成分。因此,文献 [2] 在理论上给出频率原则的一种可能解释。

但如文献 [3] 的一个例子所示(下图,图 3a 为目标函数,图 3b 为其离散傅里叶变换),对于层数和神经元数目足够多的 DNN,权重的谱范数(图 3c)基本不变。但如图 3d 所示的频率成分的相对误差,四个重要的频率峰值(图 3b 的黑点)仍然是从低频开始收敛。对于这种情况,文献 [2] 对 DNN 的拟合函数的高频成分的上限估计在训练过程中基本不变,从而不能看出低频到高频学习的频率原则。

▲ 图3. 说明:(d) 展示 (b) 中四个频率峰值在训练中的相对误差

文献 [3] 给出了能够解释这些问题的理论框架。从只有一层隐藏层的 DNN(sigmoid 作为激活函数)开始,在傅里叶空间分析梯度下降算法,文献 [3] 得到损失函数 ω 在任一频率分量上对任一参数的导数。

其中,对应神经元权重(weight),是关于对应神经元所有参数和频率 ω 的一个多项式,A(ω) 是学习到的函数与目标函数的差的幅度。文献 [3] 论述了这个表达式如何定性的推广到一般 DNN。

上面这个式子显示地定量地说明了梯度下降过程中低频成分会有更高的优先级。但同时需要注意的是,这个优先级不只是由频率决定,它也依赖于拟合函数与目标函数的差的幅度。

这个理论分析揭示了对于低频占优的目标函数,当 DNN 的参数是很小的数时,低频成分会先收敛,并且在低频成分收敛的时候,DNN 的高频成分仍然很小。而当 DNN 拟合高频成分的时候,已经收敛的低频成分只会受到很小的干扰。对高频占优的函数,整个训练过程就会变得复杂。低频容易受到高频的影响,所以低频是振荡式的收敛,每振荡一次,偏离的最大幅度就会下降。并且频率越低,振荡越频繁(如下图 4 所示)。

▲ 图4

对于初始化的问题,这个理论框架也给出了解释。如果初始化权重很大,由于上式中的很大,低频不再占优,所以频率原则就很容易失效。并且,激活函数的高频成分也会变大。对于那些频率高到训练数据也看不到的成分,因为训练过程不能限制它们,所以在训练完成后,它们仍然有比较大的幅度而导致 DNN 的泛化能力变差。

总结

傅里叶分析的理论框架非常好地解释了 DNN 为什么在拥有大量参数的情况下既能学好训练数据,又能保持好的泛化能力,简单地说,由于频率原则,DNN 学习到的函数的频率范围是根据训练数据的需要而达到。对于那些比训练数据的最高频率还高的频率成分,DNN 能保持它们幅度很小。

傅里叶分析的角度来研究 DNN 的学习问题仍处于开始的阶段,有很多有趣的问题值得继续深入,比如更加定量地分析 DNN 的学习过程,理解层数和每层宽度对训练的不同贡献等等。

PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

理论深度学习傅里叶分析
11
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

范数技术

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。半范数反而可以为非零的向量赋予零长度。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

提前停止技术

在机器学习中,提前停止是一种正则化形式,用于在用迭代方法(例如梯度下降)训练学习器时避免过度拟合。 这种方法更新了学习器,使其更好地适合每次迭代的训练数据。 这提高了学习器在训练集之外的数据上的表现。 但是,提高学习器对训练数据的适应性是以增加的泛化误差为代价的。 提前停止规则提供了在学习器开始过度训练之前可以运行多少次迭代的指导。提前停止规则已经在许多不同的机器学习方法中使用,理论基础不尽相同。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

傅里叶变换技术

傅里叶变换(法语:Transformation de Fourier、英语:Fourier transform)是一种线性积分变换,用于信号在时域(或空域)和频域之间的变换,在物理学和工程学中有许多应用。因其基本思想首先由法国学者约瑟夫·傅里叶系统地提出,所以以其名字来命名以示纪念。实际上傅里叶变换就像化学分析,确定物质的基本成分;信号来自自然界,也可对其进行分析,确定其基本成分。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

噪音技术

噪音是一个随机误差或观测变量的方差。在拟合数据的过程中,我们常见的公式$y=f(x)+\epsilon$中$\epsilon$即为噪音。 数据通常包含噪音,错误,例外或不确定性,或者不完整。 错误和噪音可能会混淆数据挖掘过程,从而导致错误模式的衍生。去除噪音是数据挖掘(data mining)或知识发现(Knowledge Discovery in Database,KDD)的一个重要步骤。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

傅里叶分析技术

傅里叶分析,是数学的一个分支领域。它研究如何将一个函数或者信号表达为基本波形的叠加。它研究并扩展傅里叶级数和傅里叶变换的概念。基本波形称为调和函数,调和分析因此得名。在过去两个世纪中,它已成为一个广泛的主题,并在诸多领域得到广泛应用,如信号处理、量子力学、神经科学等。

推荐文章
暂无评论
暂无评论~