zoukankan      html  css  js  c++  java
  • Group Sparse Regularization for Deep Neural Networks:深度神经网络的组稀疏正则化 (翻译)

    深度神经网络的组稀疏正则化 (翻译)

    Group Sparse Regularization for Deep Neural Networks

    Scardapane S, Comminiello D, Hussain A, et al

    摘要:

    在本论文中,我们考虑同时进行以下优化任务:深度神经网络的权重、隐层神经元的数量以及输入特征选择。虽然这三个问题通常被分开处理,但我们提出了一个简单的正则化公式,能够在标准的优化历程下并行地解决以上三个问题。特别地,我们引申出组套索惩罚(源于线性回归文献)以便对神经网络链接施加组级的稀疏性,其中每个组被定义为一个神经元的输出边权集合。视具体情况而定,神经网络的边权可以与输入变量取值、隐层神经元或偏移值相关,因此同时执行以上优化任务有助于获得更紧凑的神经网络。我们通过与传统权值衰减和套索惩罚进行比较实施广泛的实验评估。实验能够表明,稀疏组套索惩罚能够在拥有良好表现的同时获得有较少输入的紧凑神经网络。我们在手写数字识别和大规模分类问题的实际应用上分别对算法进行评估。

    1 引言

    近年来对深度学习的研究使得训练深度神经网络(及大规模神经网络)成为可能,并使诸如图像识别、视频分类、生物医学诊断等许多高维数据处理问题具有非常可观的准确度。尽管近年来训练五层隐层的神经网络仍具有挑战性,但已经能够使用dropout等技术训练具有几百或几千个隐层神经元和百万或上亿数量级参数的神经网络。与此同时,人们通常设计能灵活应对各种复杂输入数据的"超能力"网络而非仅能严格处理当前数据的神经网络。众所周知在有关机器学习的文献中普遍存在关于利用简单模型还是复杂模型进行表示的争议,然而这实际上远不只是一个"选择最简模型"的哲学问题。过多的权值会显著增加神经网络过拟合的风险,并且由于代理必须将权值转发到集中式参数服务器,它们的交换也是并行实现梯度下降的主要瓶颈。最后,执行密集的大规模矩阵乘法所需的较大计算能力,最终得到的模型可能无法在低功率设备或嵌入式设备上工作。

    实践中有证据指出,绝大部分深度神经网络中的大部分边权对网络的准确率并不重要。举个例子,Denil等人证明能够仅学习小部分边权,其他的使用基于内核的估计器进行预测,这种做法导致的分类准确度下降在大多数情况下可以忽略不计。类似地,在一些情况下,可以用低秩矩阵近似替换原始权重矩阵并对特征矩阵执行梯度下降。基于这些现象,近年来针对减少边权的研究工作急剧增加。这些成果中要么需要建立关于边权连接的强假设(例如低秩假设),要么需要多个单独的训练步骤。例如Han等人提出的方法首先训练一个神经网络并清零所有低于阈值的权重,然后在第二个步骤中对剩下的连接边进行微调。另外,学习权重可以通过应用矢量量化技术来降低,然而这些技术被制定为一个单独的优化问题。还有其他无限种可能,例如Hinton等人普及的那样模仿原来的网络训练一个独立的小型网络;利用经典剪枝算法,如OBD(optimal brain damage)算法,使用代价梯度的二阶信息去除训练后的"非显着"连接;使用有限的数值精度来减少存储(使每个权值的位达到极限);或是使用散列函数来强制分配权重等等。

    当涉及到高维数据集时,另一个需要解决的问题就是特征选取,我们需要选取输入中包含最多有效信息的最小子集。当向神经网络增加一组输入特征的时候,往往会需要增加各隐层中的神经元,因此特征选取与网络的修剪是有关系的。也同样地,有非常多的技术能够用于特征选取或输入集的降维,例如主成分分析法、互信息法和自编码法等等。然而运用这些技术使机器学习的步骤更加复杂化:首先需要使用一种算法选取输入集的特征,再使用一种优化算法训练神经网络,可能还要再用另一个方法压缩权值矩阵。对此提出了一个问题,同时也是本文的主旨:是否存在一种规则化方法能通过最小化代价函数,同事解决以上三个问题?事实上,在神经网络中修剪神经元与特征选取几乎是等同的问题。输入层可以看作是神经网络中一个没有输入、只有输出的第一层隐层的附加层,因此修剪该层神经元与特征选取等同。

    目前唯一能达到这个目标的规则化方法是l1l_{1}范数正则约束,它约束训练过程中所有权值的绝对值之和。l1l_{1}范数可以看作是非凸且不可微的l0l_{0}范数的替代品。l1l_{1}范数起源于线性回归,也被叫做套索估计器,近年来被广泛应用于压缩感知中。虽然它在零点不可微,但在实际应用中几乎不造成问题。在实际应用中,一般用l1l_{1}范数获得权级稀疏性,并同时使用l2l_{2}范数最小化各权值,这种方法叫做"弹性网络"惩罚。但即便如此,由于当一个神经元的所有输入或输出权值都为零它才可以被完整移除,因此使用l1l_{1}范数仍不是解决我们的问题的直接方法,在这种意义上它甚至是比较不理想的一种优化手段。在两个权值稀疏度等同的网络之间,我们会更倾向于选择更加结构化稀疏的、每一层神经元数量更少的那个网络。

    在本文中,我们介绍"组套索"惩罚来完成我们的目标。组套索项可以实现变量组级的稀疏,在它的约束下同组的变量同时为零或同时不为零。再进一步,我们引入"稀疏组套索",它能够进一步提高非稀疏组的稀疏度。本文中,我们将一个神经元的所有输出权值视为一组,这样就可以运用组套索优化算法将它们同时移除。视具体情况而定,移除一个神经元能达到不同的效果:移除输入层的神经元能达到特征选择的效果,移除隐层的神经元能达到修剪神经网络的效果。在考虑凸损失函数时,包括多核和多任务问题,机器学习中的组l1l_{1}正则化思想是相当著名的。然而据我们所知,在神经网络文献中通常没有考虑过这样的一般公式。例如Zhao等人使用组稀疏惩罚选取机器人控制任务中共现的特征组,同样,Zhu等人使用了群体稀疏公式来选择多模式背景下的特征信息组。

    反之,在本文中我们使用套索项作为一个通用工具实现具有选定特征的较小子集的紧凑网络。事实上从我们的实验结果比较中能明显看出组稀疏能获得最好的实验结果,它在获得不劣于l2l_{2}l1l_{1}正则化的神经网络的解的同时,大大减少了网络中每一层神经元的个数。此外,正则项可以立即应用在大多数现有的软件库中,并且不会增加传统权值衰减技术的计算复杂性。

    大纲:本文结构安排如下。第二章描述了在训练神经网络过程中正则化的标准技术,即l2l_{2}l1l_{1}和复合l2/l1l_{2}/l_{1}正则项。第三章描述了组套索和稀疏组套索惩罚,并描述了本文中"组"的意义。第四章我们通过手写数字识别和多个具有标准深度学习基准的实际应用测试我们的算法。在对第五章中其他一些相关的修剪技术进行深入研究后,我们在第六章进行了一些总结。

    注意:在本文中,向量用粗体小写字母表示,例如amathbf{a},矩阵用粗体大写字母表示,例如Amathbf{A}。所有向量假设为列向量。操作符pleft| cdot ight|_{p}为欧几里德标准空间的lpl_{p}范数,当p=2p = 2为欧几里德范数,p=1p = 1为曼哈顿范数,定义为β1=k=1Bβk, βRBleft| eta ight|_{1} = sum_{k = 1}^{B}left| eta_{k} ight|, eta in R^{B}

    2 神经网络的权值正则化

    用一个通用公式y=f(x;w)mathbf{y} = f(mathbf{x};mathbf{w}),其输入向量为xRdmathbf{x} in R^{d},并经HH层隐层神经元处理后返回向量yROmathbf{y} in R^{O}。向量wRQmathbf{w} in R^{Q}为神经网络所有合适参数构成的列向量的简写。通常第kk个隐层(1kH+1)(1 leq k leq H + 1)LKL_{K}维的输入向量hkmathbf{h}_{k}进行处理并返回一个LK+1L_{K + 1}维的输出向量hk+1mathbf{h}_{k + 1}给下一层:

    hk+1=gk(Wkhk+bk)mathbf{h}_{k + 1} = g_{k}(mathbf{W}_{k}mathbf{h}_{k} + mathbf{b}_{k}) (1)

    其中{Wk,bk}{mathbf{W}_{k},mathbf{b}_{k}}为神经网络中kk层的合适参数,gk()g_{k}( cdot )是这一层逐元素应用的激活函数。为了方便我们令h1=xmathbf{h}_{1} = mathbf{x}。为训练神经网络的权值,考虑一组总数为NN的训练样本{(x1,d1),, (xN,dN)}{left( mathbf{x}_{1},mathbf{d}_{1} ight),ldots, (mathbf{x}_{N},mathbf{d}_{N})},则可以通过最小化以下代价函数训练神经网络

    w=arg{1Ni=1NL(di,f(xi))+λR(w)}mathbf{w}^{*} = arg{operatorname{}{{frac{1}{N}sum_{i = 1}^{N}{Lleft( mathbf{d}_{i},fleft( mathbf{x}_{i} ight) ight) + lambda R(mathbf{w})}}}} (2)

    式中L(, )L( cdot , cdot )为代价函数,R()Rleft( mathbf{cdot} ight)为正则约束项,标量系数λlambda对这两项进行加权。一般对于回归问题代价函数L(, )L( cdot , cdot )选择平方误差函数,对于分类问题选择交叉熵函数。

    目前而言为防止过拟合,正则化神经网络的最常见选择是对权重加以l2l_{2}范数的平方:

    Rl2(w)w22R_{l_{2}}(mathbf{w}) riangleq left| mathbf{w} ight|_{2}^{2} (3)

    在神经网络的文献中,这通常被称为"权值衰减",因为在最速下降法中,每次迭代都会将权重按比例地减小。有时它也被叫做Tikhonov正则化。然而,通过权值衰减获得稀疏性的唯一方法是人为地迫使所有低于某个阈值的权值都归零,即使这样,其稀疏效果仍然微乎其微。

    正如我们在引言中所述,另一个神经网络最常见的正则化方法启发自套索算法,它通过权值的绝对值来惩罚权值:

    Rl1(w)w1=k=1QwkR_{l_{1}}left( mathbf{w} ight) riangleq left| mathbf{w} ight|_{1} = sum_{k = 1}^{Q}left| w_{k} ight| (4)

    l1l_{1}范数在零点不可微,因此需采用它的次梯度。除此之外,它的梯度是恒定的,且在标准最小化过程中,它将每个权值以恒定的速度移动到零(在下一节中,我们将以更直观的几何图形描述这一行为)。虽然存在自定义算法来解决非平滑的l1l_{1}范数正则化问题,但在神经网络的文献中,直接将一阶过程(例如运用动量方法的随机梯度下降)直接用于权值衰减公式是非常常见的。举例说明,所有基于Theano框架的库都会将wk=0w_{k} = 0处的梯度默认设为零。因此,尽管通过l1l_{1}范数获得结果的稀疏水平比使用权值衰减高得多,通常在优化算法后还是需要通过阈值来获得精确稀疏的解。

    一种将l1l_{1}范数转化为光滑问题的流行方法是为l1l_{1}范数增加一个平滑项,例如w1=k=1Qwk2+βleft| mathbf{w} ight|_{1} = sum_{k = 1}^{Q}sqrt{{w_{k}}^{2} + eta}。另一种可能性是考虑混合使用l1l_{1}l2l_{2}正则项,这有时候被称为"弹性网络"惩罚。然而在这种情况下,问题需要选取两个不同的超参数对这两个正则项进行不同的加权。

    3 基于组稀疏的神经元水平正则化

    A 算法公式

    使用l2l_{2}l1l_{1}正则化都可以很好地防止过拟合,但他们都不是获得一个紧凑神经网络的最好办法。通常来说,当一个神经元的所有连接(输入或输出)都通过训练被调整为零,这个神经元才能从网络中被移除,但是在最小化(2)中的代价函数的过程中并没有积极追求这一目标。在许多局部最优解之间,有些可能在准确性方面与全局最优解相当(或几乎相当),却能获得更加高效和紧凑的网络。但是由于没有原则性方法收敛到特定的最优解,使用这些正则化方法所能得到的网络仅仅能用作为优化过程的初始化。

    本文的核心观点是考虑组级的稀疏性,迫使一个神经元的所有输出链接(对应为一个组)同时为零或同时不为零。更确切地,我们考虑三个不同的变量组,对应三种不同的组级稀疏性效果:

    1)输入组GinG_{ ext{in}}:组中一个元素giGin, i=1,,d{mathbf{g}_{i} in G}_{ ext{in}}, i = 1,ldots,d是网络中第ii个输入神经元所有输出链接构成的向量,即矩阵W1mathbf{W}_{1}转置的第一行。

    2)隐层组GhG_{h}:组中一个元素gGh{mathbf{g} in G}_{h}是隐层中任一神经元所有输出链接构成的向量,即矩阵Wkmathbf{W}_{k}转置中的一行(k>1)(k > 1)。对应于网络内部直到输出层的神经元,一共有K=2H+1Nksum_{K = 2}^{H + 1}N_{k}个组。

    3)偏移组GbG_{b}:这是一个对应网络中偏移的一维组(标量),共计有K=1H+1Nksum_{K = 1}^{H + 1}N_{k}个组。每组偏移对应于向量{b1,,bH+1}{mathbf{b}_{1},ldots,mathbf{b}_{H + 1}}中的一个元素。

    综上,我们一共有G=K=1H+1NkG = sum_{K = 1}^{H + 1}N_{k}个变量组,相应地对神经网络造成三种不同效果。如果输入组中的变量被设置为零,则相应的特征可以在预测阶段被忽略,有效地对应于特征选择过程。其次,如果隐层组中的变量被设置为零,我们可以移除相应的神经元,从而取得修剪网络的效果并获得更精简的隐层。最后,如果偏移组中的变量被设置为零,我们可以为相应的神经元移除偏移。我们注意到,为每一个偏移设立一个单独的组并不是唯一的选择。我们可以考虑为每层的神经元统一设置一个偏移单元。在这种情况下,每层都有一个偏移组,对应于保留或删除其中的每个偏移值。一般来说,我们还没有找到明显的改进方法。

    这种权值分组策略的直观表示如图1所示,图中展示了一个有两个输入(图的最上方)、一层含有两个神经元的隐层(图的中间)和一个输出单元(图的下方)。在图中,绿色背景的为输入组,蓝色背景的为隐层组(这个例子中每组都只有一个元素),三个红色背景的为偏移组。

    图1:组套索正则化的示意图

    让我们简单地定义所有的组为

    G=GinGhGb{G = G}_{ ext{in}} cup G_{h} cup G_{b}

    组稀疏正则化则可被写为

    Rl2,1(w)gGgg2R_{l_{2,1}}(mathbf{w}) riangleq {sum_{mathbf{g} in G}^{}{sqrt{left| mathbf{g} ight|}left| mathbf{g} ight|}}_{2} (5)

    式中gleft| mathbf{g} ight|为向量gmathbf{g}的维度,它确保每个组都得到统一的加权。注意,对于一维的组,表达式(5)简化为标准套索。与l1l_{1}范数类似,式(5)是一个非平滑的凸函数,因此在g2=0left| mathbf{g} ight|_{2} = 0的时候它的梯度没有定义。其每个项的次梯度可以定义为

    {gg2}g={ggg2            if g0{gt:t21} otherwise   frac{partial{{sqrt{left| mathbf{g} ight|}left| mathbf{g} ight|}_{2}}}{partialmathbf{g}} = left{ egin{matrix} sqrt{left| mathbf{g} ight|}frac{mathbf{g}}{left| mathbf{g} ight|_{2}} ext{ if }mathbf{g eq 0} \ left{ sqrt{left| mathbf{g} ight|}mathbf{t:}left| mathbf{t} ight|_{2} leq 1 ight} ext{ otherwise} \ end{matrix} ight. ext{ } (6)

    对于l1l_{1}范数,我们将式中第二种情况的次梯度设置为零就能利用标准一阶优化获得非常好的收敛性。同样地,也需要在最后使用与之步骤获得精确的稀疏解。请注意我们在式(5)中使用了l2,1l_{2,1}的符号,因为该它的形式与矩阵的l2,1l_{2,1}范数相似。

    但是式(5)的计算结果可能仍是次优的,因为在我们删除了一些组之后,失去了对剩下连接的稀疏性的保障。因此我们考虑以下"稀疏组套索"(SGL)惩罚:

    RSGL(w)Rl2,1(w)+Rl1(w)R_{ ext{SGL}}left( mathbf{w} ight) riangleq R_{l_{2,1}}left( mathbf{w} ight) + R_{l_{1}}(mathbf{w}) (7)

    SGL惩罚与构成它的范数具有相同的性质,即凸但不可微。与弹性网络惩罚不同的是,我们发现用式(7)中的任意一项就能获得最优解。

    图2展示了l1l_{1}l2,1l_{2,1}和SGL惩罚项的直观对比。虚线框表示将2维输入层连接到5维输出层的一个连接矩阵,灰色部分展示了矩阵中被对应惩罚项归零的可能元素。套索惩罚移除元素的时候不考虑在神经元级的优化。在这个例子中,我们移除了四组连接(因此获得了40%的神经元级稀疏性),且我们可能移除第二层的第二个神经元(仅在这个神经元的偏移值也可被移除的情况下)。组套索惩罚移除了输入层第二个神经元的所有连接,因此它可被安全地从网络中移除。通过组套索得到的稀疏性仅略高于套索惩罚,但却获得了更加结构化稀疏的神经网络连接。最后,SGL公式结合了以上两个公式的有点:我们能移除输入层第二个神经元的所有连接和剩下神经元中的两个连接,因此获得了70%的组级稀疏性并获得了一个非常紧凑和高效的神经网络。

    图2:套索,组套索,稀疏组套索应用于单个权值矩阵的对比

    B 组级稀疏性的图形解释

    当式(2)的第一项为凸函数的时候,组套索惩罚有一个非常有趣的几何解释。虽然由于隐层的存在,神经网络的模型非凸,因此这不是神经网络的情况,但这种解释确实有助于可视化为什么这个公式为解提供了组稀疏性。在这里我们将简要描述以便理解这个原因。

    对偶理论的标准论证表明试(2)中的凸损失函数可以被转化成如下形式

    arg 1Ni=1NL(di,f(xi))arg{operatorname{}{ frac{1}{N}sum_{i = 1}^{N}{Lleft( mathbf{d}_{i},fleft( mathbf{x}_{i} ight) ight)}}}

    subject to   R(w)μλ ext{subject} ext{to} ext{ }Rleft( mathbf{w} ight) leq mu_{lambda} (8)

    式中标量μλmu_{lambda}的精准度主要取决于λlambda,并由于没有对偶间隙能保证其存在。在机器学习中,这有时候也叫做伊万诺夫规则化,以纪念俄罗斯数学家Nikolai V. Ivanov。对于一个使式(8)中约束有效的小的μλmu_{lambda}值,可以看出L(w)L(mathbf{w})等于L(w)L(mathbf{w}^{*})的点集与B={w:R(w)μλ}B = {mathbf{w}:Rleft( mathbf{w} ight) leq mu_{lambda}}相切。正因如此,将不同惩罚行为可视化的一种经验方法是考虑它们对应的BB的形状。图3展示了一个简单问题中三个不同参数下l2l_{2}范数,套索和组套索分别对应的图形。对于权值衰减惩罚,BB的形状是一个球型(如图3a),它不利于任何稀疏的解决方案。相反,套索惩罚形成一个三维菱形(如图3b),其顶点位于坐标轴上并对应于稀疏解的所有可能组合。最后,考虑组套索惩罚(如图3c)所形成的形状,其中我们设定一组包含前两个变量,另一组仅包含第三个变量。该形状具有无限多个奇点,对应于同时在第一和第二个变量或在第三个变量上具有零的解。

    图3:三个不同正则化项的等值面

    4 实验结果

    A 建立实验

    在这一章,我们根据不同的分类标准评估我们的算法。特别地,我们先从一个简单的玩具数据集开始说明它的一般行为,然后转向更复杂的实际应用的数据集。在所有情况下,我们都使用ReLu函数作为隐层的激活函数:

    gk(s)=max(0, s), 1kHg_{k}left( s ight) = maxleft( 0, s ight), 1 leq k leq H (9)

    我们对不同的类使用标准的独热编码,并使用softmax函数作为输出层的激活函数。若smathbf{s}表示softmax的输入值,则第ii个输出可通过以下公式计算:

    gH+1(si)=exp{si}j=1Oexp{sj}g_{H + 1}left( s_{i} ight) = frac{expleft{ s_{i} ight}}{sum_{j = 1}^{O}{exp{ s_{j}}}} (10)

    神经网络的权值根据文献[40]所描述的方法初始化,并通过Adam方法进行训练,它是一种自适应步长和动量相结合的随机梯度下降算法。在所有情况下,Adam算法的参数都保持其文献所描述的默认值,小批量的尺寸则取决于问题的维度而变化。特别地,在式(2)中我们使用标准交叉熵代价函数

    L(d,f(x))=i=1Odilog(fi(x))Lleft( mathbf{d},fleft( mathbf{x} ight) ight) = - sum_{i = 1}^{O}{d_{i}log(f_{i}(mathbf{x}))} (11)

    并为正则化惩罚提供多种选择。数据集的载入、预处理和分割都通过sklearn库来进行。首先,将每个输入列通过仿射变换归一化到[0,1]。然后每次运行,我们随机地选取25%数据集作为测试集,并运行25次求平均。我们用基于Theano框架的Lasagne库训练神经网络。在BSD-2许可证的许可下本实验的代码开源。

    B 使用DIGITS 数据集进行比较

    首先,我们使用一个名为DIGITS 的用于手写数字识别的玩具数据集评估我们的算法。它由1797张8*8的手写数字灰度图像组成,手写数字来自于几十个不同的人。我们分别利用式(3)的权值衰减(记为L2-NN)、式(4)的套索惩罚(记为L1-NN)、式(5)中我们建议的组套索惩罚(记为G-L1-NN)和最后式(7)中它的稀疏化变种(记为SG-L1-NN)来训练我们的网络并作出比较。在所有情况下,我们都使用一个具有两个隐层的简单神经网络,其分别具有40个和20个神经元。我们在优化算法中使用200次迭代,并使用具有300个样本的小批量。当训练结束后,我们设置所有绝对值小于10310^{- 3}的权值为0。

    这个初步测试的目的在于评估当我们改变正则项参数λlambda时从不同惩罚中得到的结果。为此,我们为每个算法从指数范围10j10^{- j}内选择λlambda,其中jj从1到5。有几个关键点可以从结果中发现。首先,如图4a所示,总体上四种惩罚算法的行为和准确性是相似的,因为他们都能在最小化正则项的过程中快速地收敛到最优准确率(略低于100%)。特别从10310^{- 3}开始,他们的结果基本上差不多。图4b显示了我们获得的稀疏度,稀疏度通过零权重相对于连接总数的百分比来计算。L2-NN的稀疏性显然不令人满意,其稀疏性在最高20%到平均0%之间震荡。G-L1-NN的稀疏性低于相应的L1-NN的稀疏性,而SG-L1-NN的结果(图中蓝色虚线)等同或优于所有其他方案。尤其是对于λ=103lambda = 10^{- 3},L1-NN和SG-L1-NN能够移除四分之三的连接,同时由此产生的稀疏性是高度结构化稀疏,能够一次性去除更多的特征(如图4c)和隐层的神经元(如图4d)。

    图4:当取不同正则化系λ=103,j=1,,5lambda=10^{-3},j=1,ldots,5时DIGITS数据集的结果

    由于分类器的输入是图像,因此观察根据算法忽略了哪些特征(对应原图的像素点)是非常有趣的,以进一步验证我们的想法。图5展示了一次代表性的运行。在图5a中我们看到系统输入的表示数字8的图像。我们可以看到数字几乎占据了整个矩形的高,尽管在数字左右都有空白区域,这在区分的角度并没有关系。在图5b中,我们通过绘制连接输入层到第一个隐层的权值的累积强度来显示G-L1-NN(非常类似于SG-L1-NN)的结果,其中白色表示该输入节点的所有输出连接都被设置为0。我们可以看到,该算法通过忽略图像最外侧左侧和右侧区域相对应的所有像素,从而实现我们的预期效果。

    图5:可视化的DIGITS数据集特征选取

    C 使用大规模数据集进行比较

    我们现在在三个更正式的数据集上评估我们的算法,这需要使用更大更深的网络。表1中给出了它们的特点、模式数量和输出类别。第一个数据集可以从UCI 存储库下载,其它两个可以从MLData 存储库下载。在SSD数据集中,我们希望根据从电机驱动信号获得的共48个特征预测电机是否存在一个或多个有缺陷的组件。该数据集由11中不同操作条件下获得的58508个样本组成。MNIST 数据集时一个非常有名的手写数字识别数据库,它由7万幅数字0-9的28*28灰度图片组成。最后,COVER 数据集旨在根据从地图数据中提取的一组52个特征预测森林的实际覆盖类型(例如黄松)。该数据集大约有50万个训练样本,但只有7个可能的类别,而SSD 和MNIST 数据集分别有11个和10个类别。

    表1:数据集的简要描述

    表2给出了三个数据集的具体网络结构、正则项系数和小批量的尺寸。一般来说,我们对所有算法使用相同的正则化系数, 因为它被表明在网络分类的准确性和稀疏性方面提供了最佳结果。表2中的网络结构设计基于对之前工作的分析,其中x/y/z 表示网络具有维度分别为x 和y 的两个隐层和维度为z 的输出层。我们强调我们的重点是比较不同的惩罚项,根据不同的网络结构和正则项能获得非常相似的结果。此外,实验中我们只考虑SG-L1-NN,因为在前面的章节已经表明它始终优于简单的G-L1-NN。

    表2:实验中使用的神经网络的参数

    表3给出了这些实验的结果,包括平均训练准确度和测试准确度、训练时间、网络的稀疏性和最终每层隐层神经元的数量。关于训练时间,较小的SSD 数据集的结果可以在Intel Core i3 @3.07GHz和4GB RAM 上获得,而MINST 和COVER 数据集的结果是在Intel Xeon E5-2620 @2.10GHz,8GB RAM 和Nvidia Tesla K20c配合CUDA 获得的。我们发现三种算法在测试准确度方面差不多,SG-L1-NN在MNIST 数据集上的精确度损失可以忽略不计。然而,SG-L1-NN获得的网络非常稀疏,比前两个算法获得的网络更加紧凑。以MNIST 数据集为例,该算法从输入向量中平均移除了200个以上的特征(相比之下,L1-NN仅移除约126个)。而且,最终的网络总计只有146个隐层神经元,而L1-NN为243个,L2-NN为654个。同样在这种情况下,我们也可以直观地观察算法特征选择的结果,如图6。在图6a中展示了一个输入模式的例子(对应数字0),图6b则绘制了输入层输出权值的累积强度。与DIGITS 的例子不同,由于我们所提出的的公式有效地忽略特征,这个例子中的图像在所有侧面上都具有大的白色边缘,如图6b。

    表3 各数据集的平均实验结果

    图6:可视化的MNIST数据集特征选取

    最后观察训练所需要的时间。当代码在CPU 上运行时,SGL 惩罚的计算速度实际上快于l2l_{2}范数和l1l_{1}范数,而使用CUDA 时它的速度略慢(虽然是小幅度的)。其原因是需要计算公式(7)中每个组的两个平方根运算。这种差距可以通过在GPU 上利用几个选项来加快数学运算(以牺牲精度为代价),例如在Nvidia CUDA 编译器中使用"-prec-sqrt"标志。

    总体而言,本节中的结果显示了稀疏组套索惩罚可以很容易地获得稀疏度高、神经元数量少(包括输入层和隐层)的神经网络,同时不产生准确性损失或产生的损失可以忽略不计。

    5 相关作品

    在结束我们的论文之前,我们将介绍我们在引言中简要提及的一些相关作品以突出一些共同点和差异。近年来在训练过程中降低网络复杂性的方法意识备受关注。例如利用dropout方法随机删除一些神经元连接;跳过一整个随机深度的连接层;文献[39]则介绍了将l1l_{1}惩罚应用于神经元激活函数以便进一步激发其稀疏性的方法。但是,这些方法仅能用于训练阶段的网络的简化,而在预测阶段依然需要使用完整的网络。因此他们与我们在这里讨论的内容只有一点点相关。

    第二类相关的作品将修剪方法分组,所有这些修剪方法都可以用来简化训练得到的网络。历史上,实现这一目标最常用的方法是由LeCun引入的OBD方法,通过测量与最优代价函数的二阶导数相关的"显著性"来移除连接。其他方法需要计算每个神经元对错误的敏感性,以便选取最优的一个神经元子集来删除。最近,Han等人引入了非常流行的两步学习过程。在这种方法中,神经网络期初通过l2l_{2}惩罚训练以得出哪些连接是"重要"的,然后将那些不重要的连接,即所有低于阈值的连接设置为零,并在保持这些连接值不变的情况下继续训练网络。迭代地反复使用这一过程也可以进一步减小网络的体积。然而,这些方法都不符合我们在引言中所考虑的内容,即它们都需要单独的修剪过程,而不能直接作用于神经元级,且可能会在修剪阶段进行一些启发式假设。例如OBD 方法建立在对角近似上,说明修改多个权值导致的误差变化可以通过相加每个权值的变动来计算。

    最后一类方法对学习最佳拓扑结构不感兴趣,因为它可以减少网络的实际参数数量或存储需求。这类方法中最常见的算法是低秩近似方法,它将一个权值矩阵WkRLk×Lk+1mathbf{W}_{k} in R^{L_{k} imes L_{k + 1}}利用低秩分解替换:Wk=ABmathbf{W}_{k} = mathbf{ ext{AB}}ARLk×rmathbf{A in}R^{L_{k} imes r}BRr×Lk+1mathbf{B in}R^{{r imes L}_{k + 1}},其中rr自定义。然后算法对分解得到的矩阵进行优化。秩的选择能够在压缩率和准确度之间达到平衡。举例说明,如果我们希望以pp为因子压缩网络,则可以选择

    r<pLkLk+1Lk+Lk+1r < frac{ ext{pL}_{k}L_{k + 1}}{L_{k} + L_{k + 1}} (12)

    但是,这种近似不能保证有效地工作,并且可能会由于对rr不好的选择导致非常差的结果。

    6 总结

    在本文中,我们介绍了一种在优化神经网络权重的同时修剪网络和选择特征的方法。我们的稀疏组套索惩罚可以在大多数软件库中有效的(并且容易地)实现,且与标准的l2l_{2}l1l_{1}正则化相比开销更加小。与此同时,我们的实验对比显示其在获得高度紧凑型网络上的卓越性能,并在嵌入式设备的存储要求和功耗方面有明显的节约。

    我们希望在未来主要探索两大方向:首先,研究l1l_{1}正则化公式(起源于凸代价函数情况)与式(2)中的非凸代价函数之间相互作用的问题,这在优化文献中仍是一个开放的方向。研究使用非凸稀疏正则化变量的可能改进方法是有趣的,例如使用p范数。或者,我们可以通过迭代求解对原始非凸问题的凸近似来改进式(4)和(5)的稀疏行为,例如利用文献[49]中介绍的技术,就先我们在之前关于半监督支持向量机[50]的工作中所作的那样。

    然后,我们有兴趣探索用于其他类型神经网络的组套索公式,包括卷积神经网络和递归神经网络。举例说明,我们正在积极扩展我们以前在储水池计算体系中的稀疏正则化,其中表明稀疏连通性可以帮助创建神经元簇,从而导致从循环层中提取异构特征。

  • 相关阅读:
    XAMPP安装过程中,出现的问题
    Javascript的数据类型和转换
    Vue组件之间的通信
    vue2.0在页面中自定义组件模块,以及页面与组件之间的数据传递
    本地起一个https服务器
    开发人员初始化操作
    添加环境变量
    公钥~gitlab~免密登录
    class继承随笔
    阿里云ECS随笔
  • 原文地址:https://www.cnblogs.com/sssaltyfish/p/10656761.html
Copyright © 2011-2022 走看看