学习笔记,仅供参考,有错必纠
关键词:优化;机器学习;概括能力;数据


文章目录


How Can Machine Learning and Optimization Help Each Other Better?



摘要

优化是机器学习不可或缺的一部分,因为机器学习需要高效地求解数学模型. 另一方面,机器学习也可以为优化提供新的契机和新思路. 本文旨在研究如何使优化和机器学习之间的相互作用更加有效.



Introduction



翻译:

在机器学习领域众所周知,优化是机器学习不可或缺的一部分。AAAI研究员、华盛顿大学教授多明戈斯曾经写过一个著名的方程[1]: ​​机器学习=表示+优化+评估​​​文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_机器学习

这清楚地表明了优化在机器学习中的关键作用. 最近深度学习的繁荣也部分归功于优化技术的进步[2]. 另一方面,机器学习对优化技术的巨大需求也给了优化社区巨大的推动力,甚至是新的想法.
例如,20世纪90年代支持向量机的流行使人们重新关注二次规划. 一个SVM实际上是下面的优化问题:
文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_02

其中,文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_03是训练集,文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_04是样本xi的标签.

最近深度学习的兴起进一步激发了人们对随机梯度下降、非凸优化和分布式优化的兴趣. 深度学习主要寻找深度神经网络(DNN)的权重,使得在训练集上DNN输出和真实值之间的差异最小. 典型的DNN是全连接前馈神经网络(图1)
文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_05

其中,文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_机器学习_06为输入为第文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_07个样本在第文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_08层节点(称为神经元)的响应(文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_09文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_机器学习_10分别为输入和输出),文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_11为第文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_08层和第文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_13层之间的权重,文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_机器学习_14为非线性非递减函数(称为激活函数). 然后,DNN的输出文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_机器学习_10和真实值文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_16之间的平均差值文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_17被最小化,称为损耗函数.

文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_机器学习_18

一些机器学习技术也出现在优化算法中. 本文旨在以我个人和有限的观点调查两个社区如何更好地互相帮助.

Different Optimization Goals between the Machine Learning and the Optimization Communities

首先,我们需要知道机器学习和纯优化社区中优化目标的区别. 在机器学习中,计算一组参数, 从而使机器学习模型获得高精度, 不是目标,至少不是唯一的目标. 当然,如果在相同的时间内,算法A获得了比算法B更高的数值精度,那么算法A肯定比算法B更受欢迎. 然而,机器学习工作者通常会在获得较低但仍可接受的数值精度时停止算法A,以节省时间. 原因是机器学习任务通常强调低分类或聚类错误,这通常用百分比或其他标准来衡量. 由于数据量有限,收集这些数据通常很昂贵,这些数值通常以较低的数值精度报告. 例如,百分比通常最多使用两位小数. 因此计算参数只是一个中间环节,它们的高数值精度在后面的分类或聚类误差评估中并不重要.

分类误差进一步区分为训练误差和测试误差. 训练错误是训练集上的分类错误,而测试错误是测试集上的. 测试误差是机器学习工作者最关心的问题,因为它与学习模型的泛化能力有关,即训练好的学习模型在新数据上的表现如何. 如果训练误差高,则称为欠拟合. 如果训练误差低但测试误差高,则称为过拟合. 理想情况下,我们希望有一个既欠拟合也不过拟合的模型. 相比之下,纯粹优化的人可能不太关心学习模型的物理意义,可能会专注于最小化训练误差.

即使人们意识到最小化测试错误是最重要的,但仍然需要注意. 通常,学习模型还具有优化算法中没有的超参数,例如层数、每层中的滤波器数量和DNNs中的滤波器宽度(在本例中,反向传播算法优化的参数是神经网络的权重). 然后设置验证集,它是训练集的一个子集,用于调整超参数. 即,超参数被选择为那些与优化算法在训练集的剩余部分上计算的参数一起导致验证集上分类错误最低的那些. 即使没有超参数,验证集也是必要的. 例如,当验证误差开始增加时,可以终止对训练集(剩余部分)的优化算法计算. 这是统计学中一种叫做提前停止的正则化. 这种方式弥补了学习模型的缺陷,学习模型的最佳参数不对应于最佳分类/聚类性能.

机器学习工作者关心测试错误而不是训练错误会给优化增加很大的困难. 一个显著的例子是,当训练深度神经网络时,机器学习的人可能更喜欢相对平坦区域的局部极小值,而不是深谷的全局极小值(图2). 这是因为假设测试数据的分布与训练数据相同,测试数据上的目标函数应该是训练数据上的目标函数的扰动. 因此,相对平坦区域的局部极小值会比全局极小值更少增加,这意味着前者具有更好的泛化能力,而后者可能会过度收敛.

文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_19

