Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

参与高璇 路雪

从超参数到架构,一文简述模型优化策略

本文从动态超参数、自适应架构和教师学生方法三个方面介绍了模型优化策略。

模型可以在训练过程中通过修正参数而逐步建立。这在迁移学习中最为常见,在这种环境中,我们试图将现有模型的知识应用到新领域或新任务中。这是持续学习中更常见的问题,也是一个显而易见的应用。然而,即使有预置的数据集,网络拓扑的递增约束也会为正则化带来益处。

动态参数

在每个 epoch 中参数都被更新的模型最容易被修改。在这种情况下,我们指的不是那些与网络拓扑相关的参数,例如层数或维度。在训练过程中有许多机会调整拓扑,但是模型为了再次得到合理的架构通常需要大量的再训练,这在记忆网络(memory network)中已得到清晰的证明 [1]。如果我们转而关注与正则化项和门相关的权重,我们就可以逐步学习到架构,无需频繁的再训练来适应出现根本改变的拓扑。

Dropout 设置

Hinton 等人 [2] 将 dropout 描述为:通过防止完美拟合数据的特征检测器的共适应(co-adaptation)来减少过拟合。在这种解释中,共适应的神经元簇同时被激活。随机抑制这些神经元迫使它们各自发展。

在标准 dropout 中,这些共适应神经元在所有训练阶段都有相同的问题。然而,Morerio 等人 [3] 设想在训练初期,共适应可能是网络的最优自组织的开端。从这个角度看,这些结构是训练后期出现过拟合的一大威胁。因此作者介绍了一个增加 dropout 率的参数调度(hyperparameter schedule)。据我所知,这是唯一发表的自适应正则化提议。

缓和网络(Mollifying network)

缓和网络 [4] 是目前将增量控制数据分配的技术和增量控制模型表示能力的技术结合起来的唯一尝试。缓和网络通过模拟退火来逐渐降低数据温度,同时修改各种参数以实现更长距离的依赖。在 LSTM 中,将输出门设置为 1,输入门为 1/t,遗忘门为 1−1/t,t 是退火时间步。通过这个系统,LSTM 最初表现为词袋模型,逐渐增加了在每个时间步处理更多上下文的能力。

缓和网络对每一层使用不同的数据调度,较低层的噪声退火快于较高的层,因为较低层的表示被设定为学得更快。

自适应架构

训练期间最难修正的参数可能是模型架构本身的拓扑参数。尽管如此,深度学习文献包含了在训练期间适应模型架构的技术的悠久历史,这些技术通常是对学到参数的回应。这些方法可以通过在训练之初平滑函数来最优化搜索;通过从更简单的模型出发来加快学习速度;或者压缩模型使其更适用于手机或嵌入式设备。这些方法大都可分为两类:通过在训练中增加参数来塑造模型、通过修剪边或节点来压缩模型。

架构生长

最近的一些迁移学习策略依赖于不断生长的架构,这些架构通过为与现有网络 [5、6] 有关的新任务创建全新模块而得到。如果我们的目标是通过添加少量参数来扩大现有网络,那么这个问题就类似传统的非参数学习了,因为我们不需要一开始就明确限制模型空间。

经典的神经网络技术(例如级联相关网络(Cascade Correlation Network)[7] 和动态节点创建(Dynamic Node Creation)[8])随机逐个添加新节点并分别训练。在当今的大型架构和问题上,这种做法非常复杂。此外,这类方法的主要优点是它们适用于小型模型,由于几十年来计算能力的飞跃,现代深度学习开发者不再看重这一目标。用于渐进增长网络的现代技术必须做出两个决定:1) 何时(以及在何处)添加新参数?2) 如何训练新参数

Warde-Farley 等人 [9] 提出在完整训练完网络后将参数大批量加入。增加的形式是将专门的辅助层并行加入现有网络。这些层在类边界(class boundary)上进行训练,而这正是最初的通用模型试图解决的问题。对留出数据集的混淆矩阵进行谱聚类,并将类划分为具有挑战性的子问题,从而选择类边界。

辅助层与原始通用系统并行随机初始化,然后每个辅助层仅基于指定的类分区中的样本进行训练。除了对最后的分类层进行微调外,原始通用网络是固定的。由此产生的网络就是多专家网络,该网络被证明可以改善图像分类问题的结果。

同时 Neurogenesis Deep Learning (NDL) [10] 使自编码器拥有终身学习的能力。这种策略通过在模型遇到异常值时添加神经元来更新自编码器的拓扑结构,模型在异常值处性能较差。这些新参数仅在异常值上进行训练,使得现有的解码器参数以更小的步长进行更新。现有的编码器参数只有在直接连接到新神经元时才会更新。

在引入和训练这些新神经元之后,NDL 使用一种被作者称为「intrinsic replay」的方法稳定网络的现有结构。他们重建了之前见过样本的近似值,并在重建结果上进行训练。

