首页 > 编程知识 正文

土建工程师(什么干货好卖)

时间:2023-05-05 08:10:07 阅读:80573 作者:2682

在机器学习的训练模型过程中自然少不了调参。 许多机器学习工程师把自己称为“调参师”,其重要性不言而喻。

模型的参数可以分为模型通过自身训练学习得到的参数数据即参数和超参数两大类,后者为了提高模型训练的效果,需要根据自身的经验进行设定。 下图红框内的隐藏层数、每个隐藏层的神经元数、采用什么样的激活函数和学习算法、学习率和正则化系数等都是超参数。

模型落地的流程如图所示。

收集日志,从日志中抽象特征,将特征赋予模型,模型在早期超参数指导下学习第一类参数; 如果用离线效果指标评价超参数的设定是否合适,则继续进行调整。

在这个调参的过程中主要有两个难点:

1 .参数空间大,试验成本高

工业界往往数据规模大,模型复杂,计算成本高,每种类型都有很多选择。

2 .目标模型为黑匣子

在检索超参数时,只能看到模型的输入和输出,无法获取坡度等模型内部信息,也无法直接针对最佳超参数组合优化目标函数。

超参数的选择对模型的最终表现效果有很大的影响。 针对以上难点,下面介绍通过算法自动调整参数的方法。 业界常用的检索超参数的方法主要有网格检索、随机检索、贝叶斯优化。

1#网格检索网格搜索

网格搜索是指,在所有候补的参数选择中,通过循环扫描尝试所有可能性,从而表现出最好的参数是最终的结果。

举个例子,上图有两种超级参数。 每个超参数有三个要搜索的值,将它们笛卡儿积得到九个超参数的组合。 在网格搜索中使用各组合训练模型,选择验证集中最好的超级参数。 此方法称为网格搜索,因为它经常按类型列出表,并在表中循环搜索,如图所示。

网格搜索算法的思路和实现方法很简单,但在笛卡儿积的组合扩大了搜索空间,且存在某些不重要的超参数的情况下,网格搜索会浪费大量的时间和空间,造成浪费的工作,因此只适用于超参数数量少的情况

2#随机搜索random搜索

原文地址: http://WWW.JMLR.Org/Papers/volume 13/Berg Stra 12A/Berg Stra 12A.PDF

针对网格搜索的不足,Bengio等人提出了随机搜索方法。 在随机搜索中,首先为每种类型的超级参数定义边缘分布,通常采用均匀分布,然后对这些参数进行采样和搜索。

由于随机搜索有随机因素,搜索结果可能特别差,但也可能特别有效。 总体来说,它比网格搜索更有效,但不能保证一定能找到好的超级参数。

3#贝叶斯优化贝叶斯优化

举个简单的例子,假设模型的最佳超参数组合的函数是一维曲线。 虽然在黑匣子里不能达到具体的函数形式,但是可以输入某种值来得到输出。

随机试验了4个超参数,得到了相应的性能指标,如下图所示。

那么,最佳的超级参数可能在哪里? 下一个要搜索的超级参数是哪个? 推测最佳值可能在0.4这里,函数的真实形式可能会是这样的:

* * *直方图记录每次推测的最小值位置

因为每个人推测的不同,所以每次生成的函数也不同:

utiaoimg.com/origin/pgc-image/f542831943e34a8a9ee6c1b4d1ee58bb?from=pc">

可以看到大部分都认为最优超参数是在第 3 个点附近, 由于开始时在右侧采点的离线指标是最差的,所以先验认为最优超参数在这里的可能性不大。接着把这个过程取极限,就会得到一个关于最优超参数的概率分布。

假设每个分布都是高斯分布,那么得到的是一个高斯过程,其中高斯分布的均值为 0,方差大概为 5。

这样无论我们猜测最优超参数是取哪个值,总能得到一个关于超参数好坏的描述,即是均值和方差,这里实际上我们用一个无限维的高斯过程来模拟黑盒的超参数搜索的目标函数形式。

总结来说,超参数搜索问题其实是一个黑盒优化问题,贝叶斯优化通过无限维的高斯过程来描述黑盒,在这个高斯过程中可以得到每一组输入超参数的均值和方差。

得到了均值和方差则解决了上文提到的第一个问题:「最优超参数可能在哪里?」,那么下一个待探索的超参数是哪个?这其实是一个 E&E 问题(探索与利用问题),是稳妥地在目前已有的最大值附近搜索还是在不确定性大的地方搜索?后者效果可能很差,但也可能有意想不到的收获。

而 Acquisition function 正是平衡 E&E 问题的方式,下面我们依次介绍 3 种常见的做法。

1# Upper (lower) Confidence Band

UCB 方法用线性加权的方式直接对 E&E 采样进行平衡,第一项是当前最好的超参数值,在当前最好的结果附近稳妥的搜索;第二项是方差,表示去探索更未知的空间,beta 参数用来控制力度,这种方法简单有效。

2# Maximum Probability of Improvement

MPI 方法的目的是下一个待搜索的值能最大限度提升概率,假设当前最好的是 y_best, 那么 MPI 表示的是下一个待搜索的点能比 y_best 小的概率,这种方法容易陷入在局部最小值附近。

3# Expected Improvement

该种方法描述的是下一个待搜索的点能比当前最好的值更好的期望,因为是高斯过程,这里的后验概率是高斯形式,积分有闭式解,实现起来较为简单,因此这种方法也较为常用。

?举个例子

如上方图所示,虚线代表关于最优超参数的真实函数形式(但实际上它是个黑盒,不知道其具体形式),实线代表当前最好的超参所在位置,两条浅灰线表示的是当前点的方差。

下方图表示已知的和待探索超参数的 Expected Improvement,此时很多地方都有希望能取得比当前最好值更好的超参数,主要需要探索,我们首先选择 0.0 点作为下一个待探索的超参数。

可以看到,此时 0.0 点的方差变为 0。继续寻找下一个待探索的超参数,选择 1.0。

如图,1.0 点的方差变为 0,经过两次探索我们注意到不需要再探索右侧区域,因为我们在右边得到的超参数效果比左边的差。继续选择下一个超参数位置,选择 0.25 点左右的位置。

按照 EI 方法,依次寻找下一个待探索的超参数,这次我们选择的超参数位置大概在 0.7 点。

选择 0.7 点的超参数效果比之前选择的更好,此时 Expected Improvement acquision 建议应该加大在 0.7 附近搜索的力度。

经过几轮探索之后发现最优超参数应该在 0.8 点附近。

通过以上案例可以看出贝叶斯优化是通过 acquisition function 平衡均值和方差,做 E&E 问题探索下一个可能的最优超参数。

最后通过三张动图概括网格搜索、随机搜索和贝叶斯优化。

网格搜索

随机搜索

贝叶斯优化

原文发布于微信公众号 - 美图数据技术团队(gh_feb1d206d92b)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。