在[3]中还讨论了机器学习和优化社区中优化概念的差异,其中作者从机器学习的角度列出了优化算法的一些理想特性:

  • 泛化能力好;
  • 对大问题的可伸缩性;
  • 在执行时间和内存需求方面的良好实践表现;
  • 算法实现简单易行;
  • 利用问题结构;
  • 快速收敛到模型的近似解;
  • 尝试机器学习模型类的鲁棒性和数值稳定性;
  • 理论上已知的收敛性和复杂性.


How Can Optimization Help Machine Learning Better?



有趣的是,优化不仅有助于机器学习更有效地计算, 它还可以在其他方面有所帮助. 例如,迭代过程可以展开成深度神经网络. 因此,优化有助于深度神经网络架构设计[4–6]. 图3显示了一些受图像识别优化启发的DNN. 尽管如此,在下文中,我仍然关注计算方面.

文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_20

Consider Characteristics of Data

做优化的人都知道,一个有效的算法应该考虑问题的结构. 然而,检查问题的结构可能还不够. 与著名的机器学习“没有免费午餐”定理[9]类似,该定理指出没有一个学习模型比其他模型普遍更好,也有同一作者提出的优化“没有免费午餐”定理[10],称没有一个优化算法比其他算法一致更快. 这个结论假设算法是在所有可能的问题上测试的,这些问题包括所有可能的“数据”选择,甚至是针对某个特定的问题. 例如,在LASSO问题中:
文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_21
文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_22, 文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_23文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_24都是"数据". 因此,仅仅考虑问题的结构并不足以有一个有效的算法.

在为特定问题设计高效算法时,还应考虑“数据”的特性. 当然,有些算法确实以某种方式考虑了"数据"的部分特征. 例如,强凸性通常被许多算法假设. 然而,在算法中使用单一的强凸性模数无疑过于粗糙,无法刻画"数据"的详细特征.

以上面的LASSO问题(3.1)为具体例子,如果A是满列秩,那么目标函数是强凸的. 然而,列满秩不能描述数据的详细分布. 因此,我们不能充分利用数据的特性. 更糟糕的是,在大多数情况下,A具有比行多的列,因此,如果人们没有意识到数据通常是低维的,那么强凸性就不成立.(?)

不幸的是,如何完整地刻画一个数据集仍然是一个未解决的问题. 在统计学中,平均值和方差是典型的量. 高阶统计量包括偏斜度和峰度. 对于更复杂的数据,我们可能不得不像流形学习那样研究它们的流形结构[11],甚至多流形结构[12,13] (图4).

文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_25



Structured Nonconvex Optimization

尽管凸优化对于许多机器学习模型来说是美丽而有效的,例如SVMs (1.1)和稀疏学习(例如特征选择(3.1)),但是现在非凸学习模型非常普遍. 最突出的例子是DNN,它或多或少地改变了人工智能的许多领域. 原因是人们建立模型是出于他们的直觉和洞察力,而不是专注于他们的数学属性.

传统的一般非凸优化理论变得非常不充分,因为它们不像凸优化那样考虑问题的结构. 只能得到表面的结果,如子序列只能得到KKT点(对于约束问题)或鞍点(对于无约束问题).

这样的结论对于想知道解的质量的机器学习者来说并不完全正确,例如,解离全局最优解有多近,鞍点的分布是什么,解受数据扰动的鲁棒性有多强等等. 利用问题的结构肯定有帮助,也是必要的.

例如,可以证明对于一些非凸低秩问题,如矩阵感知、矩阵补全和鲁棒主成分分析:
文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_26
其中,文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_27文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_28都有文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_29列,文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_30是要估计的低秩矩阵,不存在虚假的局部最小值[14,15]. 解决这些问题的线性收敛甚至加速线性收敛可以通过利用特殊的结构如限制性强凸性来证明[16]: 在集合文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_31文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_32是限制性文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_33强凸的,如果:

文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化算法_34

landscape 的一些问题也可以分析[17]。在机器学习社区中,有很多关于接近和逃离鞍点的工作[18]. 一些凸优化方法可以适用于非凸问题,如非凸加速邻近梯度(accelerated proximal gradient) [19]和非凸交替方向乘子法(alternating direction method of multipliers) (ADMM) [20,21]. 最近针对非凸问题引入了Kurdyka–ojasewicz条件,这是一个显著的进步[22]. 然而,应该发明更多的机器来分析非凸问题.



Consider Real Computing Environments



机器学习是一个实用的领域. 当提出一个学习模型时,期望它能够在真实的计算环境中高效地实现,而真实的计算环境通常对计算资源有硬限制,例如存储、内存、通信带宽甚至故障. 在不考虑计算环境的情况下,在单台计算机上表现良好的理想优化算法(例如内点法)在处理大数据时可能无效甚至无用. 人们对随机化、分布式和异步算法重新产生了兴趣,这些算法考虑用部分数据进行计算(例如,随机梯度下降[23]和随机ADMM [24]),最小化通信[25],处理通信中的延迟[26],甚至处理一些计算代理的故障[27]. 尽管如此,需要更多的人参与优化. 优化人员的大部分工作仍然假设理想的计算环境,或者调查一些参数设置的太多细节(例如,步长的动态选择),这些在现实中并不十分重要.