另一个允许终身学习的系统是无穷受限玻尔兹曼机 (RBM) [11]。这一经典 RBM 的扩展通过独特的索引将隐藏单元参数化,表示成一个序列。这些指令通过支持旧节点直到收敛来增强网络增长的顺序,允许系统任意增长。这个方法很有趣,但如何将类似的修改应用到 RBM 的特殊生成结构以外的网络还未可知。

这些增强技术都不支持循环架构。在现代自然语言处理设置中,这是一个致命的限制。然而,这些技术中有一些可能适用于 RNN,尤其是近期训练专门子系统的问题已得到解决 [12]。

架构修剪

最近的许多研究都集中在从训练好的网络中修剪边或整个神经元。这种方法不仅可用于压缩,还有可能提高网络的泛化能力。

修剪边

修剪边而非整个神经元的步骤可能不会减少网络的维度类型。但是会使网络更稀疏,从而有可能节约内存。稀疏网络占用的参数空间更小,因此可能更通用。

Han 等人 [13] 采取的基本方法是,如果权重低于特定阈值,则将其设为 0。这种方法对于压缩非常有效,因为待删除的权重数量很容易通过阈值进行修改。

LeCun 等人 [14] 和 Hassibi 等人 [15] 都基于修剪误差变化的泰勒级数近似(Taylor series approximation)来选择权重。虽然这些方法在较老的浅层网络上是成功的,但是在整个网络上执行这些操作则需要对所有参数计算 Hessian 矩阵,这对于现代的深层架构来说比较麻烦。Dong 等人 [16] 提出了一个更有效的替代方案——在各个层上执行 optimal brain surgery。

修剪节点

修剪全部节点能够减少网络的维数。它可能比选择单独修剪边更快,因为节点数量多于边,这减少了修剪时需要考虑的候选者数量。

He 等人 [17] 通过计算每个节点的重要性,选择从宽度为 d_ℓ的层ℓ上修剪神经元。他们测试了几个重要指标,发现使用「onorm」(即节点激活模式的平均 L1 范数)可以获得最好性能:

Net-trim [18] 同样依赖 L1 范数来增加稀疏性。

Wolfe 等人 [19] 将基于重要性的修剪方法的结果与蛮力法进行对比,蛮力法基于节点对性能的影响而贪婪地选择要牺牲的节点。在蛮力法中,他们在没有每个节点的情况下在测试数据上重新运行了网络,并根据得到网络的误差对节点进行排序。它们的重要性指标是基于节点对性能影响的神经元级泰勒级数近似 [15]。

在测试的第一个算法中,他们根据节点的重要性对所有节点进行排名,然后连续删除每个节点。在第二种算法中,它们在每次节点移除后对剩余节点重新排序,以解释生成然后又被取消的子网络的影响。在第二种情况下,他们发现在 mnist 上训练的网络中可以修剪多达 60%的节点而不会显著降低性能。这与早期观察结果 [20] 相符——网络中的大多数参数是不必要的,它们的影响仅限于生成然后取消它们自己的噪声。这一结果支持这样的观点:反向传播隐性地为给定的任务训练最小网络。

Srinivas 和 Babu [21] 为了减少网络的冗余而进行了修剪,因此他们根据其权重与同层其他神经元的相似度来移除节点。而 Diversity networks [22] 根据其激活模式的多样性进行选择。为了对不同的节点选择进行采样,他们使用了 Determinantal Point Process(DPP)。该技术最小化了采样节点之间的依赖性。他们遵循这一修剪过程,融合被扦插回网络的节点。

这些论文的观察结果中出现了一个有趣的差异。Mariet 和 Sra [22] 发现,他们利用 DPP 在较深的层中采样了更多节点,而 Philipp 和 Carbonell [19] 通过在 2 层网络的较深一层中使用蛮力法修剪了更多节点。换句话说,diversity networks 在更深层保留更多节点,而贪婪的蛮力法从较深层移除了更多节点。这些结果表明这些算法各自结果之间存在根本差异,值得进一步研究。

合并节点

Mariet 和 Sra [22] 发现,如果他们将修剪的节点合并回网络中,那么在基于 DPP 的修剪之后,性能会提高。他们通过调整修剪层中剩余节点的权重来最小化修剪前后激活输出的差异,从而实现了前述现象:

由于 DPP 专注于选择一组独立的神经元,在任何给定的噪声消除系统中为保持现状可能需要至少修剪一个节点,因为这些消除子网络必然存在高度依赖。在这种情况下,噪声消除部分会合并到产生噪声的节点中,反之亦然。这将使合并在 diversity networks 中成为一种特殊的必要组件,但是它仍然可以在不同的修剪算法之后提供一种易处理的再训练替代方法。

参数神经网络

据我所知,修剪和生长策略在一项研究中被结合在了一起。非参数神经网络 (NNN) [23] 将增加神经元与对神经元施加增加稀疏性的惩罚结合起来。对于一个具有 N^L 层的前馈网络,作者引入了两种正则化项,一种是「fan-in」,另一种是「fan-out」:

