本发明涉及一种调优改进方法,尤其涉及一种基于贝叶斯优化的深度学习超参数的调优改进方法。
背景技术:
深度学习是机器学习中一种基于对数据进行表征学习的方法,主要表现为建立模型,并利用数据进行学习。超参数是在开始学习过程之前设置值的模型参数,而不是通过训练得到的参数数据。深度学习的超参数存在选取困难、没有规律性的特点,而且不同超参数之间存在无法预知的影响,其调试非常耗时,每个超参组合的评估需要进行大量的迭代计算。针对此类问题,经典的一些优化算法:如粒子群算法、模拟退火算法、局部搜索算法等已不再适用。有人提出通过代理模型的方法,通过仿真目标函数的估计值,以降低该类问题的评估代价。但无论采用门特卡洛算法还是强化学习领域中提出的自适应模拟算法,仿真过程总是昂贵的。
贝叶斯优化是寻找评估代价高昂的目标函数极值的强大策略,它适用于对目标函数没有封闭形式表达式的情况。该算法中的初始点设计,常采用随机实验设计方法、正交实验设计方法或人为设定初始点的方法。而采用随机实验设计方法或人为设定的初始点,不能保证初始点分布的合理性,对建立目标函数的仿真模型影响较大;正交采样的方法可以保证采样分布的合理性,但增加了计算成本;传统拉丁超立方实验设计方法,相较于随机取样方法数据分布更合理,但其取样点分布任然有随机性;上述方法的初始点取样方式分别如图1-3所示。因此,应用传统的贝叶斯优化算法解决深度学习模型超参数优化问题,计算成本高昂,并且由于初始点的生成方法存在缺陷,导致优化结果波动大,不利于工程应用。
技术实现要素:
为了解决上述技术所存在的不足之处,本发明提供了一种基于贝叶斯优化的深度学习超参数的调优改进方法。
为了解决以上技术问题,本发明采用的技术方案是:一种基于贝叶斯优化的深度学习超参数的调优改进方法,其整体步骤为:
步骤1、采用快速最优拉丁方实验设计算法生成初始点集x=x1...xt;
步骤2、采用并行计算在计算机中获取上述初始点集的响应y=y1...yt,同时计算多个点x1...xt在目标函数上的响应y1...yt,构建数据集d={(x1,y1)...(xt,yt)};
步骤3、进入贝叶斯优化迭代过程:
a、用数据集d中所有数据,构建高斯过程模型;
b、使用获取函数u(x)获取下一个评估点xi,i的取值为1~t,xi=argmaxu(x|d),计算响应yi=f(xi);
c、增加新数据点到集合d,d←d∪{xi,yi},i←i+1。
进一步地,步骤1中快速最优拉丁方实验设计算法具体步骤:
a、给定np、nv、ns,并设定采样区间;其中,np为人为设定的拉丁超立方实验设计生成的初始点数目,nv为变量的维度数目,ns是快速最优拉丁方实验设计算法提出的参数,通常设定为1;
b、计算理论区间分割数nd,
c、计算中间量nb,
d、计算实际生成初始点数目
e、使用平移传播算法填充拉丁超立方实验设计空间。
进一步地,使用平移传播算法填充拉丁超立方实验设计空间的具体方法为:
①取ns=1,将设计空间原点设定为第一个初始点,即各维变量的最小值;
②将初始点向nv-1个维度分别平移各维度尺度大小的
③按步骤②对上一次平移得到的初始点进行平移,得到下一个点,重复本步骤,直到设计空间该方向上设计点数为
④将步骤③得到的第一组数据进行平移,平移方式为:在步骤②中的nv-1个维度分别平移各维度尺度大小的
⑤按步骤④中方式,对得到的上一组初始点进行平移,重复本步骤,直到填充满nv-1维的设计空间为止;
⑥当实际生成的初始点数目
⑦根据距离公式dij=|xi-xj|,求各初始点xi到设计空间中心xj的距离;舍弃与中心点距离最远的
进一步地,步骤3a中,高斯过程模型使用的高斯核函数公式如下:
其中,
进一步地,步骤3b中,获取函数为熵搜索函数,即:
其中,
协方差函数kt(x,x′)=k(x,x′)-kt(x)t(kt+σ2i)-1kt(x′);
核矩阵为
本发明可有效解决传统贝叶斯优化算法耗时长、性能波动大的缺陷,通过并行计算加快优化速度,显著提高了优化效率。
附图说明
图1为二维情形下随机实验设计法设计的初始点的分布图。
图2为二维情形下正交实验设计法设计的初始点的分布图。
图3为二维情形下采用常规拉丁超立方实验设计法设计的初始点的分布图。
图4为本发明的整体流程示意图。
图5为快速最优拉丁超立方实验设计算法的流程图。
图6为快速最优拉丁超立方实验设计算法设计的初始点分布图。
图7为softmaxregression模型示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一、
图4所示的一种基于贝叶斯优化的深度学习超参数的调优改进方法,其整体步骤为:整体步骤为:
步骤1、采用快速最优拉丁方实验设计算法生成初始点集x=x1...xt。
快速最优拉丁方实验设计算法具体步骤:
a、给定np、nv、ns,以及各变量优化区间;本实施例中采样点数np=16,变量维度nv=2,ns=1,优化区间均取[0,1];
b、计算理论区间分割数nd,
c、计算中间量nb,
d、计算实际生成初始点数目
e、使用平移传播算法填充拉丁超立方实验设计空间。
进一步地,使用平移传播算法填充拉丁超立方实验设计空间的具体方法为:
①设定初始点为设计空间原点,如图6a;
②将初始点向水平维度平移
③按步骤②对上一次平移得到的初始点进行平移,得到下一个点,重复本步骤,直到设计空间该方向上设计点数为
④将步骤③得到的第一组数据进行平移,平移方式为在水平维度平移
⑤按步骤④中方式,对得到的上一组初始点进行平移,重复本步骤,直到填充满设计空间为止,如图6f-6g;
⑥返回使用快速最优拉丁超立方实验设计算法生成的初始点集x,如图6g。
步骤2、采用并行计算在计算机中获取上述初始点集的响应y=y1...yt,同时计算多个点x1...xt在目标函数上的响应y1...yt,构建数据集d={(x1,y1)...(xt,yt)}。
步骤3、进入贝叶斯优化迭代过程:
a、用数据集d中所有数据,构建高斯过程模型;
高斯过程模型使用的高斯核函数公式如下:
其中,
b、使用获取函数u(x)获取下一个评估点xi,i的取值为1~t,xi=argmaxu(x|d),计算响应yi=f(xi);
获取函数为熵搜索函数,即:
其中,
协方差函数kt(x,x′)=k(x,x′)-kt(x)t(kt+σ2i)-1kt(x′);
核矩阵为
c、增加新数据点到集合d,d←d∪{xi,yi},i←i+1。
为验证本发明提出的算法,采用深度学习中softmaxregression模型的超参优化对本发明的算法性能进行验证,图7为模型示意图。模型训练使用手写数字数据集mnist,mnist数据集有55000个训练样本,softmaxregression模型中优化器选用adam优化器,优化超参数为:学习率α,权重衰减系数β1、β2,三个超参数取值范围均为[0,1]。
本实施例基于tensorflow、gpflowopt等开源库实现算法验证。下面给出实施例一用于深度学习超参优化的具体过程:
一:修改tensorflow官方提供的softmaxregression模型,修改内容有:使用adam作为优化器,将优化器中的学习率α,权重衰减系数β1、β2设置为变量,并从55000个训练样本中抽取40%的样本作为优化使用的训练集,最后修改模型迭代次数为100,将修改后的模型作为被优化的目标函数,记为:object_func(x),其中x作为超参学习率α、权重衰减系数β1、β2的传递变量,抽取的40%样本需要随机抽取,或者在各种分类中分别抽取等量样本;
二:使用gpflowopt库中给出的贝叶斯优化算法的函数接口,并根据本发明给出的改进算法,实现对目标函数object_func(x)的超参优化;
1)定义优化域为:α∈[0,1],β1∈[0,1],β2∈[0,1];
2)使用本发明中的改进算法生成初始点集x;
3)调用目标函数object_func(x),生成响应集y;
4)调用gpflowopt库中的高斯过程模型函数,并设置其高斯核为km52(x,x′),函数式详见实施例一步骤3中的说明;
5)设置熵搜索函数作为获取函数;
6)进入贝叶斯优化迭代过程:获取当前最值点,更行高斯模型,直至达到设定的迭代次数,本实施例设为20。
通过上述步骤得出学习率α、权重衰减系数β1、β2的优化结果,使用该超参对tensorflow官方提供的mnist数据集分类模型softmaxregression模型进行训练,最终准确率可达到95%。
本发明与现有贝叶斯优化算法相比,通过充分考虑初始点设计的合理性,提出一种快速最优拉丁超立方实验设计方法,该方法能保证在给定取样点的条件下,保证最优的初始点分布。基于以上特征,本发明对算法中重复执行部分通过并行计算的方法提高了计算效率,并对贝叶斯优化中的高斯过程模型核函数以及获取函数进行了优选,使贝叶斯优化算法优化效果得到提升。此外,本发明对深度学习超参优化实例中数据集的使用进行了创新,通过在优化过程中使用部分数据集,在不影响优化结果的情况下减轻了计算量,提升了优化效率。
上述实施方式并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的技术人员在本发明的技术方案范围内所做出的变化、改型、添加或替换,也均属于本发明的保护范围。