Automated Machine Learning



自动机器学习(AutoML)是将机器学习应用于现实问题的端到端过程自动化的过程. 在典型的机器学习应用中,必须进行数据预处理、特征提取和特征选择等. 适当地使得数据适合目标机器学习任务. 为了获得令人满意的结果,实践者还必须尝试不同的学习模型,调整它们的超参数并优化它们的正常参数. 这些步骤大多超出了非专家的能力. 因此,AutoML被提出作为基于人工智能的解决方案,以应对应用机器学习这一日益增长的挑战. 应用机器学习的端到端过程的自动化提供了产生更简单的解决方案、更快地创建那些解决方案和模型的优势,这些解决方案和模型通常执行手动设计的模型. 自动大大降低了应用机器学习技术的门槛,让非专家更容易进行机器学习. 因此,它代表了机器学习的未来方向之一[28].

已经有一些软件可以完成部分自动步骤. 例如,H2O汽车和MLR可以进行超参数优化和模型选择;Auto-WEKA、Auto-SKLEARN、Firefly.ai、TPOT、TransmogrifAI、RECIPE可以做全流水线优化;DEVOL、Google AutoML(图5)和Auto Keras可以对不同类型的数据(如图像/视频、文本和自然语言)进行深度神经网络架构搜索.

然而,总的来说,AutoML仍然处于初级阶段,并且使用非常幼稚的方法. 例如,在超参数优化中,经常使用网格搜索;在流水线优化和深度神经网络体系结构搜索中,经常使用遗传编程. 对于深度神经网络体系结构的搜索,已经取得了显著的进展[29]. 例如,通过使用差分架构搜索,可以在4个GPU 文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_35天内找到一个好的架构,而基于进化学习的搜索和基于强化学习的搜索分别需要3150个GPU文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_35天和1800个GPU文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_数据_35天[30].

然而,仍然需要更有效和更通用的搜索策略. 一般来说,AutoML是一个高度复杂的优化系统(图6). 它涉及多种优化,例如离散优化(例如,用于搜索网络的超参数和拓扑)、非凸优化(例如,用于优化网络的权重)、双层优化(例如,用于评估测试集的性能)和分布式优化等. 因此,AutoML是各种优化技术的很好的测试平台.

文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_38

文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?_优化_39



How Can Machine Learning Help Optimization Better?



虽然机器学习对更实用的优化技术的需求本身就是优化社区的推进器,例如ADMM的复兴[20,21,24,31],但机器学习也可以带来新的优化技术. 例如,像随机方差缩减梯度[32]和AdaGrad [33]这样的算法是由机器学习人员提出的,但是对于优化人员来说相对较新. 其他种类的新技术来自机器学习的数据驱动特性. 不幸的是,目前机器学习启发的优化算法仍然属于启发式算法的范畴, 严谨的分析尚待完成. 这与第3.1节中描述的问题有些关系



Optimization by Learning



对于许多计算复杂度很高的问题,如组合问题这类NP难问题和具有大量不动点的非凸问题,没有有效的方法找到它们的全局最优解. 许多启发式方法都可以应用,包括直接作为求解器的机器学习方法. 基本思想遵循传统的机器学习范式:首先准备输入输出训练样本,训练非线性映射. 然后,给定一个新的输入,映射可以预测一个解决方案. 沿着这条路线已经有了一些初步的工作[34,35].



Learning Based Optimization



机器学习可以做出贡献的另一种方式是使用机器学习技术来设计传统的优化方法,其参数最适合特定类型的数据. 例如,李和马利克[36]注意到,大多数梯度下降方法使用过去梯度的线性组合. 因此,他们利用强化学习来学习组合系数. 另一个独立的工作由Andrychowiczetal完成. [37]使用一种称为长短期记忆(LSTM)的特殊类型的递归神经网络来设计梯度下降算法. 这两项工作都显示出比手工算法更快的数据收敛速度. 不难看出,一些关键参数,如步长,也可以学习,而不是采用启发式规则. 一些初步工作包括可微线性化ADMM [6]和灵活迭代模块化算法[38]. 它们都将一些参数放宽为可学习的参数,甚至引入神经网络来代替线性变换。值得注意的是,在一些温和的假设下,它们都有收敛保证.



Automatic Code Generation



已经有一些关于使用机器学习技术自动生成代码的工作. 例如,谷歌DeepMind开发了一个神经程序解释器,这是一个递归和合成的神经网络,可以学习表示和执行程序[39]. 虽然它仍然只能生成简单的程序,但预计未来人工智能可以生成越来越多的复杂程序[40,41]. 优化代码也有可能自动生成,至少对于某些类型的问题是如此.



Conclusions



通过上面的阐述,很明显,如果更多的研究人员热衷于其他领域的发展,优化和机器学习将会更好地相互受益. 如果这两个领域相互开放,而不是因为担心被入侵而处于防御状态,它们将变得更加强大.