我猜中了开头,但我猜不中这结局。— 大话西游 紫霞
🏰代码及环境配置:请参考 环境配置和代码运行!
本节提供了 梯度下降法,牛顿法的代码测试:
python3 tests/optimization/optimize_method_test.py
5.2.c.1 Rosenbrock Function
Rosenbrock Function是一个在数学最优化领域中广泛使用的非凸函数,由Howard Harry Rosenbrock在1960年提出。该函数也被称为Rosenbrock山谷、Rosenbrock香蕉函数或简称为香蕉函数。上图的蓝色山谷型部分就是Rosenbrock Function, 它的定义如下:
f ( x , y ) = ( a − x ) 2 + b ( y − x 2 ) 2 f(x, y)=(a-x)^2+b\left(y-x^2\right)^2 f(x,y)=(a−x)2+b(y−x2)2
Rosenbrock Function有以下特性:
- 非凸性:Rosenbrock函数是一个非凸函数,其全局最小值位于一个平滑的碗状形状的底部,但函数表面存在多个局部最小值,这使得优化算法容易陷入局部最优解。
- 强烈的倾斜性:当参数 b 较大时,函数在 y 方向上的变化比 x 方向更为剧烈,这增加了优化算法找到全局最小值的难度。
- 长谷底:Rosenbrock函数的图像中存在一个较长的谷底(香蕉型山谷),当优化算法进入这个谷底时,需要更多的步骤才能抵达全局最小点。
- 梯度稀疏性:在全局最小点附近,函数的梯度非常小,常常趋近于零,这使得基于梯度的优化算法可能需要很多次迭代才能收敛到最小值。
Rosenbrock的全局最小值在 ( 1 , 1 ) (1,1) (1,1)点, 并且在谷底存在多个局部最小值.
接下来, 我们会分别用梯度下降法和牛顿法, 求Rosenbrock Function的极小值.
min Γ 100 ( y − x 2 ) 2 + ( 1 − x ) 2 , Γ = [ x y ] ∈ R 2 \min _{\boldsymbol{\Gamma}} 100\left(y-x^2\right)^2+(1-x)^2, \boldsymbol{\Gamma}=\left[\begin{array}{l}x \\y\end{array}\right] \in \mathbb{R}^2 Γmin100(y−x2)2+(1−x)2,Γ=[xy]∈R2
目标函数的梯度和Hessian矩阵如下:
∇ f ( Γ ) = [ ∂ f ∂ x ( Γ ) ∂ f ∂ y