拒绝日夜调参:超参数搜索算法一览

语言: CN / TW / HK

时间 2018-10-31 15:22:57 机器之心

主题 数据挖掘 数学

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

模型的参数可分成两类:参数与超参数,前者是模型通过自身的训练学习得到的参数数据;后者则需要通过自身经验设置,以提高模型训练的效果。如下图中红色框内的隐层个数、每个隐层神经元个数、采用什么激活函数及学习算法、学习率以及正则化系数等都属于超参数。

一个模型的落地流程如图所示:

  • 收集日志,并从日志中抽象出特征,再把特征喂给模型,模型在初始的超参数指导下学习第一类参数;

  • 通过离线效果指标评估超参数的设定是否合适;

  • 若不合适则继续不断调整。

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

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

在工业界往往数据规模巨大、模型复杂,计算成本很高,并且每个类型的超参数都有众多选择。

2.目标模型是黑盒

在搜索超参数的过程中只能看到模型的输入和输出,无法获取模型内部信息(如梯度等),亦无法直接对最优超参数组合建立目标函数进行优化。

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

1#网格搜索Grid Search

网格搜索是指在所有候选的参数选择中,通过循环遍历尝试每一种可能性,表现最好的参数就是最终的结果。

举个例子,上图中有两类超参数,每类超参数有 3 个待探索的值,对它们进行笛卡尔积后得到 9 个超参数组合,通过网格搜索使用每种组合来训练模型,并在验证集上挑选出最好的超参数。如图所示,这种方法往往根据不同种类列出表格,并在表格内循环遍历搜索,因此称为网格搜索。

网格搜索算法思路及实现方式都很简单,但经过笛卡尔积组合后会扩大搜索空间,并且在存在某种不重要的超参数的情况下,网格搜索会浪费大量的时间及空间做无用功,因此它只适用于超参数数量小的情况。

2# 随机搜索 Random Search

原文地址:http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf

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

随机搜索虽然有随机因素导致搜索结果可能特别差,但是也可能效果特别好。总体来说效率比网格搜索更高,但是不保证一定能找到比较好的超参数。

3# 贝叶斯优化 Bayesian Optimization

举个简单的例子,假设关于模型最优超参数组合的函数是一维曲线,由于它是一个黑盒无法直到具体的函数形式,但是可以输入某些值并得到输出。

我们随机尝试了 4 个超参数,并得到了对应的性能指标,如下图所示。

那么问题来了, 最优超参数可能在哪里?下一个待探索的超参数是哪个? 我猜测最优值可能在 0.4 这里,函数的真实形式可能长这样子的:

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

而每个人猜测的是不一样的,因此每次生成的函数也不同:

可以看到大部分都认为最优超参数是在第 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

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

:chestnut:举个例子

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

下方图表示已知的和待探索超参数的 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 问题探索下一个可能的最优超参数。

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

网格搜索

随机搜索

贝叶斯优化

*本文部分图源 :

http://gpss.cc/gpmc17/slides/LancasterMasterclass_1.pdf

美团技术团队

在美团,我们信仰耐心和坚持的力量,愿意持续去做一些正确、有积累、可能表面看上去不那么重要实则非常关键的事情。

理论 算法 贝叶斯优化

相关数据

激活函数 技术

Activation function

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

来源: 维基百科 Google ML glossary

高斯分布 技术

Gaussian distribution

正态分布是一个非常常见的连续概率分布。由于中心极限定理(Central Limit Theorem)的广泛应用,正态分布在统计学上非常重要。中心极限定理表明,由一组独立同分布,并且具有有限的数学期望和方差的随机变量X1,X2,X3,...Xn构成的平均随机变量Y近似的服从正态分布当n趋近于无穷。另外众多物理计量是由许多独立随机过程的和构成,因而往往也具有正态分布。

来源: Wikipedia

学习率 技术

Learning rate

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

来源:Liu, T. Y. (2009). Learning to rank for information retrieval. Foundations and Trends® in Information Retrieval, 3(3), 225-331. Wikipedia

网格搜索 技术

Grid search

网格搜索是一项模型超参数优化技术,常用于优化三个或者更少数量的超参数,本质是一种穷举法。对于每个超参数,使用者选择一个较小的有限集去探索。然后,这些超参数笛卡尔乘积得到若干组超参数。网格搜索使用每组超参数训练模型,挑选验证集误差最小的超参数作为最好的超参数。

来源: Deep Learning Book

机器学习 技术

Machine Learning

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

来源:Mitchell, T. (1997). Machine Learning. McGraw Hill.

神经元 技术

neurons

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

来源: Overview of Artificial Neural Networks and its Applications. (2018). medium.com.

目标函数 技术

Objective function

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

来源: 百度百科

后验概率 技术

Posterior probability

在贝叶斯统计中,一个随机事件或者一个不确定事件的后验概率是在考虑和给出相关证据或数据后所得到的条件概率。同样,后验概率分布是一个未知量(视为随机变量)基于试验和调查后得到的概率分布。“后验”在本文中代表考虑了被测试事件的相关证据。

来源: 维基百科

参数 技术

parameter

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

来源: 维基百科

正则化 技术

Regularization

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

来源:李航著 统计学习方法 清华大学出版社

验证集 技术

Validation set

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

