From e28c1e382c229bd2c5f082164ec81464a5b00f25 Mon Sep 17 00:00:00 2001 From: peng00bo00 Date: Wed, 3 Jul 2024 15:17:45 +0400 Subject: [PATCH] Update 2024-07-03-GAMES001-NOTES-13.md --- _posts/2024-07-03-GAMES001-NOTES-13.md | 103 +++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/_posts/2024-07-03-GAMES001-NOTES-13.md b/_posts/2024-07-03-GAMES001-NOTES-13.md index 258eb46..1351db6 100644 --- a/_posts/2024-07-03-GAMES001-NOTES-13.md +++ b/_posts/2024-07-03-GAMES001-NOTES-13.md @@ -12,8 +12,111 @@ sidebar: > 这个系列是GAMES001-图形学中的数学([GAMES 001: Mathematics in Computer Graphics](https://games-cn.org/games001/))的同步课程笔记。课程旨在总结归纳图形学学习过程中重要的数学概念、理论和方法,并将以索引的形式在每一章节中穿插讲解该数学专题在图形学中的应用。本课程既可以作为GAMES系列其它课程学习的基础或"手册",也可以作为站在不一样的视角复习图形学知识的平台。本节主要介绍求解数学优化的相关技术。 +数学优化是一个非常广泛且重要的研究领域。从形式上来看,优化问题的目标是最小化一个函数$$f(x)$$。在这个过程中,优化目标函数$$f$$和待优化的变量$$x$$既可以是离散的,也可以是连续的。同时,变量$$x$$还可能需要满足一定的约束条件$$C$$,记为$$x \in C$$。针对不同类型的优化问题,人们设计了各种优化算法来进行求解。 + +
+ + +
+ ## 无约束优化 +优化问题中最基础的是无约束优化问题。此时可以令$$C$$为全空间,同时假设$$x \in \mathbb{R}^n$$是连续的向量,且目标函数$$f(x)$$是连续可微的函数。 + +
+ +
+ +在这样的框架下,许多问题,例如最小二乘法、曲面参数化以及弹性体仿真等,都可以等价地表示为无约束优化问题。 + +
+ + + + +
+ +### 线搜索 + +**线搜索(line search)**是求解无约束优化的一类经典方法,它的基本思想是从当前位置$$x_k$$出发向$$p_k$$方向移动$$\alpha_k$$步长来逐步最小化目标函数。显然,线搜索方法的核心在于如何确定移动方向$$p_k$$以及步长$$\alpha_k$$这两个量。 + +
+ +
+ +#### 梯度下降 + +**梯度下降(gradient descent)**是线搜索中最常见的一种方法。在梯度下降算法中,我们选择目标函数的负梯度方向作为前进方向,即$$p_k = -\nabla f (x_k)$$。而要确定移动步长$$\alpha_k$$则相对复杂一些,实践中常使用Armijo条件来进行计算。 + +
+ + +
+ +结合Armijo条件的梯度下降算法流程可以参考下面ppt。 + +
+ +
+ +#### 牛顿迭代 + +梯度下降法只考虑了优化目标函数的一阶信息。为了获得更快的收敛速度,可以结合目标函数的二阶信息,此时得到的算法称为牛顿法。使用牛顿法时,通常要求目标函数在当前位置的Hessian矩阵为正定矩阵。如果Hessian矩阵不是正定的,则需要使用一些额外的方法将其转换为正定矩阵来进行处理。 + +
+ + +
+ +牛顿法的算法流程可以参考下面的ppt。 + +
+ +
+ +与梯度下降法相比,牛顿法通常具有更快的收敛速度,并且可以避免一些震荡的情况。 + +
+ +
+ +#### 拟牛顿法 + +牛顿法的一个缺陷在于每一步迭代中需要计算Hessian矩阵并求解线性方程组来获得前进方向。在某些问题中,这两个步骤可能比较困难且相对耗时。针对这样的问题,我们可以使用一个更容易计算的矩阵$$B_k$$来近似Hessian矩阵,这样的一类方法称为拟牛顿法。 + +
+ +
+ +[BFGS算法](https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm#:~:text=In%20numerical%20optimization%2C%20the%20Broyden,the%20gradient%20with%20curvature%20information.)是目前应用最为广泛的一种拟牛顿法。 + +
+ + + + +
+ +BFGS算法的流程可以参考下面的ppt。 + +
+ +
+ +在BFGS算法的基础上,进一步发展出了[L-BFGS算法](https://en.wikipedia.org/wiki/Limited-memory_BFGS),旨在降低算法在计算和存储方面的开销。目前,L-BFGS是许多数值计算软件中默认的优化算法。 + +
+ +
+ +### 不动点迭代 + +从优化的角度来看,我们之前介绍过的[不动点迭代](/2024/06/21/GAMES001-NOTES-12.html#不动点迭代)实际上也是一种拟牛顿法。 + +
+ +
+ ## 带约束优化 ## Reference