本教程为具备基础数学知识(高数、线代、概统等)的学习者提供凸优化的入门介绍。教程内容涵盖凸优化的基本概念、理论、算法以及在各个领域的应用案例。
├── .nojekyll # 防止Jekyll处理的标记文件
├── index.html # 项目根目录HTML文件
└── docs/ # 文档主目录
├── README.md # 项目说明文档
├── chapter01/ # 第1章 目录
│ └── chapter1_introduction.md # 第1章 介绍与预备知识
├── chapter02/ # 第2章 目录
│ └── chapter2_convex_sets_functions.md # 第2章 凸集与凸函数基础
├── chapter03/ # 第3章 目录
│ └── chapter3_convex_optimization_problems.md# 第3章 凸优化问题
├── chapter04/ # 第4章 目录
│ └── chapter4_unconstrained_optimization.md# 第4章 无约束优化算法
├── chapter05/ # 第5章 目录
│ └── chapter5_constrained_optimization.md# 第5章 约束优化算法
├── chapter06/ # 第6章 目录
│ └── chapter6_duality_theory.md # 第6章 对偶理论
├── chapter07/ # 第7章 目录
│ └── chapter7_applications.md # 第7章 应用案例
├── chapter08/ # 第8章 目录
│ └── chapter8_appendix.md # 第8章 附录与参考资料
├── assets/ # 资源目录
│ ├── css/ # CSS样式目录
│ │ └── styles.css # 样式文件
│ └── img/ # 图片目录
│ └── excursion_logo.png # 标志图片
├── code/ # 代码示例目录
│ └── programming.md # 编程练习与示例代码
├── quiz/ # 习题目录
│ ├── comprehensive_exercises.md # 综合习题
│ └── exercise_solutions.md # 习题解答
├── _navbar.md # 导航栏配置文件
└── _sidebar.md # 侧边栏配置文件
- 课程介绍:什么是最优化?凸优化的重要性与应用领域,课程内容与学习目标
- 数学预备知识:向量与矩阵运算复习,多元函数微积分,线性代数基础,概率论基础
- 习题:2个习题,包括向量范数性质证明和函数梯度计算
- 凸集:定义与基本性质,重要的凸集示例,凸集的运算,分离定理与支撑超平面
- 凸函数:定义与一阶、二阶条件,常见的凸函数示例,保凸运算,拟凸函数与对数凹函数
- 共轭函数:定义与性质,计算示例,Fenchel不等式
- 习题:2个习题,包括凸集证明和凸函数证明
- 优化问题的基本形式:标准形式,可行解与最优解,局部最优与全局最优
- 凸优化问题的定义与性质:标准形式,最优性条件,等价变换
- 常见的凸优化问题:线性规划(LP),二次规划(QP),二次约束二次规划(QCQP),半正定规划(SDP),几何规划(GP)
- 习题:1个习题,线性规划问题标准化
- 一阶方法:梯度下降法,步长选择策略,动量法,随机梯度下降
- 二阶方法:牛顿法,拟牛顿法(BFGS、DFP等),共轭梯度法
- 算法收敛性分析:收敛速率的定义,各种算法的收敛性分析
- 习题:1个习题,梯度下降法迭代计算
- 等式约束优化:拉格朗日乘数法,梯度投影法
- 不等式约束优化:KKT条件,可行方向法,梯度投影法的扩展
- 内点法:障碍函数法,原始对偶内点法,内点法的计算复杂度
- 罚函数与增广拉格朗日法:罚函数法,增广拉格朗日法,交替方向乘子法(ADMM)
- 习题:1个习题,拉格朗日乘数法应用
- 拉格朗日对偶:拉格朗日函数,对偶函数与对偶问题,弱对偶与强对偶,Slater条件与其他约束规范
- 对偶性的应用:对偶问题的求解,灵敏度分析,对偶间隙的利用
- 鞍点解释:鞍点的定义,鞍点与最优解的关系,极大极小不等式
- 习题:1个习题,线性规划对偶问题构造
- 机器学习中的应用:线性回归与岭回归,逻辑回归,支持向量机,神经网络训练中的优化问题
- 信号处理中的应用:稀疏信号恢复,滤波器设计,压缩感知
- 控制系统中的应用:线性二次调节器,模型预测控制,鲁棒控制
- 金融中的应用:投资组合优化,风险管理,期权定价中的优化问题
- 习题:1个习题,线性回归模型拟合
- 数学补充:矩阵分析补充(矩阵范数、条件数、特征值分解),概率论补充(概率不等式),数值分析基础
- 软件工具:CVX,CVXPY,MATLAB优化工具箱,Python优化库
- 参考资料:推荐教材,经典论文,在线资源与课程
- 编程练习:包含10个编程练习,涵盖梯度下降法、线性回归、线性规划、拉格朗日乘数法、岭回归、牛顿法、共轭梯度法、逻辑回归、随机梯度下降和Adam优化器
- 每个练习包含:Python代码、Matlab代码、应用场景介绍
- 习题解答:包含各章节习题的详细解答
- 综合习题:包含综合性的优化问题,适合用来提升综合解决问题的能力(持续更新……)
-
按顺序学习:建议从第1章开始,按顺序学习各章节内容,因为后续章节会依赖前面的知识
-
理论与实践结合:
-
关注应用:第7章的应用案例展示了凸优化在各个领域的实际应用,有助于理解凸优化的重要性和实用性
-
利用综合习题:综合题 可以帮助您综合运用所学知识,解决更复杂的优化问题
- 《凸优化》(Convex Optimization)- Stephen Boyd 和 Lieven Vandenberghe
- 《最优化导论》(Introduction to Optimization)- Edwin K. P. Chong 和 Stanislaw H. Zak
- 《数值优化》(Numerical Optimization)- Jorge Nocedal 和 Stephen J. Wright
- 《线性与非线性规划》(Linear and Nonlinear Programming)- David G. Luenberger 和 Yinyu Ye
- 《凸分析与优化》(Convex Analysis and Optimization)- Dimitri P. Bertsekas, Angelia Nedic 和 Asuman E. Ozdaglar
- 具备基础数学知识(高等数学、线性代数、概率论与数理统计等)的本科生或研究生
- 对优化理论和方法感兴趣的工程师、研究人员
- 需要在机器学习、信号处理、控制系统、金融等领域应用优化技术的专业人士
通过本教程的学习,您将:
- 掌握基本概念:理解凸集、凸函数、凸优化问题等基本概念
- 学习优化算法:掌握无约束和约束优化的主要算法
- 理解对偶理论:掌握拉格朗日对偶理论及其应用
- 解决实际问题:能够将实际问题建模为凸优化问题并求解
- 应用软件工具:学会使用常见的优化软件工具