慕测科技|DeepPerf:深度稀疏神经网络对可配置软件的性能预测( 二 )
受到所有最新方法的优点和缺点的启发 , 本文旨在推导一种可以对所有类型的可配置软件系统(即二进制和二进制数字系统)建模并预测系统性能的方法使用少量样品以较高的精度 。 与 CART / DECART 相似 , 为解决功能交互问题 , 本文还将软件性能预测问题视为非线性回归问题 , 即 , 性能是配置选项的非线性函数 。 但是 , 在本文的工作中 , 本文建议使用带有非线性隐藏层的深度前馈神经网络(FNN)来近似此非线性性能函数 。 深度 FNN 是计算单元(神经元)的多层堆栈 , 第一层接受输入 , 最后一层产生输出 , 中间层(隐藏层)连接输入和输出层 。 通过深层 FNN 近似性能函数的想法是可能的 , 因为已经证明具有隐藏层的 FNN 提供了通用框架 , 即具有线性输出层和至少一个具有某些特定激活函数和足够数量的隐藏层的 FNN 。 从布尔函数到连续实值函数 , 神经元的数量可以近似各种函数类 。
使用深度 FNN 对软件性能进行建模时的第一个挑战是 , 深度神经网络通常需要大量训练数据才能达到较高的预测精度 , 但是 , 对于软件性能预测问题 , 本文的测量数量非常有限 。 为了解决这个问题 , 本文需要将一些有关软件性能的先验知识整合到网络体系结构中 。 做到这一点的一种好方法是告诉网络参数的样子 , 即参数是遵循特定分布还是具有特殊属性 。 对于可配置的软件系统 , 已经观察到软件性能功能通常非常稀疏(即 , 只有很少的配置及其相互作用对系统性能有重大影响) 。 基于此观察 , 建议使用深度稀疏的 FNN 来建模软件性能 。 为了构造深度稀疏的 FNN , 本文将结合正常的深度 FNN 和稀疏正则化技术 , 例如 L1 正则化 。
使用深度稀疏 FNN 的第二个挑战是它们需要许多超参数(例如 , 层数 , 神经元数量 , 正则化超参数等) 。 这些超参数需要进行优化调整 , 以使网络获得较高的预测精度 。 实际上 , 这些超参数可以由人类专家手动优化 , 也可以通过某些调整方法自动优化 。 由于并非总是可以在每次本文需要预测软件性能时找专家来调整超参数 , 因此需要自动调整 。 但是 , 即使使用高效的自动调整方法 , 通常也要花费数小时或数天才能找到最佳的超参数集 , 因为超参数搜索空间(即该空间包含超参数的所有可能组合)非常大 。 为了克服这一挑战 , 在这项工作中 , 本文还为本文的深度稀疏 FNN 提出了一种超参数搜索策略 , 这样 , 它需要花费更少的计算时间 , 同时仍然可以获得良好的超参数集 , 从而可以提高预测精度 。
本文已将拟议的性能预测方法作为工具 DeepPerf 实施 , 并在多达 1031 个配置且来自不同应用程序域的 11 个现实可配置软件系统上进行了评估 。 实验结果表明 , 与最新方法相比 , 对于大多数系统 , DeepPerf 可以以较小的样本量实现更高的预测精度 。 对于二进制软件系统(即具有二进制配置选项的系统) , 对于所有样本大小 , DeepPerf 在 6 个系统中有 3 个在统计上优于 DECART(预测二进制软件系统性能的最新方法) , 并且在其他 3 个系统上类似 。 对于二进制数字软件系统(即同时具有二进制和数字配置选项的系统) , DeepPerf 在 5 个系统中有 4 个优于 SPLConqueror(一种用于预测二进制数字软件系统性能的最新方法) 。 适用于所有样本量 。
用于软件性能预测的深层前馈神经网络
A.深度神经网络的设计
1)设计原理:针对特定问题选择 FNN 的体系结构时 , 主要考虑因素是选择深度(即 , 隐藏层的数量)和宽度(即 , 每层神经元的数量) 。 由于本文的方法是使用 FNN 来表示软件系统的性能功能 , 因此本文关心的问题是本文应该选择浅 FNN(每层有一个隐藏层并且有大量神经元的网络)还是深 FNN(具有大量隐藏层且每层神经元数量较少的网络) 。
如通用逼近定理所述 , 具有一个线性输出层和一个具有足够神经元的隐藏层以及合适的激活函数(例如 , S 型 , ReLU)的浅层 FNN 可以在任何水平上近似从一个有限维空间到另一个维空间的任何连续函数 。 准确性 。 但是 , 为了达到较高的准确性 , 在最坏的情况下 , 具有一个隐藏层的浅层 FNN 所需的神经元数量是输入的指数数量 。 例如 , 可以认为使用傅里叶学习表示布尔性能函数类似于使用浅层 FNN , 该浅层 FNN 具有一个隐藏层和每层大量神经元(2n 个神经元 , 其中 n 是配置选项的数量) 。 不幸的是 , 在实践中 , 不能保证本文可以训练具有大量神经元的神经网络 。 原因是:(1)使用的优化算法可能无法找到与所需函数相对应的参数值;(2)训练算法可能选择了错误的函数 。 此外 , 训练大量参数会花费大量的计算时间和内存 。 这被称为维数问题的诅咒 。
推荐阅读
- 2020|影谱科技入选“2020中国AI商业落地价值潜力100强榜单”
- 行业互联网|眼控科技聚焦航空气象报文,人工智能助推编发自动化
- 行业互联网|金风科技中标哈萨克斯坦札纳塔斯二期100MW风电项目
- 无人科技,电池技术|盘点几种常见的无人机电池
- 行业互联网,智慧医疗|商汤科技创“心”升级,探索“联邦学习”入选ECCV
- 行业互联网|创盈Charmwin惊艳亮相2020上海美博会,打造“光”科技健康护肤新风尚
- 科技圈|集成灶两大品牌厨壹堂教你解锁三伏天厨房的正确打开方式
- 黑科技|花两万块钱买一台大法电视是一种怎么样的体验?
- 北京|北京嘀嘀无限科技发展有限公司因涉嫌非法聘用外国人被行政处罚
- 和讯科技|乐视退最后交易日报0.18元/股 明日将被正式摘牌
