在本文中,我想谈一谈机器学习自动化的主要困难,它的性质和优点,并考虑一种更灵活的方法,该方法可以使您摆脱某些缺点。
从定义上说,自动化是Mikell P. Groover的一项技术,通过该技术可以以最少的人力参与来执行流程或过程。长期以来,自动化一直可以提高生产率,这通常可以降低单位产品的成本。自动化方法及其应用领域正在迅速改善,并且在过去的几个世纪中,它已从简单的机制演变为工业机器人。自动化开始不仅影响体力劳动,而且也影响智力,涉及相对较新的领域,包括机器学习-自动化机器学习(auto ml,aml)。同时,机器学习自动化已经在许多商业产品(例如Google AutoML,SAP AutoML等)中找到了其应用。


免责声明本文并不伪装成该领域的教条,而是作者的愿景。
自动化机器学习
数据处理和机器学习领域的任务与由于系统的复杂性而出现的许多因素相关联,并使它们的解决方案变得复杂。其中包括(根据Charles Sutton所述):- 不确定性和不确定性的存在会导致缺乏对数据的先验知识和所需的依存关系。因此,研究要素始终存在。
- “一千割死了。” 实际上,在建立用于数据处理,分析和后续建模的管道时,您必须做出许多大小决定。例如,是否有必要对数据进行规范化(如果需要),该方法应具有什么方法以及应具有哪些参数?等等。
- 由于不确定性导致的反馈回路的存在。沉浸在任务和数据中的时间越长,您对它们的了解就越多。这导致需要退后一步,并对现有的处理和分析机制进行更改。
- 另外,通过机器学习算法获得的模型的结果仅是现实的近似值,即 显然不准确。
因此,获得数据处理和分析的完整流水线的过程可以被认为是复杂的系统(即,复杂的系统)。一方面,这些因素的存在使机器和深度学习问题及其自动化的解决方案复杂化。另一方面,不断增长的和可访问的计算功能使我们可以将更多资源附加到任务上。
根据通用的CRISP-DM标准,与数据分析相关的项目的生命周期包含六个主要阶段:理解业务任务(业务理解),理解和研究数据(数据理解),处理数据(数据准备),建模(建模),质量评估(评估)和实际应用(部署,应用)。实际上,今天并非所有这些步骤都可以有效地自动化。大多数作品或现有的库(h2o,auto-sklearn,autokeras)都专注于建模自动化,部分关注质量评估。但是,将方法扩展到数据处理自动化可以涵盖更多阶段(例如,已在Google AutoML服务中应用)。问题的提法
可以通过多种方法解决与老师一起进行机器学习的任务,其中大多数方法被简化为使损失函数最小化 或最大化似然函数 为了获得参数的估计 基于可用的样本-训练数据集 :要么 θ^m=argminθm(J(yt;θm))哪里 θm-受过训练的模型参数(例如,回归时的系数)。为了不将自动化仅限于建模,可以将方法的范围扩展到管道的其他阶段。例如,要自动决策要采用的数据处理方法,选择模型或其组合以及选择接近最佳的超参数。我们用一个简单的示例来说明所描述的内容,在该示例的框架中可以选择两种数据处理方法(标准缩放器和分位数缩放器)和两种模型(随机森林和神经网络),包括选择一些超参数。选择结构可以表示为树:
所做的每个选择都是系统的一个参数,而树本身成为可能的参数的空间。对问题的这种观察使我们能够提升到抽象水平,并制定获得最终管道的任务,其中包括将数据处理方法,模型及其参数作为最小化或最大化功能的过程:ω^=argmaxω(L(yt,ycv;ω))要么 ω^=argminω(J(yt,ycv;ω))哪里 ω-非学习参数, ycv-延迟控制选择(用于交叉验证的数据集)。这种学习自动化的主要优点包括:- 在单个优化过程的框架内,只有一个输入点时,可以选择大量系统参数。
- 自动化例程,可将研究人员或开发人员免于“成千上万的损失”。
- 通过其自动化使机器学习“民主化”,这使许多非专业人士可以应用许多方法。
但是,自动化并非没有缺点:- 随着参数数量的增加,它们的空间也随之增长,这迟早会导致组合爆炸,这需要开发算法并增加计算资源的数量。
- 全自动方法并不总是基于“黑匣子”原理提供灵活的解决方案,从而降低了对结果的控制。
- 参数空间ω是非线性的并且具有复杂的结构,这使得优化过程复杂化。
从自动化到半自动化
试图保留尽可能多的优点,同时又避免了许多缺点,特别是由于希望获得对解决方案的额外控制,我们来到了一种称为半自动ml的方法。这是该领域中一个相对较新的现象,可以通过对Google趋势的快速分析间接证明:要
实现这种折衷,可以有条件地与汽车变速器中的各种变速方法(即变速方法,而不是其内部结构)进行比较:在内部项目的工作过程中,我们创建了一个工具,使我们能够解决基于混合功能声明式配置系统的半自动机器学习问题。这种配置方法不仅使用标准数据类型,而且还使用常见的现代库中的功能进行机器和深度学习。该工具使您可以自动创建简单的数据处理方法,功能的基本设计(功能工程),模型及其超参数的选择,还可以在Spark或GPU集群上执行计算。该清单使本文前面给出的示例正式化。该示例使用了来自sk-learn和hyperopt的简单模型(甚至设法对开源代码做出了微不足道的贡献)来进行参数分配和优化。'preprocessing': {
'scaler': hp.choice('scaler', [
{
'func': RobustScaler,
'params': {
'quantile_range': (10, 90)
}},
{
'func': StandardScaler,
'params': {
'with_mean': True
}}
]),
},
'model': hp.choice('model', [
{
'func': RandomForestClassifier,
'params': {
'max_depth': hp.choice('r_max_depth', [2, 5, 10]),
'n_estimators': hp.choice('r_n_estimators', [5, 10, 50])
}
},
{
'func': MLPClassifier,
'params': {
'hidden_layer_sizes': hp.choice('hidden_layer_sizes', [1, 10, 100]),
'learning_rate_init': hp.choice('learning_rate_init', [0.1, 0.01])
}
},
])
这样的半自动系统,包括配置机制,使得在某些类型的模型更适合解决任何问题的情况下,可以创建预先准备的标准方案。这些尤其可以包括信用评分,但是,这一步骤需要对广泛的类似任务进行额外的研究。同样,在研究搜索机制时,可以通过同时考虑训练样本和交叉验证样本中优化函数的值来自动保持偏差-方差折衷困境中的平衡。结论
在实践中完全缺乏自动化的情况非常罕见,因为即使枚举一个周期中一个超参数的值也已经迈向了自动化。同时,今天实际上也无法实现整个管道建设过程的完全自动化。因此,在大多数现代项目的开发中,有意识或无意识地应用了自动化方法。由于自动执行例程,半自动机器学习的使用可以更有效地利用研究人员或开发人员的资源,而不会占用工作灵活性的重要部分。如我们所见,提出的解决方案需要一个人的参与,从而限制了可能的系统参数的空间。此外,引入基于配置系统获得的标准方案不仅允许使用部分自动化方法,而且还可以使用不需要人工参与的完整方案。