c语言sscanf函数的用法是什么
293
2022-08-23
文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?
学习笔记,仅供参考,有错必纠 关键词:优化;机器学习;概括能力;数据
文章目录
How Can Machine Learning and Optimization Help Each Other Better?
摘要IntroductionDifferent Optimization Goals between the Machine Learning and the Optimization CommunitiesHow Can Optimization Help Machine Learning Better?
Consider Characteristics of DataStructured Nonconvex OptimizationConsider Real Computing EnvironmentsAutomated Machine Learning
How Can Machine Learning Help Optimization Better?
Optimization by LearningLearning Based OptimizationAutomatic Code Generation
Conclusions
How Can Machine Learning and Optimization Help Each Other Better?
摘要
优化是机器学习不可或缺的一部分,因为机器学习需要高效地求解数学模型. 另一方面,机器学习也可以为优化提供新的契机和新思路. 本文旨在研究如何使优化和机器学习之间的相互作用更加有效.
Introduction
翻译:
一些机器学习技术也出现在优化算法中. 本文旨在以我个人和有限的观点调查两个社区如何更好地互相帮助.
Different Optimization Goals between the Machine Learning and the Optimization Communities
首先,我们需要知道机器学习和纯优化社区中优化目标的区别. 在机器学习中,计算一组参数, 从而使机器学习模型获得高精度, 不是目标,至少不是唯一的目标. 当然,如果在相同的时间内,算法A获得了比算法B更高的数值精度,那么算法A肯定比算法B更受欢迎. 然而,机器学习工作者通常会在获得较低但仍可接受的数值精度时停止算法A,以节省时间. 原因是机器学习任务通常强调低分类或聚类错误,这通常用百分比或其他标准来衡量. 由于数据量有限,收集这些数据通常很昂贵,这些数值通常以较低的数值精度报告. 例如,百分比通常最多使用两位小数. 因此计算参数只是一个中间环节,它们的高数值精度在后面的分类或聚类误差评估中并不重要.
分类误差进一步区分为训练误差和测试误差. 训练错误是训练集上的分类错误,而测试错误是测试集上的. 测试误差是机器学习工作者最关心的问题,因为它与学习模型的泛化能力有关,即训练好的学习模型在新数据上的表现如何. 如果训练误差高,则称为欠拟合. 如果训练误差低但测试误差高,则称为过拟合. 理想情况下,我们希望有一个既欠拟合也不过拟合的模型. 相比之下,纯粹优化的人可能不太关心学习模型的物理意义,可能会专注于最小化训练误差.
即使人们意识到最小化测试错误是最重要的,但仍然需要注意. 通常,学习模型还具有优化算法中没有的超参数,例如层数、每层中的滤波器数量和DNNs中的滤波器宽度(在本例中,反向传播算法优化的参数是神经网络的权重). 然后设置验证集,它是训练集的一个子集,用于调整超参数. 即,超参数被选择为那些与优化算法在训练集的剩余部分上计算的参数一起导致验证集上分类错误最低的那些. 即使没有超参数,验证集也是必要的. 例如,当验证误差开始增加时,可以终止对训练集(剩余部分)的优化算法计算. 这是统计学中一种叫做提前停止的正则化. 这种方式弥补了学习模型的缺陷,学习模型的最佳参数不对应于最佳分类/聚类性能.
机器学习工作者关心测试错误而不是训练错误会给优化增加很大的困难. 一个显著的例子是,当训练深度神经网络时,机器学习的人可能更喜欢相对平坦区域的局部极小值,而不是深谷的全局极小值(图2). 这是因为假设测试数据的分布与训练数据相同,测试数据上的目标函数应该是训练数据上的目标函数的扰动. 因此,相对平坦区域的局部极小值会比全局极小值更少增加,这意味着前者具有更好的泛化能力,而后者可能会过度收敛.
在[3]中还讨论了机器学习和优化社区中优化概念的差异,其中作者从机器学习的角度列出了优化算法的一些理想特性:
泛化能力好;对大问题的可伸缩性;在执行时间和内存需求方面的良好实践表现;算法实现简单易行;利用问题结构;快速收敛到模型的近似解;尝试机器学习模型类的鲁棒性和数值稳定性;理论上已知的收敛性和复杂性.
How Can Optimization Help Machine Learning Better?
有趣的是,优化不仅有助于机器学习更有效地计算, 它还可以在其他方面有所帮助. 例如,迭代过程可以展开成深度神经网络. 因此,优化有助于深度神经网络架构设计[4–6]. 图3显示了一些受图像识别优化启发的DNN. 尽管如此,在下文中,我仍然关注计算方面.
Consider Characteristics of Data
在为特定问题设计高效算法时,还应考虑“数据”的特性. 当然,有些算法确实以某种方式考虑了"数据"的部分特征. 例如,强凸性通常被许多算法假设. 然而,在算法中使用单一的强凸性模数无疑过于粗糙,无法刻画"数据"的详细特征.
以上面的LASSO问题(3.1)为具体例子,如果A是满列秩,那么目标函数是强凸的. 然而,列满秩不能描述数据的详细分布. 因此,我们不能充分利用数据的特性. 更糟糕的是,在大多数情况下,A具有比行多的列,因此,如果人们没有意识到数据通常是低维的,那么强凸性就不成立.(?)
不幸的是,如何完整地刻画一个数据集仍然是一个未解决的问题. 在统计学中,平均值和方差是典型的量. 高阶统计量包括偏斜度和峰度. 对于更复杂的数据,我们可能不得不像流形学习那样研究它们的流形结构[11],甚至多流形结构[12,13] (图4).
Structured Nonconvex Optimization
尽管凸优化对于许多机器学习模型来说是美丽而有效的,例如SVMs (1.1)和稀疏学习(例如特征选择(3.1)),但是现在非凸学习模型非常普遍. 最突出的例子是DNN,它或多或少地改变了人工智能的许多领域. 原因是人们建立模型是出于他们的直觉和洞察力,而不是专注于他们的数学属性.
传统的一般非凸优化理论变得非常不充分,因为它们不像凸优化那样考虑问题的结构. 只能得到表面的结果,如子序列只能得到KKT点(对于约束问题)或鞍点(对于无约束问题).
这样的结论对于想知道解的质量的机器学习者来说并不完全正确,例如,解离全局最优解有多近,鞍点的分布是什么,解受数据扰动的鲁棒性有多强等等. 利用问题的结构肯定有帮助,也是必要的.
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是一个高度复杂的优化系统(图6). 它涉及多种优化,例如离散优化(例如,用于搜索网络的超参数和拓扑)、非凸优化(例如,用于优化网络的权重)、双层优化(例如,用于评估测试集的性能)和分布式优化等. 因此,AutoML是各种优化技术的很好的测试平台.
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
通过上面的阐述,很明显,如果更多的研究人员热衷于其他领域的发展,优化和机器学习将会更好地相互受益. 如果这两个领域相互开放,而不是因为担心被入侵而处于防御状态,它们将变得更加强大.
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~