Skip to content

Excursion-Studio/convex-optimization-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

Repository files navigation

凸优化教程

项目介绍

本教程为具备基础数学知识(高数、线代、概统等)的学习者提供凸优化的入门介绍。教程内容涵盖凸优化的基本概念、理论、算法以及在各个领域的应用案例。

目录结构

├── .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                             # 侧边栏配置文件

内容概览

第1章 介绍与预备知识

  • 课程介绍:什么是最优化?凸优化的重要性与应用领域,课程内容与学习目标
  • 数学预备知识:向量与矩阵运算复习,多元函数微积分,线性代数基础,概率论基础
  • 习题:2个习题,包括向量范数性质证明和函数梯度计算

第2章 凸集与凸函数基础

  • 凸集:定义与基本性质,重要的凸集示例,凸集的运算,分离定理与支撑超平面
  • 凸函数:定义与一阶、二阶条件,常见的凸函数示例,保凸运算,拟凸函数与对数凹函数
  • 共轭函数:定义与性质,计算示例,Fenchel不等式
  • 习题:2个习题,包括凸集证明和凸函数证明

第3章 凸优化问题

  • 优化问题的基本形式:标准形式,可行解与最优解,局部最优与全局最优
  • 凸优化问题的定义与性质:标准形式,最优性条件,等价变换
  • 常见的凸优化问题:线性规划(LP),二次规划(QP),二次约束二次规划(QCQP),半正定规划(SDP),几何规划(GP)
  • 习题:1个习题,线性规划问题标准化

第4章 无约束优化算法

  • 一阶方法:梯度下降法,步长选择策略,动量法,随机梯度下降
  • 二阶方法:牛顿法,拟牛顿法(BFGS、DFP等),共轭梯度法
  • 算法收敛性分析:收敛速率的定义,各种算法的收敛性分析
  • 习题:1个习题,梯度下降法迭代计算

第5章 约束优化算法

  • 等式约束优化:拉格朗日乘数法,梯度投影法
  • 不等式约束优化:KKT条件,可行方向法,梯度投影法的扩展
  • 内点法:障碍函数法,原始对偶内点法,内点法的计算复杂度
  • 罚函数与增广拉格朗日法:罚函数法,增广拉格朗日法,交替方向乘子法(ADMM)
  • 习题:1个习题,拉格朗日乘数法应用

第6章 对偶理论

  • 拉格朗日对偶:拉格朗日函数,对偶函数与对偶问题,弱对偶与强对偶,Slater条件与其他约束规范
  • 对偶性的应用:对偶问题的求解,灵敏度分析,对偶间隙的利用
  • 鞍点解释:鞍点的定义,鞍点与最优解的关系,极大极小不等式
  • 习题:1个习题,线性规划对偶问题构造

第7章 应用案例

  • 机器学习中的应用:线性回归与岭回归,逻辑回归,支持向量机,神经网络训练中的优化问题
  • 信号处理中的应用:稀疏信号恢复,滤波器设计,压缩感知
  • 控制系统中的应用:线性二次调节器,模型预测控制,鲁棒控制
  • 金融中的应用:投资组合优化,风险管理,期权定价中的优化问题
  • 习题:1个习题,线性回归模型拟合

第8章 附录与参考资料

  • 数学补充:矩阵分析补充(矩阵范数、条件数、特征值分解),概率论补充(概率不等式),数值分析基础
  • 软件工具:CVX,CVXPY,MATLAB优化工具箱,Python优化库
  • 参考资料:推荐教材,经典论文,在线资源与课程

编程练习

  • 编程练习:包含10个编程练习,涵盖梯度下降法、线性回归、线性规划、拉格朗日乘数法、岭回归、牛顿法、共轭梯度法、逻辑回归、随机梯度下降和Adam优化器
  • 每个练习包含:Python代码、Matlab代码、应用场景介绍

习题解答

  • 习题解答:包含各章节习题的详细解答
  • 综合习题:包含综合性的优化问题,适合用来提升综合解决问题的能力(持续更新……)

学习建议

  1. 按顺序学习:建议从第1章开始,按顺序学习各章节内容,因为后续章节会依赖前面的知识

  2. 理论与实践结合

    • 每学完一章后,尝试完成章节末尾的习题
    • 参考 习题解答 中的习题解答进行校对
    • 尝试使用第8章介绍的软件工具实现一些简单的优化问题
    • 完成 编程练习 中的编程练习,通过实际编码加深对算法的理解,更接近于当前主流的技术
  3. 关注应用:第7章的应用案例展示了凸优化在各个领域的实际应用,有助于理解凸优化的重要性和实用性

  4. 利用综合习题综合题 可以帮助您综合运用所学知识,解决更复杂的优化问题

参考资料

  • 《凸优化》(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

适用人群

  • 具备基础数学知识(高等数学、线性代数、概率论与数理统计等)的本科生或研究生
  • 对优化理论和方法感兴趣的工程师、研究人员
  • 需要在机器学习、信号处理、控制系统、金融等领域应用优化技术的专业人士

学习目标

通过本教程的学习,您将:

  1. 掌握基本概念:理解凸集、凸函数、凸优化问题等基本概念
  2. 学习优化算法:掌握无约束和约束优化的主要算法
  3. 理解对偶理论:掌握拉格朗日对偶理论及其应用
  4. 解决实际问题:能够将实际问题建模为凸优化问题并求解
  5. 应用软件工具:学会使用常见的优化软件工具

About

A convex optimization tutorial for who wants to expedite learning.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages