推荐一下自己的survey工作《AutoML: A Survey of State-of-the-Art》,有任何修改意见欢迎留言或者邮件告知。
以下内容是对AutoML技术现状与未来展望讲座的总结。
1.机器学习定义
-
《西瓜书》中的直观定义是:利用经验来改善系统的性能。(这里的经验一般是指数据)
-
Mitchell在《Machine Learning》一书中的较为形式化的定义是一个程序通过给它一些数据,它能够提升在某个任务上的某种度量。(如下图示)
下图很清楚明了的展示了机器学习所做的事情,不再赘述。
2.AutoML技术回顾
很多时候在某一领域使用机器学习得到了效果很好的模型,但是若要在另一个领域使用该模型则不一定适用,而且通常需要大量的专业知识。正是由于受到这样的限制,所以才有了AutoML技术的发展。
2.1 AutoML研究的主要场景
2.1.1 静态闭环AutoML
a. 介绍
第一个场景是静态闭环AutoML,该场景是目前用的最多的场景。该场景是给定数据和度量标准之后,通过AutoML选择出效果最好的模型。该过程没有任何的人工干预,都是算法自动选择的。
下图展示了机器学习的基本流程图,可以看到主要有数据预处理、特征处理、模型训练等过程,并且每个过程都包含多种方法。
b. 存在的问题
而AutoML的本质工作是将各个过程的方法进行选择、组合、优化。
但是AutoML存在如下问题:
- 由于我们通常并不知道所优化的参数和预期效果之间是什么样的显示表达,所以 目标函数形式未知。
- 由于可能的组合方式太多,所以 搜索空间巨大
- 正是由于组合方式太多,而且每一个组合都需要从头做数据预处理,特征处理,模型训练等操作,所以 函数计算代价巨大。
c. 解决办法
- 1.基础搜索方法
该方法其实就是网格搜索,即将各种参数排列成矩阵的形式,然后使用 笛卡尔积((A×B = {(x,y)|x∈A∧y∈B})) 将所有的组合可能遍历一遍。
该方法有两个缺陷:
- 随着超参数的规模越来越大,组合的可能性会指数增加,从而导致计算量大大增加。
- 有的参数重要,但是有的并不重要,但是网格搜索会无差别组合,所以在不重要参数上浪费大量时间和计算资源。所以通常会采用随机搜索的方法来增加搜索效率,并且不会存在指数爆炸,组合爆炸的问题。
- 2.基于采样的方法
上面介绍的网格搜索和随机搜索实现起来简单,而且使用比较多,但是它们搜索起来比较盲目。
所以有了基于采样的方法以期望避免搜索盲目。
该方法是基于某种策略去产生一组可能的参数候选组合,然后对候选组合进行评估。评估之后我们可以得到反馈,基于这个反馈我们会进一步优化搜索策略,以此迭代去解决优化问题。
这样的一个优化过程是一个黑盒函数,学术界也叫做“零阶优化”,因为在这一过程中我们只能获取函数值,无法获取到它的导数信息。
具体的实现方法有如下四种:
- 1) 基于模型的零阶优化
如图示,该方法也是通过采样,评估,反馈等迭代操作来得到优化结果,包含两个重要部件:一是用什么样的模型,而是采用什么样的采样策略。
而常用的优化方法有两种:贝叶斯优化和 随机坐标收缩。
贝叶斯优化是被研究的最多的一种方法之一,而最常见的是采用高斯过程来建模。但是高斯过程在求解的时候需要一个三次方操作,所以当数据点特别多的时候计算效率是非常低下的。所以就有贝叶斯神经网络来解决复杂度问题。
另外,高斯过程要求参数必须是连续空间的,而且还有一些其他的限制,所以需要用到随机森林来解决参数类型受限问题。
对应的参数选择策略标准有:
- 选择概率提升较大的点
- 选择提升幅度大的点
- 通过交叉熵选择
- GP_UCB(不了解。。。)
贝叶斯模型存在一个致命的错误,那就是它依赖于很强的模型假设(表示我们对函数空间的认知)。
为了解决贝叶斯的缺点,有人提出可以通过分类的方式来解决,即将好的点和坏的点区分开来,而不是对模型进行假设,该方法就是随机坐标收缩(RACOS, RAndomized Coordinate Shrinking)。
该方法采用的模型是使用框将好的点选中,坏的点在框外。而框需要满足两个条件:一是尽可能的随机,而是框要尽可能的“瘦”,最瘦就是瘦成一条垂直于坐标轴的直线。
- 2) 局部搜索
该方法是指从一个点出发,在它的邻域内进行搜索。
最常见的局部搜索方法是 爬山法。即寻找可能性最大的一个方向后,往该方向前进。该方法能够收敛,但是可能会陷在局部最优解或者停在比较平的地方。
为了解决陷在局部最优问题,迭代式局部搜索应运而生。它的思想是在找到局部最优点后,对局部最优点有一些扰动,然后重新开始一轮局部搜索。
- 3) 启发式算法
该类方法相较于前两种缺乏坚实的理论支撑,主要是根据对生物,自然界的观察,去模拟一些生物或者自然现象,从而进行优化。
- 4) 强化学习
该方法是有一种杀鸡用牛刀的感觉,因为强化学习自身的优化就是一个比较大的问题。
- 3.基于梯度的方法
2.1.2 外部知识辅助AutoML
该场景其实也是静态场景,只不过该场景会从其他任务迁移一些已经做过的知识来作为辅助。
2.1.3 动态环境AutoML
上面两种场景都是静态场景,而现实应用中每天的数据都是不断产生的,任务度量也是不断变化的,所以就有了动态环境AutoML。
例如常见的推荐系统,每天有新用户注册,又有老用户离开。并且用户的喜好也不断发生变化,这就是典型的动态场景。
2.2 AutoML热点研究方向
AutoML热点研究方向主要有两个:效率和 泛化性
2.2.1 效率
常见的提高效率的方法有如下:
- 将串行的计算方式改成 同步并行或者 异步串行
- 提前停止模型训练,避免模型过拟合等现象的产生
- 使用预训练模型进行热启动
- 混合优化目标,即将计算代价和损失函数结合起来作为优化目标
2.2.2 泛化性
还有一个研究热点是训练模型的泛化性。因为机器学习的本质是希望所训练得到的模型能够对多个任务都有效,即在从未见过的样本上也能表现优秀。
- 评估
以基于采样的优化为例,假设我们通过采样得到了一些数据点,然后进行超参数评估。这个评估是怎么做的呢?
一般我们会从原数据集中选择一部分数据作为验证集,然后查看验证集的效果如何。但是这个验证集是否能代表未来的数据集呢?答案是不确定的。
所以有些工作就需要去研究怎么做更合理的评估。
我们知道AutoML是从众多模型中选择出在某一数据集上表现最好的一个作为最终的输出模型,那么这就意味着其他的模型都浪费掉了。那些模型虽然表现不是最好的,但是可能也不差,而且可能在其他数据集上表现会更好。所以我们可以试着做集成学习,以此来提高泛化性。
2.3 从理论角度看AutoML
世上没有免费的午餐。
有很多理论都证明不存在一种通用的算法能解决所有问题。
2.4 AutoML应用
视频中主讲人打了下广告,介绍了由第四范式主办的AutoML比赛。
3. AutoML未来展望
- 算法效率的提升
未来展望一个大方向是算法效率的提升。而算法效率又分为时间复杂度和样本复杂度。
时间复杂度很好理解,它主要是希望能够对全流程进行优化,如下图示,不再赘述。
样本复杂度则是指降低收集样本的成本等。因为收集高质量的有标签的样本是很昂贵而且很困难的,所以可行的办法是才用迁移学习来解决。周志华老师也提出了 学件的概念,即将以往训练的 模型和对该模型的 归约组合成学件,以供后续任务的使用。
- 算法
- AutoML理论