学习资源 | 如何学习优化算法?
无论是在近几年火热的人工智能领域,还是传统的工程制造领域,很多场景下都会涉及一个优化问题。这一点对于机器学习更为明显,无论是传统机器学习,还是强化学习,无一例外,最终的问题都会归结为一个优化问题,或者是一个凸优化、或者非凸优化、或者黑盒优化。甚至可以说,当前阶段,优化算法直接影响着CV、NLP等系统的效果好坏。优化算法到底是什么?该怎么学习?本文就来谈一下我的个人看法,希望能够对大家有所帮助。
—▼—
前言
在学习机器学习的一段时间之后,如果善于总结都会发现,无论是传统机器学习中比较经典的支持向量机,还是深度学习,无论是目前应用较广的计算机视觉,还是让AlphaGo大发神威的强化学习,最终都会涉及一个优化问题,或者是微积分系列的凸优化算法,或者是粒子群、蚁群等群体智能优化算法,或者是近几年比较热门的黑盒优化算法。尤其是近两年在工业控制方面契合度较高的强化学习,仔细分析它的模型,其实就是一个数学优化模型。最优化问题在当今的军事、工程、管理等领域有着极其广泛的应用。因此,优化算法的重要性可见一斑。理解优化算法,能够有助于理解深度学习的运作过程,对于模型的优化和改进也大有益处。本文就概括一下常用的优化算法并介绍一些学习资源。
优化算法概括
我个人对优化算法划分主要为3类,分别是:
凸优化
智能优化
黑盒优化
其中目前用的比较广泛的,尤其是在机器学习领域就是凸优化,例如梯度优化算法系列的梯度下降法、随即梯度下降、小批量梯度下降法、动量法momentum、Adagrad、RMSProp、Adadelta、Adam等,它们都是以梯度下降法为基础,在梯度下降法的基础上进行改进和优化。除了常用的这些还有牛顿法系列,以及无约束优化算法中的模式搜索法、Rosenbrock方法、单纯形搜索法、Powell方法。
凸优化虽然很成熟,但是很多工程问题并非是严格的符合凸优化的要求,换句话说,它是一个非凸优化问题,这样直接利用前面提到的这些算法很容易陷入局部最小值。因此,为了满足工程需求,研究者会根据问题的需求提出一些新颖的优化算法,其中就包括目前在工程应用领域比较热门的群体智能优化算法系列,例如,粒子群优化、模拟退火法、遗传算法,它们以独特而适应性强的有点在工程应用领域倍受欢迎,尤其是在复杂数学模型求解问题中能够更快速的求解同时避免陷入局部最优。
黑盒优化算法我最初是在谷歌开放的内部调参系统Google Vizier介绍论文Google Vizier: A Service for Black-Box Optimization提到的。在前面的优化算法中,优化问题都是建立在一个完整的数学模型基础之上,但是现实世界中很多场景是很难用数学模型来描述,或者没有数学模型,例如我们经常接触到的交通系统。在这种问题求解过程中,上述严格依赖数学模型的优化算法就显得有些捉襟见肘。谷歌在2017年在开放内部调参系统的介绍论文中详细介绍了它们用于调参的几种优化算法,其中包括如下几种算法:
贝叶斯优化
进化策略
SMAC
随机搜索
并在文中详细的对比了几种黑盒优化算法的效果。
下面分别针对这3类优化算法介绍一些学习资料。
凸优化算法
凸优化算法在目前机器学习中用的较多,其中分别有:
梯度下降法
动量法
Adam
RMSProp
Adagrad
...
感兴趣的可以看我的另一篇文章,里面对机器学习中常用的优化算法推导过程及不同算法之间的关系进行了详细的阐述:一文了解人工智能中常用的优化算法
由于凸优化发展时间较长,而且理论体系比较完善,因此在微积分、数值计算等课程中都会涉及一部分,但是分布比较零散,不同于目前机器学习系列的课程,针对性较强,而且内容专一。虽然课程方面没有针对纯粹优化算法的,但是书籍方面却有很多,在这里我推荐两本不错的凸优化算法的书籍,
《最优化理论与方法》--袁亚湘,孙文瑜
作者袁亚湘为中国科学院院士、数学家,在计算数学、运筹学、应用数学领域有较深入的研究。曾有幸听过袁亚湘院士到学校开的优化算法专题讲座,真可谓是"听君一席话,胜读十年书",于是就购买了袁亚湘院士的这本书籍。语言生动而易懂,系统地介绍了无约束量优化,约束优化和非光滑量优化的理论和计算方法,内容全面而丰富。
《最优化理论与算法(第2版)》--陈宝林
本书是陈宝林教授在多年的授课基础之上编著而成,与袁亚湘院士的书籍目录划分结构不同,但是我认为这种内容分层更有助于初学者的学习,他分别把优化算法划分成单纯形方法、对偶理论、灵敏度分析、运输问题、内点算法、非线性规划KT条件、无约束优化方法、约束优化方法、整数规划和动态规划等内容。
智能优化算法
智能优化算法的发展历史相对而言要短一些,但是由于都是在工程应用领域遇到瓶颈是应运而生,因此它的实用价值和效果更加让它们受欢迎,目前比较经典的智能优化算法有,
遗传算法
禁忌搜索
模拟退火法
蚁群算法
粒子群优化算法
由于智能优化算法更多是应工程应用需求而生,因此在数学模型方面并没有太多改进,因此在通识教育的数学课程中也很少涉及,同时,相关的书籍较少,在这里我就推荐一本智能优化算法的书籍。
《智能优化方法》--汪定伟
之所以推荐这本书,更多的是因为它的全面,它几乎囊括了目前所有主流的智能优化算法,其中当然就有遗传算法、蚁群算法、粒子群算法等。书中讨论这些算法的产生和发展、算法的基本思想和理论、基本构成、计算步骤和主要的变形以及数值例子和实际应用,对于学习者非常友好。
黑盒优化算法
就如同前文所讲,黑盒优化算法我最初是在2017年谷歌开放内部调参系统的介绍论文中看到的,它详细的介绍了内部调参系统Google Vizier使用的几种主流黑盒优化算法。之所以称之为黑盒,就是因为在这类优化问题中我们没有数学模型,我们不清楚优化的目标函数到底什么样。这种场景和我们日常所接触的现实场景更加贴近,因此它的实用价值自然不言而喻。
在谷歌的这篇文章中,不仅介绍了系统内部使用的黑盒优化算法,还在不同维度求解问题下对比了以下几种优化算法的效果:
随机搜索
贝叶斯
SMAC
进化策略
概率搜索
虽然谷歌的文章发表于2017年,但是里面提及的算法并不算新颖,其中的算法都是经过几年甚至几十年的不断改进而形成现如今的样子,所以要想详细学习需要看一下Google Vizier: A Service for Black-Box Optimization这篇提及的参考文献,比较零散。虽然这些成熟算法的理论体系比较零散,但是它们共同用到的理论知识却是成体系的,它们都用到了概率论\随机过程相关的知识,尤其是其中表现较好的贝叶斯优化和进化策略,都是建立在高斯过程的基础之上,因此,本文就推荐1本随机过程方面的书籍,对这些概率论\随机过程的基础知识有所了解更加有助于对这些成形算法的理解。
《随机过程(原书第2版)》--Sheldon M.Ross
本书由世界著名的应用概率专家和统计学家Sheldon M. Ross编著,本书介绍了从概率论基础概念,到各种常见的分布模型。详细的介绍随机过程中经典的知识,包括Poisson过程、Markov链、鞅、Brown运动、随机序关系、Poisson逼近,并详细的介绍了这些理论的应用,更加有助于理解和学习。
▲
END
长按扫码可关注