fan-in 变量惩罚每个神经元输入的 p-norm,而 fan-out 变量惩罚每个神经元输出的 p-norm。在前馈网络中,这两种正则化项均可被添加到具备任意正权重 λ 且 0<p<∞ 的损失函数中,保证目标函数在有限数量的神经元收敛

NNN 为调整网络提供了一系列有益的策略。特别是当 p=1 或 2 时,通过加压形成零值神经元,或者 fan-in 或 fan-out 值为 0 的神经元,来增加稀疏性。每隔一段时间,我们就可以移除这些零值神经元。同时,我们可以在网络的不同位置引入新的零值神经元正则化项确保目标函数能够收敛,所以我们可以在性能开始下降的任意点停止添加神经元

然而,这种方法存在明显的问题。第一个限制是这个正则化项不应用于任何循环网络。这种约束降低了该策略在许多自然语言领域中的有用性,在这些领域中,RNN 的性能最好。

该方法的另一个缺点是:通过将输入或输出权重向量初始化为 0 并随机初始化其他相关向量,来插入零值神经元。因此,我们每隔一段时间就重新训练整个网络,而不是智能地初始化和训练新节点来加速收敛。虽然这种方法可以收敛到最佳数量的节点,但它无法加速训练或专门化新节点。

最后,这种方法为创建最终的密集网络增加并移除了所有神经元。所以它失去了因修剪权重而得到的较稀疏网络的潜在正则化优势。

教师学生方法

通过新的训练,还可以根据现有网络生成更大或更小的模型。在研究任何自适应架构时,重要的是将使用网络之前状态的基线模型(「教师」)与具有新架构的「学生」网络进行比较。

在蒸馏学习(distillation learning)[24] 的特殊情况下引入教师学生方法,即使用教师网络的输出层来代替真正的标签。蒸馏(distillation)是一种以高性能实现大型集成压缩或昂贵分类器压缩的技术。较小的网络是通过一个目标函数来训练的,这个目标函数将应用于真实标签的损失函数交叉熵结合起来,这个网络会和较大的教师网络的 logit 层进行对照。除压缩以外,教师学生方法对域适应技术也很有效 [25],这表明它对于适应数据调度的新时间步可能会很有效。

原文链接:http://nsaphra.github.io/post/model-scheduling/

工程深度学习优化算法
3
相关数据
深度学习技术

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

混淆矩阵技术

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。矩阵的每一行表示预测类中的实例,而每一列表示实际类中的实例(反之亦然)。 这个名字源于这样一个事实,即很容易看出系统是否混淆了两个类。

范数技术

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

权重技术

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

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

调度技术

调度在计算机中是分配工作所需资源的方法。资源可以指虚拟的计算资源,如线程、进程或数据流;也可以指硬件资源,如处理器、网络连接或扩展卡。 进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态,允许多位用户有效地同时共享系统资源,或达到指定的服务质量。 see planning for more details

参数技术

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

收敛技术

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

损失函数技术

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

谱聚类技术

在多元统计和数据聚类中,谱聚类技术利用数据相似度矩阵的谱(特征值)在较少维度聚类之前执行降维。 相似性矩阵作为输入提供,并由对数据集中每对点的相对相似性的定量评估组成。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

词袋模型技术

词袋模型(英语:Bag-of-words model)是个在自然语言处理和信息检索(IR)下被简化的表达模型。此模型下,像是句子或是文件这样的文字可以用一个袋子装着这些词的方式表现,这种表现方式不考虑文法以及词的顺序。最近词袋模型也被应用在电脑视觉领域。

专家网络技术

专家网络建立在专家系统(expert system)的基础之上,它的本质是一个事件驱动性的(event-driven)神经网络。与普通神经网络不同,专家网络的线性和非线性处理更加复杂,因为它以知识库(knowledge base)和推理机(inference machine)为基础。根据知识库构造一个推理网络,用专家系统的推理规则(inference rule)定义网络节点的线性和非线性处理函数。知识库系统的主要工作是搜集人类的知识,将之有系统地表达或模块化,使计算机可以进行推论、解决问题。推理机是由算法或决策策略来进行与知识库内各项专门知识的推论,依据使用者的问题来推得正确的答案。因此,专家网络初始的拓朴结构由知识库确定,网络的动态性则由推理机确定。

目标函数技术

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

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

神经元技术

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

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

受限玻尔兹曼机技术

受限玻尔兹曼机(英语:restricted Boltzmann machine, RBM)是一种可通过输入数据集学习概率分布的随机生成神经网络。RBM最初由发明者保罗·斯模棱斯基于1986年命名为簧风琴(Harmonium),但直到杰弗里·辛顿及其合作者在2000年代中叶发明快速学习算法后,受限玻兹曼机才变得知名。受限玻兹曼机在降维、分类、协同过滤、特征学习和主题建模中得到了应用。根据任务的不同,受限玻兹曼机可以使用监督学习或无监督学习的方法进行训练。受限玻兹曼机也可被用于深度学习网络。具体地,深度信念网络可使用多个RBM堆叠而成,并可使用梯度下降法和反向传播算法进行调优。

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