前言 最优化是运筹学与控制论二级学科下的一个重要研究方向,它研究如何在众多可行方案中找到满足约束条件的最优方案,并计算最优方案所需要的成本或收益。本书主要介绍目标函数和约束函数均为连续函数的非线性最优化问题,这类问题在学术研究和实际应用中普遍存在,学习和研究它具有重要的理论意义和应用价值。 本书主要内容包括四部分。第一部分介绍一维搜索理论与算法,包括第1章和第2章,主要内容有试探法、函数逼近法和非精确线搜索法。一维搜索算法是所有其他搜索算法的基础。第二部分介绍无约束最优化理论与算法,包括第3章和第4章,主要内容有无约束最优性条件、基于梯度的下降方法和基于函数值估计的直接法。无约束最优化是后续约束最优化的基础。第三部分介绍约束最优化理论与算法,包括第5~8章,主要内容有无约束最优性条件、可行方向法、罚函数法和二次规划。第四部分介绍深度学习中的优化算法,包括第9章,深度学习中的优化方法是最优化在近年来的重要新发展方向,对深度学习的发展有重要的促进作用。 非线性最优化是我从硕士到博士,再到参加工作以来一直都在研究的一个领域。在研究生期间,虽然研究得非常深入,但其内容仅仅局限于所从事的研究课题,并未从整体上对最优化理论与算法进行非常深入的学习。参加工作以后,由于开设课程的需要,我开始全面学习非线性最优化。我惊讶地发现,非线性最优化是如此博大精深,以至于就算穷尽毕生精力也不一定能窥得其全貌,更别说完全掌握了。最优化理论与算法无论是对非专业学生还是对专业学生都有相当难度,主要原因有二,一是它用到了大量综合性较强的数学知识,二是算法设计和编程实现对逻辑思维和动手能力要求非常高。我先为计算机专业的研究生开设了“最优化理论与算法”课程,后来随着我院数学一级学科开始招研究生,又给数学类的研究生开设了本课程。从教学的反馈来看,学生普遍对大量的数学推导过程望而却步,不能直观地理解定理和算法的精髓,以至于在算法设计环节难以厘清算法逻辑,更别说编程实现了。后来在疫情期间,我又将该课程录制成视频,分享到B站,没想到的是,视频受到了B站网友的热烈追捧,很快跃升为同类课程排行榜首位,点击量超过了30万次,对于一个非常小众的课程来讲,这算是不小的成就了。究其原因,我认为是因为我在讲授中重在通过一些图形和案例来讲解原理,而非满篇晦涩难懂的证明。同时,我比较注重对算法的实现,每种算法都至少通过一个案例进行编程实现。算法的编程实现需要读者对细节非常精细地进行理解,这非常有助于初学者理解理论知识,通过案例实现的方式也让工程技术人员真实地看到了优化应该如何用在工程实践中。受此鼓舞,我决定再进一步,将我的授课讲义整理成书出版,而编写的思路就是“重理解、重实践、轻证明”。 我从2022年暑假开始动笔写这本书,由于工作比较忙,每天只能在早上和晚上各抽出不到1小时时间来撰写书稿,进度非常缓慢。后来我受学校选派,到了凉山州布拖县地洛镇依子村从事乡村振兴帮扶工作,驻村工作虽然辛苦,但工作内容相对单一,也少了很多杂七杂八的事务,加上腾出了陪伴家人的时间,才有了更多的时间来进行写作,进度快了许多,所以实际上,本书有70%的内容是在偏远的山区村落完成的。 要感谢驻村工作这段经历,虽然名义上是去帮扶当地发展,但我在这一段经历中所获得的远比我所付出的更多。我和同去的另外两位学校同事共同努力,为村上修补了道路,为孩子们装修了图书室,为村民修建了饮水灌溉设施,为村子产业发展打造了蔬菜基地,为先天腿疾儿童送去了电动轮椅,为事实无人抚养儿童募捐学费、生活费。这些工作不仅让我对中国的农村更加了解,也让我感受到了帮助一个地方发展和帮助别人解决困难的巨大成就感,更让我理解了党中央脱贫攻坚、乡村振兴重大行动的伟大意义。驻村期间,我常常被当地村民淳朴的民风所感动,和他们结下了深厚的友谊,他们见证了我的成长,也见证了这本书的诞生。 要感谢我的恩师吴至友教授,Adil Bagirov教授和在我求学道路上无私帮助过我的白富生、赵克全、吴昌质、杜学武等教授,是他们成就了现在的我。感谢母校重庆师范大学的栽培,曾经就读的数学科学学院如今发展蒸蒸日上,我等均以毕业于重庆师范大学数学科学学院而自豪,希望有一天学院也能以培养了我等而骄傲。 要感谢我的本科学生杨佳鑫同学,本书第9章的内容主要来自由我指导的她的本科毕业论文,她提出的方法现已在国际学术期刊上正式发表,也编入了本书最后一节。我始终认为能够碰到几个优秀的学生是作为老师的一生之幸,而杨佳鑫便是其中之一。感谢本书责任编辑赵佳霓,她在本书的编写、校对和排版过程中做了大量细致的工作,没有她的帮助,本书不可能顺利出版。 特别地,要感谢我的家人,尤其是爱妻文静,在我驻村工作期间,她不仅要全职工作,还要照顾两个孩子和偶尔负责我的后勤,这其中的艰辛,我是很难体会的。两个小天使也是我写作的强大动力,虽然他们不再像上一本书写作期间那样时不时询问: “爸爸,你的书写得怎样了?”但是他们用在学校中的实际表现告诉我: “爸爸,你小心被我们拍在沙滩上哦。”为了不那么快地被他们拍在沙滩上,我当然只有一刻也不能停下前进的脚步了。 本书的出版得到了国家自然科学基金面上项目(项目编号: 12371258)的资助,特此感谢。 最后,由于个人能力有限,书中难免有疏漏之处,还望读者批评指正,不胜感激。 龙强 2025年1月 于凉山州布拖县地洛镇依子村 目录 教学课件(PPT)及源码 第1章绪论(270min) 1.1最优化概述 1.2最优化问题的模型及分类 1.2.1最优化问题的标准模型 1.2.2最优化问题的分类 1.3最优化问题举例 1.4数学预备知识 1.4.1向量范数 1.4.2方阵范数 1.4.3序列的极限 1.4.4梯度、海森矩阵、泰勒展式 1.4.5雅可比矩阵、链式法则 1.5凸集与凸函数 1.5.1凸集 1.5.2典型的凸集 1.5.3凸集分离定理 1.5.4凸函数 1.5.5凸函数的判定 1.5.6凸函数的性质 1.5.7凸规划 第2章一维搜索(306min) 2.1优化问题的基本框架 2.2一维搜索的概念 2.3一维优化的最优性条件 2.4算法的收敛性 2.4.1算法收敛的定义 2.4.2收敛速度 2.4.3实用收敛准则 2.5试探法 2.5.1单峰函数 2.5.2黄金分割法 2.5.3斐波那契法 2.5.4试探法案例 2.6函数逼近法 2.6.1牛顿法 2.6.2割线法 2.6.3抛物线法 2.6.4函数逼近法案例 2.7非精确一维搜索 2.7.1ArmijoGoldstein步长准则 2.7.2WolfPowell步长准则 2.7.3简单准则和后退法 2.7.4非精确一维搜索案例 第3章无约束优化的梯度方法(295min) 3.1无约束优化的最优性条件 3.1.1下降方向 3.1.2一阶必要条件 3.1.3二阶必要条件 3.1.4二阶充分条件 3.1.5充要条件 3.1.6最优性条件应用案例 3.2最速下降法 3.2.1最速下降方向 3.2.2最速下降法 3.2.3最速下降法案例 3.2.4最速下降法的收敛性 3.3牛顿法 3.3.1基本原理 3.3.2牛顿法的算法步骤和流程 3.3.3牛顿法的改进 3.3.4牛顿法案例 3.4共轭梯度法 3.4.1共轭方向 3.4.2二次函数的共轭梯度法 3.4.3一般函数的共轭梯度法 3.4.4共轭梯度法案例 3.5拟牛顿法 3.5.1对称秩1(SR1)校正法 3.5.2DFP校正法 3.5.3BFGS校正法 3.5.4拟牛顿法案例 第4章无约束优化的直接方法(163min) 4.1探测搜索 4.1.1探测搜索算法 4.1.2探测搜索案例 4.2交替方向法 4.2.1交替方向法原理 4.2.2交替方向法案例 4.3HookeJeeves方法 4.3.1HookeJeeves方法简介 4.3.2HookeJeeves方法的案例 4.4Rosenbrock方法 4.4.1Rosenbrock方法简介 4.4.2Rosenbrock方法的案例 4.5Powell方法 4.5.1Powell方法简介 4.5.2Powell方法的案例 4.6单纯形法 4.6.1单纯形 4.6.2单纯形迭代 4.6.3单纯形法停止准则 4.6.4单纯形法的算法步骤和流程 4.6.5单纯形法的案例 第5章约束优化问题的最优性条件(311min) 5.1约束优化问题最优性条件的基本思想 5.1.1下降方向 5.1.2可行方向 5.1.3几何描述 5.2不等式约束优化问题的一阶最优性条件 5.2.1用积极约束表达的几何最优性条件 5.2.2Fritz John条件 5.2.3KarushKuhnTucker(KKT)条件 5.3一般约束优化问题的一阶最优性条件 5.3.1几何最优性条件 5.3.2Fritz John必要条件 5.3.3KKT必要条件 5.4对偶问题及鞍点最优性条件 5.4.1拉格朗日对偶问题 5.4.2对偶定理 5.4.3鞍点最优性条件 第6章可行方向法(203min) 6.1Zoutendijk可行方向法 6.1.1线性约束情形 6.1.2非线性约束情形 6.2Rosen梯度投影法 6.2.1投影和投影矩阵 6.2.2Rosen的算法步骤和流程 6.3FrankWolfe方法 6.3.1FrankWolfe方法原理 6.3.2FrankWolfe方法的算法 第7章罚函数法(164min) 7.1外点罚函数法 7.1.1基本思想 7.1.2算法原理 7.1.3算法步骤 7.2内点罚函数法 7.2.1基本思想 7.2.2算法原理 7.2.3算法步骤 7.3乘子法 7.3.1算法思想 7.3.2只含等式约束的乘子法 7.3.3只含不等式约束的乘子法 第8章二次规划问题(183min) 8.1基本性质 8.2只含等式约束的二次规划问题 8.2.1变量消去法 8.2.2拉格朗日法 8.3积极约束法 8.3.1基本思想 8.3.2算法原理 8.3.3算法步骤 8.4路径跟踪法 8.4.1松弛KKT条件 8.4.2求解松弛KKT条件 8.4.3路径跟踪法算法流程 第9章机器学习中的最优化方法 9.1机器学习中的优化问题 9.2梯度下降算法 9.2.1标准梯度下降算法 9.2.2随机梯度下降算法 9.2.3Minibatch梯度下降算法 9.3对搜索方向的改进 9.3.1Momentum算法 9.3.2Nesterov Momentum算法 9.4对学习率的改进 9.4.1Adagrad算法 9.4.2RMSprop算法 9.5结合搜索方向和学习率的改进 9.5.1Adam算法 9.5.2Nadam算法 9.5.3Amsgrad算法 9.6NewAdam算法 参考文献