网站开发PHP程序员招聘,wordpress全站伪静态,网站seo是什么,广州网络推广建站在即将到来的边缘计算时代#xff0c;越来越需要边缘设备执行本地快速训练和分类的能力。事实上#xff0c;无论是手机上的健康应用程序、冰箱上的传感器还是扫地机器人上的摄像头#xff0c;由于许多原因#xff0c;例如需要快速响应时间、增强安全性、数据隐私#xff0…在即将到来的边缘计算时代越来越需要边缘设备执行本地快速训练和分类的能力。事实上无论是手机上的健康应用程序、冰箱上的传感器还是扫地机器人上的摄像头由于许多原因例如需要快速响应时间、增强安全性、数据隐私甚至考虑到盈利能力通常都需要进行本地计算。
无论是以什么方式进行机器学习对于此类设备来说具有异构性、有限的连接和有限的硬件资源是一个持续存在的、我们必须解决的挑战。事实上人们经常面临着矛盾的需求边缘设备必须在本地执行大量的计算、存储和通信同时还要遵守如有限的内存、网络连接和计算的资源限制。这通常是由于时间或功率限制以及增加的数据和可用信息量。
这里我们重点讨论利用基于决策树的 Ensemble 方法进行计算和内存高效的本地即设备上训练和分类这是处理表格数据的实际标准。
基于决策树的 Ensemble 方法
事实上基于树的 Ensemble 方法例如随机森林RF和 XGBoost由于其健壮性、易用性和泛化性经常用于对表格数据进行分类。反过来分类任务通常用作许多应用域中的子例程例如金融、欺诈检测、医疗保健和入侵检测。因此这种方法的效率和精度与效用之间的权衡至关重要。
让我们特别关注随机森林和 XGBoost并了解它们的优势
随机森林可以说是最流行的 bagging 方法它使用数据的随机子样本来生长每个决策树从而生成不同且弱相关的树。然后使用多数票确定分类。随机森林有几个优点包括健壮性、快速训练、处理不平衡数据集的能力、嵌入式特征选择、处理缺失的、分类的和连续的特征以及高级人工分析或法规要求的、任何时候的可解释性。
XGBoost 是一种著名且流行的 boosting 算法它在每次迭代时都会生成一个小的决策树例如具有 8–32 个终端节点。每个这样的树都是为了减少以前树的错误分类。XGBoost 分享了随机森林的大部分优点并且由于其可控偏差通常可以实现更高的精度。
然而这些方法也带来了一些与资源相关的缺点
随机森林往往受内存限制分类速度较慢。此外由于随机森林占用大量内存因此通常无法部署在内存有限的边缘设备上而这些设备通常需要执行分类任务。
XGBoost 模型通常比随机森林需要更少的内存但它们是计算密集型的导致训练速度较慢。
我们解决了随机森林和 XGBoost 的资源消耗缺点。特别的是我们引入了一种新的混合方法该方法继承了 bagging 和 boosting 方法的良好特性具有可比较的机器学习性能同时大大提高了资源效率。
数据集中的冗余
众所周知机器学习模型的资源消耗与用于训练的数据集的大小高度相关。因此减少数据集大小是可取的。因此我们想提出以下问题
数据集中的所有数据实例对于基于树的 ensemble 模型的训练是否同样重要
如果没有我们应该如何在训练期间区分数据实例以节省资源这将如何影响分类
事实上数据集通常包含许多简单的例如 90%数据实例因为它们很容易识别因此很容易分类以及罕见或更独特的数据实例因此更难分类。
直观地说如果在培训之前可以进行这种区分那么应该能够利用这些知识来节省资源而不会对准确性产生重大影响。其中一个想法是在培训期间使用较少的 “简单” 数据实例。面临的挑战是如何制定这样的计划并以有效的方式这样做。
RADE–资源高效的异常检测模型
数据集只有两个类其中大多数实例是正常的或良性的例如 99%。
RADE 以以下方式利用上述观察结果它首先使用整个数据集构建一个小粗粒度模型。然后它使用该模型对用于训练的所有数据实例进行分类。正确分类且具有高度可信度的实例被标记为简单实例通常是大多数正常实例而所有其他实例都被标记为困难实例通常为大多数异常实例。
如图所示RADE 引入了一种高级体系结构只要粗粒度模型及其分类提供了有意义的分类置信水平就可以与不同的分类模型一起使用。
直观地说由于粗粒度模型足以正确分类简单的查询所以我们只剩下困难查询。利用这些我们构建了两个专家细粒度模型用于处理与粗粒度模型的分类结果有关的两种不同情况细粒度模型 1 负责低置信度正常分类和细粒度模型 2 用于低置信度异常分类。这些模型可能具有比粗粒度模型更大的内存占用需求但明显低于基于整体的树模型。
训练效率
如前所述RADE 分两个阶段进行训练。首先使用整个数据集训练粗粒度模型。由于我们使用的是一个小模型所以这个训练阶段相对较快。然后我们使用粗粒度模型对整个训练数据集进行分类并根据所得到的分类和置信度生成两个数据子集用于训练细粒度模型。由于我们只使用训练数据的子集例如 10%训练每个细粒度模型所以这个训练阶段也相对较快。
分类效率
RADE 的分类也有两个阶段。首先根据粗粒度模型对实例进行分类。如果得到的分类置信度较高例如 0.9则完成分类。否则根据粗粒度模型分类结果由其中一个细粒度模型转发查询以进行重新分类。这意味着 RADE 的分类时间等于仅由粗粒度模型提供服务的分类以及由粗粒度和细粒度模型提供的分类时间的加权平均值。直觉上因为目的是为了只通过粗粒度模型例如 90%服务大多数查询平均分类时间预计将比标准的整体模型显著改进。
Duet–资源高效的多类分类模型
RADE 是为二进制分类设计的因此使用两个细粒度模型。就多类分类用例而言扩展 RADE 的体系结构并不是一个可扩展的解决方案因为它需要 K 类的 K 个细粒度模型因此需要一个新的体系结构。
为此我们开发了 Duet。Duet 遵循 RADE 的原则即使用粗粒度模型该模型在整个数据集上经过训练并对简单的查询进行分类。然而与 RADE 不同Duet 只使用单个细粒度分类器该分类器在训练数据集的子集上进行训练并对困难低置信度查询进行分类。
Duet 的高级体系结构如图所示。从本质上讲它使用了两个分类器一个小型 bagging 分类器随机森林提供有意义的分类置信度、受控方差和内存限制另一个 boosting 分类器XGBoost提供受控偏差和计算限制。总的来说与单例分类器相比Duet 引入了一种不同且通常更好的系统 / 机器学习性能的权衡。
Duet 的主要问题是如何确定 boosting 分类器的训练数据子集。
在这种情况下使用 RADE 中的置信度指标是不够的因为我们有一个多维问题。因此我们使用类概率分布向量通过粗粒度模型来确定实例对训练过程的重要性。
对于六个类别的分类任务考虑两个具有相同第一分类置信度的分类结果。第一个在两个类别上的概率几乎相等例如 [0.50.5000,0]第二个在正确类别上概率较高而在所有剩余类别上概率低得多例如 [0.5,0.10.10.1,0.10.1]。显然第一个查询比较困难可能更有利于增强分类器的训练。
为了捕获此属性我们定义了一个新的度量标准–可预测性这是由欧几里得距离函数给出的该函数测量得到的类概率分布向量相对于实例的真实标签与完美分布向量之间的距离。完美分布向量在正确标签即类中的概率应为 1。
请注意可预测性是训练过的 bagging 分类器和训练数据集的具体度量因此是 Duet 训练过程中的一个集成步骤。此外使用可预测性不同于仅依赖于数据集属性的采样方法例如分层采样它保留了每个类的实例百分比。
进一步的潜力
上述设计原则可能适用于其他机器学习领域。虽然 Duet 主要使用可预测性度量来降低训练和分类过程的计算成本但可以使用可预测度度量来减少训练数据集的大小从而降低存储和通信成本。
此外RADE 和 Duet 还可能适用于分布式学习。例如参与方可以联合训练一个粗粒度模型然后使用该模型从本地数据集中选择子集最后使用这些子集训练全局细粒度模型。
这里的挑战是确定参与方选择其子集的标准。例如一种高级方法是使用安全计算来收集有关全局训练数据的一些统计信息。这样的统计数据可能会使每个参与者选择更好的子集总的来说对于细粒度模型的分布式训练这样有更高的训练价值。
内容来源公众号VMware 中国研发中心