没有合适的资源?快使用搜索试试~ 我知道了~
Symbolic DNN-Tuner:基于Python和ProbLog的深度神经网络超参数优化系统
软件X 17(2022)100957原始软件出版物Symbolic DNN-Tuner:一个基于Python和ProbLog的系统,用于优化深度神经网络超参数Michele Fraccarolia,Cheryl,Evelina Lammaa,Fabrizio Riguzziba意大利费拉拉大学工程系,Via Saragat 1,44122 Ferrarab费拉拉大学数学与计算机科学系,Via Saragat 1,44122 Ferrara,Italyar t i cl e i nf o文章历史记录:接收28九月2021 2021年12月14日收到修订版保留字:深度学习概率逻辑规划超参数整定神经元符号积分a b st ra ct深度学习模型在日益复杂的环境中的应用导致了模型本身复杂性的上升。因此,要设置的超参数(HP)的数量增加,并且超参数优化(HPO)算法在深度学习中占据贝叶斯优化(BO)是深度学习模型的HPO的最新技术。BO跟踪过去的结果,并使用它们来构建概率模型,构建HP的概率密度。这项工作旨在通过分析网络在训练和验证集上的结果来改进应用于深度神经网络(DNN)的BO这种分析是通过应用概率逻辑编程(PLP)中实现的符号调优规则来获得的由此产生的系统称为Symbolic DNN-Tuner,逻辑上评估从训练和验证阶段获得的结果,并通过应用符号调整规则,修复网络架构及其HP,从而提高性能。在本文中,我们提出了一般的系统及其实现。我们还展示了它的图形界面和一个简单的执行示例。版权所有2021作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v2.0用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-21-00183法律代码许可证MIT许可证使用Git的代码版本控制系统软件代码语言,工具和服务使用Python,ProbLog,TensorFlow,Numpy,OpenCV,Scikit Optimize,Dash。编译要求、操作环境依赖性Pythion v3.6或更高版本、TensorFlow v2.x或更高版本技术支持邮箱michele. unife.it1. 动机和意义随着深度神经网络(DNN)复杂性的增加,要设置的超参数(HP)的数量也会增加。但是DNN对它们的HP的调整非常敏感。其某些HP的值不正确(即,学习率或批量大小)可以区分好的和坏的训练(以及好的和坏的网络)。由于这些原因,超参数优化算法越来越受到研究者的关注*通讯作者。电子邮件地址:michele. unife.it(Michele Fraccaroli).https://doi.org/10.1016/j.softx.2021.100957调整DNN HP的另一种方法是分析性能网络的(准确度、精度、损耗等)。从这个分析中,可以确定可以应用于选择HP值的动作,以获得具有更好性能的网络。有不同的HPO算法,我们可以将它们分为不同的类别。有穷举搜索算法如网格搜索,进化算法如遗传算法[1]和顺序基于模型的优化(SMBO)[2]算法,如贝叶斯优化(BO)[3第一类中的算法执行蛮力搜索并保证找到最优解。这些算法的问题在于,它们受到维数灾难的影响(要尝试的配置数量是指数w.r.t.)。HP的数量,2352-7110/©2021作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxMichele Fraccaroli、Evelina Lamma和Fabrizio Riguzzi软件X 17(2022)1009572优化)。遗传算法可以是一个很好的主意,但他们收敛速度慢,他们不保证找到最佳解决方案。像BO这样的SMBO算法在深度学习HP调优任务中是最先进的。具体来说,BO使用代理模型(例如目标函数的近似值)来优化并尝试拟合先前的实验,以确定局部最小值可能在哪里BO由两个部分组成:概率回归模型(例如,高斯过程)和采集函数。第一个分量提供了一个后验概率分布,该分布捕捉代理模型中的不确定性,采集函数通过基于后验分布测量目标函数在新点处的值来选择下一个要评估的点[3]。BO在优化DNN的HP方面的成功是由于它限制了DNN的训练次数,花费更多的时间选择下一组HP来尝试。在文献中,有不同的工作将这种类型的优化应用于DNN HP [5这项工作是关于一个名为符号DNN-Tuner的软件,驱动DNN的训练,分析每个DNN训练实验的性能为此,SymbolicDNN-Tuner利用了通过网络性能分析获得的手动方法和SMBO算法。特别是,在这项工作中,BO被用作SMBO算法。选择BO是因为它通过花费更多时间选择下一组HP值来限制目标函数的评估数量。这是DNN的完美方法鉴于训练阶段在时间和精力方面都非常昂贵,BO构建并使用目标函数的代理模型最后,它使用采集函数来决定在哪里采样下一组HP值[3Symbolic DNN-Tuner的目标是提供软件,仅在神经网络架构、HPs搜索空间和数据集的情况下,就可以驱动DNN的训练阶段在本文的其余部分,我们将在第2节中展示解释其架构和功能的软件描述,在第3节中展示说明性示例,在第4节中展示软件的影响。对于文献和生产数据集的实验评估,作为与单独BO相比性能改进的证据,请参见[9]。2. 软件描述如前所述,Symbolic DNN-Tuner驱动DNN的训练,分析每次训练的性能,并自动化HP值的选择。手动方法中使用的技巧被映射到非确定性和概率性的符号调整规则(STR)。每个STR标识调谐动作(TA),其目的是更新HP搜索空间或更新网络架构。每个STR具有概率权重,该概率权重确定将其TA应用于相关联的问题被诊断的情况STR的目的是避免典型的DNN问题,如过拟合,欠拟合,学习率的不正确值等。Symbolic DNN-Tuner有两个主要模块:神经组件和符号组件。整个神经组件是用Python开发的,符号组件是用概率逻辑语言ProbLog1开发的。在神经组件中,TensorFlow Python库用于实现和使用网络架构,用于运行训练1 ProbLog网站:https://dtai.cs.kuleuven.be/problog/。表1可能的问题。行为网络问题训练和验证准确度之间的差距过拟合训练和验证损失之间的差距过拟合高损耗欠拟合低精度欠拟合损失趋势分析损失波动评估形状的损失低学习率高学习率和验证以及输入管道。对于BO,我们使用了Scikit-Optimize Python库。神经组件管理神经网络、HP搜索空间、BO和TA的应用程序。符号组件在训练和验证阶段之后对网络的度量进行分析,诊断问题并识别最有可能应用于网络架构或HP搜索空间的TA。最初,STR的概率权重是手动设置的,然后在每次训练后,通过从解释中学习(LFI)[11](PLP中可用的归纳算法)根据迄今为止获得的结果进行细化。2.1. DNN超参数、训练问题及对策对DNN的性能进行的每个分析都与可能的诊断相关联。这一分析完全在Prolog中实现。在检索DNN问题的诊断之后,Symbolic DNN-Tuner具有一组与可以采取的诊断相关联的TA。为了解决在分析阶段中识别的问题,通过ProbLog程序识别要应用于网络架构或HP搜索空间的最佳TA。在选择最佳TA之后,将其传递给神经组件,神经组件将负责修补神经网络架构或HP搜索空间。表1和表2分别列出了所考虑的问题和相应的分析,以及问题与其TA的关联换句话说,表1的表3报告了可以调整的HP及其域。2.2. 软件构架如上所述,符号DNN-Tuner由两个主要部分组成:神经组件和符号组件。符号组件从神经组件接收网络性能的指标,如损失和准确性,执行符号分析,并选择要应用于网络的TA。这些TA由神经组件获取并应用于DNN架构和/或HP空间。执行流水线和符号DNN调谐器的两个主要块的示意图如图所示。1.一、由于ProbLog是用Python开发的,并且可以作为Python包使用,可以直接在Python代码中调用,因此软件的两个部分可以进行通信符号DNN-Tuner由各种软件模块组成,如图2所示。首先是主模块 。 它 获 取 数 据 、 HP 搜 索 空 间 的 定 义 并 管 理 BO 。 核 心 模 块 是Controller。它从主模块获取数据,并管理启动神经网络训练(包括验证阶段)、符号分析、LFI和所选TA的应用的管道神经、诊断和调整是独立模块。神经系统负责Michele Fraccaroli、Evelina Lamma和Fabrizio Riguzzi软件X 17(2022)1009573表2与问题相关的TA。问题TAs缩略词过拟合正则化和批量规范化reg_l2&批量范数增加辍学率增加退出数据增强数据增量欠拟合降低学习率decr_lr增加神经元inc神经元添加全连接层新fc层卷积块新转换层日益丧失降低学习率decr_lr_inc_loss波动损耗增加批量大小增加批量大小降低学习率decr_lr_fl学习率提高学习率inc_lr高学习率降低学习率dec_lrFig. 1. Symbolic DNN-Tuner执行流水线,包含Neural块和Symbolic块。图二. Symbolic DNN-Tuner的软件模块。管理DNN。训练后,它执行验证并将结构变化应用于神经网络。的诊断模块完全用ProbLog编写,用于分析神经网络的性能,识别Michele Fraccaroli、Evelina Lamma和Fabrizio Riguzzi软件X 17(2022)1009574图三. 用于监控整个优化过程的符号DNN-Tuner表3超参数(HP)。超参数域第一卷积层16第二卷积层64首次脱落0.002第二次脱落0.03全连接层256学习率10−5激活函数[ReLU、ELU、SELU]优化器[Adam,Adamax,RMSprop,Adadelta]问题诊断模块还应用LFI并选择最合适的TA应用。调优应用TA和更新HPs搜索空间或告诉Neural在网络架构中改变什么2.3. 软件功能Symbolic DNN-Tuner的主要功能是驱动DNN的训练,以尽可能获得具有最佳性能的网络。优化过程在每个训练和验证阶段之后利用对网络性能的分析在分析之后,LFI [11]用于学习调整规则的概率,从而动态地改变概率逻辑程序。这使得Symbolic DNN-Tuner能够更好地应用在提高DNN性能方面更有效的规则。Michele Fraccaroli、Evelina Lamma和Fabrizio Riguzzi软件X 17(2022)10095752.3.1. 数据集定义Symbolic DNN-Tuner有一个单独的脚本专门用于数据集定义。在这个脚本中,每个数据集都是一个函数,它返回数据集,分为训练集和测试集,以及类的数量。清单1显示了CIFAR10 [12]数据集定义的一个示例。清单1:CIFAR10数据集定义从张量流keras。数据集进口c i f ar 10defc i far 10 _dataset():num_classes= 10个#数据,s p l i t之间不下雨和t是t设置:(x_train,y_train),(x_test,y_test)= c ifar 10. load_data()print(x _tr a in. shape[0],print(x _t e st. shape[0],#将c l作为s向量转换为二进制c l作为s矩阵。y_train = t f.keras。我的天。t o_c a t e g o r i c a l(y_train,num_classes)y_test = t f.keras。我的天。t o_c a t e g o r i c a l(y_test,num_classes)返回x_train,x_test,y_train,y_test,num_classes现在,在Main模块中,可以通过简单地调用cifar10_dataset()来获得拆分的数据集和类的数量。通过这个脚本,可以添加任何遵守清单1中所述输出接口的数据集。1.一、在未来的工作中,我们将启用数据生成器,以优化的方式管理大量数据。2.3.2. 跟踪和监测实验Symbolic DNN-Tuner有一个使用Dash框架开发的仪表板。图2和Netron3、4 3和4显示了仪表板的四个页面。在执行过程中,所有事件都将被记录。保存所有训练的模型及其权重、诊断、应用的TA如果需要更多关于网络性能的细节,神经组件还可以使用TensorBoard5记录要监控的训练信息图3示出了仪表板的指标和HP的选项卡。图3(a)显示了训练和验证阶段的准确性和损失等指标。图图3(b)显示了使用的HP在软件的每次迭代中。橙色点是具有其HP的最后一次迭代。要查看SymbolicDNN-Tuner每次迭代中使用的HP的整个历史,您可以按照HP图中的小红箭头进行操作。图4显示了仪表板的概率权重和网络架构的选项卡。图4(a)显示了载有可疑交易报告概率权重的网页。在符号DNN调谐器的每次迭代中,可以看到在HP优化过程中发现哪个TA图4(b)显示了与Netron的集成,用于可视化网络架构。由于与Netron的集成,可以与网络交互并查看每层的更多细节(例如,激活、核大小、核正则化等)。2 Dash框架网页:https://plotly.com/dash/。3 Netron网页:https://lutzroeder.github.io/netron/。4 Netron GitHub仓库:https://github.com/lutzroeder/netron。5 TensorBoard网址:https://www.tensorflow.org/tensorboard。3. 说明性实例我们现在讨论一个在CIFAR10 [12]数据集上进行训练的例子。数据集和HP搜索空间的定义分别如清单2和3所示。则软件准备开始训练神经网络。执行python3 main.py启动Symbolic DNN-Tuner。使用定义数据集的脚本,可以导入CIFAR10。如第2.3.1节所述,Main模块获取此函数返回的拆分数据集和数据集的类数。这些变量被传递给控制器。控制器模块将它们传递给神经模块,神经模块使用它们来定义神经网络的最后一层,并执行模型的训练和验证清单3显示了HP搜索空间的定义根据神经网络的定义,列表self.search_space中的每个元素都引用特定的HP(清单4)。BO最初使用清单3中定义的HP搜索空间中的随机值和神经网络目标函数进行优化。BO是由Scikit-Optimize库实现的,它接受一个函数作为输入来最小化。该函数还接受一个参数列表(网络HP)作为输入,并返回目标函数的单个值(在本例中是损失函数的值),请参见清单5。运行main.py脚本后,只需在日志目录的路径log_folder/logs/上启动Ten- sorBoard,就可以看到网络训练的状态。或者,通过执行python3 dashboard/launcher.py,可以运行自定义dashboard并监视训练的状态,每次训练时使用的TA和HP的权重(参见第2.3.2节)。清单2:资料集载入从张量流keraas。数据集进口c i远1 0defmnist():num_classes= 10个(x_train,y_train),(x_test,y_test)= c i far10. load_data()y_train = t f.keras。我的天。t o_c a t e g o r i c a l(y_train,num_classes)y_test = t f.keras。我的天。t o_c a t e g o r i c a l(y_test,num_classes)x_train = x_train。reform(x_train . shape [ 0 ],32,32,3)x_test = x_test。reform(x_test . shape [ 0 ],32,32,3)返回x_train,x_test,y_train,y_test,num_classes清单3:HPs搜索空间定义从skopt。空间进口你好,真实,分类defsearch_sp(s e l f):s e l f.搜索空间=[(16,64,name=002,0。3,name=(64,128,name= ' unit_c 2 '),name= 'unit_d ')、Real(0 . 0 3 0 5,name=分类([Categorical([]返回S e l f . 搜索空间Michele Fraccaroli、Evelina Lamma和Fabrizio Riguzzi软件X 17(2022)1009576见图4。Symbolic DNN-Tuner清单4:通过Keras Functional APIdef build_network(s e l f,params,new):“这是什么意思?”功能f或定义的网络结构:return:模型““输入=输入((32,32、3))x = Conv2D(params [=x = Activation(params [x = MaxPooling2D(pool_size =(2,2))(x)x = Dropout(params [x = Conv2D(params [=x = Activation(params [x = Dropout(params [x = Flatten()(x)x = Dense(params [x = Activation(params [Michele Fraccaroli、Evelina Lamma和Fabrizio Riguzzi软件X 17(2022)1009577x = Dense(s e l f.n_classes)(x)x = Activation(模型=模型(输入=输入,输出=x)返回模型清单5: BO实现def目标(参数):to_optimize = c o n t r o l l e r.t r a in in g(空间)返回优化search_res = gp_minimize ( objective , search_space ,acq_func=4. 影响我们设想将该软件应用于每个涉及DNN的实验。该软件可供经验丰富和缺乏经验的深度学习用户使用。这是因为Symbolic DNN-Tuner只需要数据集、HP搜索空间和神经网络定义。一旦定义了这三个元素,Symbolic DNN-Tuner将负责修改网络,以尝试获得最佳性能。此外,由于利用概率逻辑编程获得的神经符号集成,该软件可用于获得对网络故障可能原因的解释形式。该软件不仅在经典的基准数据集上进行了测试,而且在CIMA S.P.A.提供的数据集6该数据集用于在工业真实案例上测试Symbolic DNN-Tuner [9]。5. 结论我们已经介绍了Symbolic DNN-Tuner,这是一个通过自动选择超参数来自动驱动DNN训练的系统。这种自动化是通过将BO与基于规则的编程实现的网络性能分析相结合来实现的。特别是,调整规则已实现概率逻辑编程和他们的权重调整,利用从解释学习。因此,软件利用概率符号规则在每次网络训练之后选择最佳调整动作来纠正所识别的问题。这些优化操作更新网络架构和/或更新超参数搜索空间。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作。致谢作者要感谢CIMA S.P. A提供了一个真实世界的数据集来测试在这项工作中开发的软件。第一作者由意大利艾米利亚罗马涅地区资助的博士奖学金支持,根据POR FSE 2014作者还感谢POR FESR 2014-2020资助的这项工作也得到了意大利国家计算科学小组(GNCS-INDAM)的部分支持引用[1]惠特利·D遗传算法教程。Stat Comput1994;4(2):65-85.[2]Bergstra JS,Bardenet R,Bengio Y,Kégl B.超参数优化算法。在:神经信息处理系统的进展2011年,第2546-54[3]弗雷泽派。贝叶斯优化教程。2018年,arXiv预印本arXiv:1807.02811。[4]放大图片作者:Dewancker I,McCourt M,Clark S.机器学习的贝叶斯伊恩优化:实用指南。2016年,arXiv预印本arXiv:1612.04858。[5]Snoek J,Larochelle H,Adams RP.机器学习算法的实用贝叶斯优化。在:神经信息处理系统的进展。2012年,第2951-9[6]Guillemot M,Heusèle C,Korichi R,Schnebert S,Petit M,Chen L.吞-通 过贝 叶 斯优 化 神 经网 络 超参 数 并应 用于 化 妆品 配 方 数据 。 在: ORASIS2019.2019年。[7][10]杨文,王文.超参数优化深度神经网络:结合超带和贝叶斯模型选择。In:Conférence sur L'Estissage Automatique. 2017年。[8]Pelikan M , Goldberg DE , Cantú-Paz E. 贝 叶 斯 优 化 算 法 ( BayesianOptimizationAlgorithm)第一届遗传与进化计算年会论文集。1.一、摩根考夫曼出版公司;1999年,p. 525-32[9]张文辉,张文辉,张文辉.符号DNN调谐器。Mach Learn2021;1-26.[10] 李文辉,李文辉,李文辉. Problog:一种概率Prolog及其在链路发现中的应用In:IJCAI,vol.7.第一次会议。Hyderabad; 2007,p.2462-7[11] 作者:A,B,C.从解释中学习概率逻辑程序的参数。在:关于机器学习和数据库知识发现的欧洲联合会议。Springer; 2011,p. 581-96.[12] 放大图片作者:Krizhevsky A,Nair V,Hinton G. Cifar-10加拿大高等研究院网址:http://www.cs.toronto.edu/~kriz/cifar.html。6 CIMA网站:http://www.cima-cash-handling.com/it/。
下载后可阅读完整内容,剩余1页未读,立即下载
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 京瓷TASKalfa系列维修手册:安全与操作指南
- 小波变换在视频压缩中的应用
- Microsoft OfficeXP详解:WordXP、ExcelXP和PowerPointXP
- 雀巢在线媒介投放策划:门户网站与广告效果分析
- 用友NC-V56供应链功能升级详解(84页)
- 计算机病毒与防御策略探索
- 企业网NAT技术实践:2022年部署互联网出口策略
- 软件测试面试必备:概念、原则与常见问题解析
- 2022年Windows IIS服务器内外网配置详解与Serv-U FTP服务器安装
- 中国联通:企业级ICT转型与创新实践
- C#图形图像编程深入解析:GDI+与多媒体应用
- Xilinx AXI Interconnect v2.1用户指南
- DIY编程电缆全攻略:接口类型与自制指南
- 电脑维护与硬盘数据恢复指南
- 计算机网络技术专业剖析:人才培养与改革
- 量化多因子指数增强策略:微观视角的实证分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)