来源: Wikipedia

高斯过程 技术

Gaussian Processes

推荐文章

拒绝日夜调参:超参数搜索算法一览相关推荐

  1. 干货 | 拒当调参师工程师:超参数搜索算法一览

    https://www.toutiao.com/a6683809735214367239/ 2019-04-25 20:35:22 机器学习训练模型的过程中自然少不了调参,许多机器学习工程师都戏称自己 ...

  2. 机器学习之超参数调优——超参数调优的方法

    超参数调优的方法 概述 网格搜索 随机搜索 贝叶斯优化算法 概述 对于很多算法工程师来说, 超参数调优是件非常头疼的事.除了根据经验设定所谓的"合 理值"之外, 一般很难找到合理的 ...

  3. XGBoost-Python完全调参指南-参数解释篇

    本文转自XGBoost-Python完全调参指南-参数解释篇.对XGBoost有需要小伙伴可以参看.并在此基础上,添加了一些内容. 在analytics vidhya上看到一篇<Complete ...

  4. 单个GPU无法训练GPT-3,但有了这个,你能调优超参数了

    视学算法报道 编辑:陈萍.小舟 模型越大,超参数(HP)调优成本越高,微软联合 OpenAI 提出 HP 调优新范式,单个 GPU 上就可以调优 GPT-3 超参数. 伟大的科学成就不能仅靠反复试验取 ...

  5. Caret模型训练和调参更多参数解读(2)

    trainControl函数控制参数 trainControl函数用于定义train函数运行的一些参数,如交叉验证方式.模型评估函数.模型选择标准.调参方式等. 部分参数解释如下: method: 重 ...

  6. android 摄像头调参,摄像头参数调整方法和装置、电子设备和存储介质与流程

    技术特征: 1.一种摄像头参数调整数调整方法,包括: 对参考摄像头采集的第一图像进行检测,获取第一检测结果: 对待调参摄像头采集的第二图像进行检测,获取第二检测结果,其中,所述第一图像与所述第二图像是 ...

  7. 拒绝暴力调参!推荐一个模型Debug神器!

    近些年深度学习在视觉.自然语言处理.语音等各个技术方向都诞生了不少创新应用,如智能识别医疗图像中的病灶,辅助医生做病情诊断:智能判别生产线上有质量问题的产品,减轻人工质检压力:对政务.金融等流程中的证 ...

  8. 【数据挖掘】心跳信号分类预测 之 建模调参 —— 学习笔记(四)

    目录 四.建模调参 4.1 内容简介 4.2 模型原理与性质概述 4.2.1 分类模型 4.2.2 时间序列模型 4.2.3 推荐教材 4.3 模型对比与性能评估 4.3.1 逻辑回归 4.3.2 决 ...

  9. lgg7深度详细参数_机器学习超详细实践攻略(9):决策树算法使用及小白都能看懂的调参指南...

    决策树算法在工业中本身应用并不多,但是,目前主流的比赛中的王者,包括GBDT.XGBOOST.LGBM都是以决策树为积木搭建出来的,所以理解决策树,是学习这些算法的基石,今天,我们就从模型调用到调参详 ...

最新文章

  1. JAVAEclipse:could not find the main class,program will exit!
  2. Nature:依靠锰的氧化实现细菌的化能自养生长
  3. LSTM还没「死」!
  4. 2.2栈的另一个应用:括号匹配
  5. JavaScript里的循环方法:forEach,for-in,for-of
  6. 零基础入门人工智能有门槛吗?学会这些就够了
  7. 安装linux的准备
  8. Python虚拟机函数机制之无参调用(一)
  9. 7-4 输出最小公倍数 (9 分)
  10. 万测试验机软件,万测TestStar®新秀®100kN微机控制电子万能试验机
  11. 版本代码详解:Alpha,Beta,Rc,GA,RTM,OEM等简称都代码什么意义
  12. (Java 多线程系列)java synchronized详解
  13. Tokyo Tyrant优势
  14. PAT 乙级 1041. 考试座位号(15) Java版
  15. 一起谈.NET技术,浅析五大ASP.NET数据控件
  16. java判断对象无数据_Java 判断实体对象及所有属性是否为空的操作
  17. 面试智力题,1000瓶水,其中一瓶有毒,而且毒性无敌,稀释一亿倍毒性都不减,毒性的发作时间最长为1小时,请问怎样可以在两个小时之内找出哪瓶水有毒
  18. SpringDataJPA(二):SpringDataJPA的运行原理以及基本操作
  19. win10系统还原失败错误0x80070091的解决方法
  20. 在MAC下解决MAC unable to execute sex :GC overhead limit exceeded GC overhead的问题

热门文章

  1. 《数据挖掘导论》学习笔记(第1-2章)
  2. abaqus 6.14有限元分析高级培训视频教程-接触 热力 疲劳分析
  3. VM16虚拟机去虚拟化心得3(干货来了)
  4. php样式模板,word样式和模板的区别
  5. SQL数据库查询LIMIT 数据分页
  6. JDBC如何破坏双亲委派机制
  7. 液晶屏Mura检测ND FILTER介绍
  8. Numpy:np.all() np.any()
  9. SaaS人力资源管理系统的Bug
  10. RTKLIB专题学习(六)---单点定位应用(二)