【学习笔记】自动化机器学习

概念

自动化机器学习要解决的问题是,针对特定的一类或若干类机器学习任务,在没有人类专家干预且计算资源有限的条件下,自动化地构造机器学习算法流程。机器学习算法流程包括根据数据建立算法模型、算法效果评估、不断优化算法效果等。

研究方向包括:自动化特征提取、自动化模型选择、自动化模型参数调优、自动化模型结构搜索、自动化模型评估、元学习、迁移学习等。

自动化调优

机器学习模型的选择和超参数的指定统称为机器学习模型的配置。对于一个给定的机器学习问题和一个数据集,我们可以配置一个具体的机器学习模型,然后在这个数据集上训练并拿到测试效果指标。如果把一个具体的机器学习模型的配置记为 λ \lambda λ(模型类型以及模型的超参数取值等),所有可能的配置参数空间记为 Λ \Lambda Λ,效果指标记为 f ( λ ) = L ( λ , D train  , D valid  ) f(\lambda)=\mathcal{L}\left(\lambda, \mathcal{D}_{\text {train }}, \mathcal{D}_{\text {valid }}\right) f(λ)=L(λ,Dtrain ,Dvalid ),则要优化的问题可定义为 λ ∗ = argmax ⁡ λ f ( λ ) \lambda^{*}=\operatorname{argmax}_{\lambda} f(\lambda) λ=argmaxλf(λ),其中 f ( λ ) f(\lambda) f(λ)是要优化的目标函数, λ ∗ \lambda^{*} λ是模型的最优配置。

通常来说,机器学习模型配置的优化目标函数是一个黑盒函数,因此大多数算法应用者会依据对数据集或业务场景的领域知识、对机器学习算法的理解以及直觉来指定一组或者尝试少量组模型配置进行训练并验证,然后选择一个最优的。当计算资源相对充足,同时对效果指标有较高追求时,自动化调优的方法变得可行。

网格搜索

网格搜索把模型的配置参数空间 Λ \Lambda Λ划分成网格,然后给模型训练、验证程序加一个最外层循环,在此循环内遍历所有网格点并训练得到效果指标,最后挑出效果指标最优的那个配置。通常配置参数有种类型(算法种类、激活函数种类)、整型(网络层数、神经元个数)和连续型(学习率、正则化项系数)。对于种类型参数,只需按种类遍历即可;对于整型和连续型参数,可以采取均匀划分或对数均匀划分。

随机搜索

随机搜索是在模型的配置参数空间 Λ \Lambda Λ内进行随机采样,然后训练验证,通过多次尝试得到最优的配置参数。随机搜索可以在有限的计算资源下,通过调节采样率覆盖更大的搜索空间,不会受到组合爆炸的限制。

贝叶斯优化

贝叶斯优化是,先随机尝试一些配置参数 λ 1 , λ 2 , . . . , λ n \lambda_{1},\lambda_{2},...,\lambda_{n} λ1,λ2,...,λn,并训练验证得到效果指标 f 1 , f 2 , . . . , f n f_{1},f_{2},...,f_{n} f1,f2,...,fn;然后根据这些 f ( λ ) f(\lambda) f(λ)的采样值,通过贝叶斯公式推断出 f f f在任意 λ \lambda λ下的后验概率分布 p ( f ∣ λ ) p(f|\lambda) p(fλ);根据这个后验分布可以去选择一个在当前已知信息下最优的 λ ∗ \lambda^{*} λ作为下一次训练验证尝试的配置参数。
贝叶斯优化是一个顺序优化的过程,两个关键步骤分别是计算 f ( λ ) f(\lambda) f(λ)的后验分布和在后验分布下寻求最优的 λ ∗ \lambda^{*} λ。第一个步骤需要对 f ( λ ) f(\lambda) f(λ)进行统计建模,常见的建模方法有高斯过程回归、随机森林、树形Parzen估计和深度神经网络;第二个步骤需要将后验分布变换成一个可优化的目标函数,这个目标函数称为获得函数。

神经网络架构搜索

神经网络架构搜索(NAS)可以在一定的可选范围内选择适用的网络架构,也可以在科研工作中搜索和设计新颖的网络架构。NAS的搜索范围包括网络的拓扑结构(网络的总层数和连接方式)、卷积核的大小和种类、时序模块的种类、池化的类型等。在定义神经网络架构搜索时,一般会将这些待搜索的网络架构以参数的形式表达出来,形成搜索空间。

一般的NAS算法的工作流程是,定义特定的搜索空间,使用特定的搜索策略在搜索空间中找到某网络架构 A A A,对网络架构 A A A进行评估,反馈结果并进行下一轮搜索。

神经网络架构搜索的研究方向

搜索空间

搜索空间是网络架构的定义域,一个良好的搜索空间是NAS的基础。基本的链式架构的约束参数主要包括链式架构的总层数、每一层的网络种类以及对应的超参数等。多分支架构考虑到重复的元胞(cell)或块(block)结构,因此产生了基于元胞或块的搜索空间。

搜索策略

搜索策略是NAS的核心,一般分为:

  1. 在将神经网络架构参数化的情况下,很大一部分NAS的问题与神经网络上的超参数自动化调优是等同的。因此随机搜索和贝叶斯优化等方法也可以应用于NAS中。
  2. 演化算法。使用演化算法进行NAS的流程一般是:首先生成一个架构群;每一代演化时,从架构群中随机选出一部分架构,将其中最优者设为亲代架构;对亲代架构进行某些修改,生成子代架构,重新加入架构群中,直至迭代结束或最优架构满足性能标准为止。在此过程中,符合某些条件的架构会被淘汰,从架构群中移除。
  3. 强化学习算法。先定义一个控制器作为强化学习的agent,将生成一个网络架构的过程视为一个动作,将每一轮对搜索出的架构的评估结果作为强化学习的奖励回传给控制器。
  4. 基于梯度的优化算法。可微架构搜索将离散的搜索空间松弛为连续的搜索空间,然后用梯度方法进行优化。相比于强化学习算法和演化算法,可微架构搜索更简单高效。

评估策略

评估策略用来评估搜索出的架构的好坏。由于每生成一个新架构都要进行一次性能评估,而性能评估过程一般计算量巨大,需要先训练网络,因此评估策略一般也是NAS算法的性能瓶颈。围绕着评估策略的大部分工作,其主要目的都是在保持一定准确度的情况下尽可能减少计算量。

一次架构搜索

一次架构搜索是NAS中的一种性能优化方法,基本原理是将整个搜索空间中可能的候选框架都视为一个超级图的子图,这样只需训练一次超级图就可以完成所有子图在验证集上的性能评估。

  1. 设计一个能覆盖所有候选架构的超级架构
  2. 训练该超级架构,使之能用来预测子架构在验证集上的性能
  3. 每选出一个子架构,就用预训练过的超级架构对其在验证集上的性能进行评估(例如将不在这个子架构中的其他部分从超级架构中移除或置零)
  4. 从所有候选子架构中选出效果最好的一个,重新训练并在测试集上得到最终的性能指标

优势

所有架构均分享超级架构的权重,因此只需要训练一次超级架构,就可以直接评估所有架构的性能,大大节约了NAS的整体时间。

劣势

  1. 构建一个满足条件的超级架构并不容易。该超级架构必须满足一致性条件,即从超级架构中移除某些不重要的部分后不会导致其预测结果发送剧烈的变化,同时预训练的超级架构在移除某些部分后的预测结果要与单独训练的子架构保持高相关性
  2. 构建一个超级架构,意味着给候选架构集合在种类和大小上加了一个强限制,缩小了可能的搜索空间
  3. 一次架构搜索采取的评估方法有可能导致在搜索中措施最优解
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值