文章目录
- 数学预备知识
- 1、最优化问题
- 2、凸优化
- 2.1、梯度下降
- 2.2、牛顿法
- 2.3、阻尼牛顿法
- 2.4、拟牛顿法
- 2.5、总结
数学预备知识
1、最优化问题
最优化问题指的是在给定条件下,找到一个目标函数的最优解,即找到能够使目标函数取得最大值或最小值的变量取值。常用的优化方法包括线性规划、整数规划、动态规划、遗传算法、模拟退火等。最终,通过对最优解的检验和实施,可以实现资源的最优分配或其他最优解决方案。
最优化的基本数学模型:
m i n f ( x ) min f(x) minf(x)
s . t . h i ( x ) = 0 , g j ( x ) ≤ 0 s.t. \quad h_i(x)= 0 ,\quad g_j(x)≤ 0 s.t.hi(x)=0,gj(x)≤0
- 设计变量:x 是一个实数域范围内的n维向量,被称为决策变量或问题的解;
- 目标函数: f(x) 为目标函数;
- 约束条件: h i ( x ) = 0 , g j ( x ) ≤ 0 \quad h_i(x)= 0 ,\quad g_j(x)≤ 0 hi(x)=0,gj(x)≤0
- 数学公式中的s.t.是subject to的缩写,表示约束条件。
超平面和半空间
二维空间的超平面就是一条线(可以是曲线),三维空间下的超平面是一个面(可以是曲面)。
简单来说,超平面是具有一个变量的空间中的直线、平面等概念的推广。半空间是数学中的一个概念,通常指一个空间中,其中一个方向的值被限定为非负数。例如,在三维空间中,一个半空间可以表示为z≥0,其中z表示垂直于x-y平面的方向。数学表达式如下:
超平面: H = { x ∈ R n ∣ a 1 x 1 + a 2 x 2 + . . . + a n x n = b } H = \{x ∈R^n | a_1x_1+a_2x_2+...+a_nx_n=b\} H={x∈Rn∣a1x1+a2x2+...+anxn=b}
半空间: H + = { x ∈ R n ∣ a 1 x 1 + a 2 x 2 + . . . + a n x n ≥ b } H^+ = \{x ∈R^n | a_1x_1+a_2x_2+...+a_nx_n≥b\} H+={x∈Rn∣a1x1+a2x2+...+anxn≥b}
凸集分离定理
凸集,凸函数,详见 数学预备知识 2.1梯度下降
凸集分离定理是凸集理论中最基本的定理之一,它表明两个不相交的凸集总可以用超平面分离。这个定理在凸优化理论中有重要的应用,因为它提供了将多变量问题转化为多个单变量问题的方法。
如何实现的多变量问题转换为多个单变量问题?
凸集分离定理可以将多变量问题转换为多个单变量问题。具体来说,如果需要将两个不相交的凸集C和D分离,可以通过以下步骤实现:
- 找到一个超平面,使得它与C和D的交点分别为x和y,且x和y分别位于超平面的两侧。
- 将超平面方程中的多个变量化为单个变量,例如将x1, x2, x3化为x1,将y1, y2, y3化为y1。
- 将超平面方程表示为一个关于x1的单变量函数f(x1),使得f(x1) = 0。
- 对于每个变量xi,分别求解f(xi) = 0,得到一组单变量方程。
- 对于每个单变量方程,求解其根xi,如果xi同时满足C和D的定义域,则将xi代入超平面方程中得到超平面方程中的常数项a。
- 将超平面方程中的常数项a表示为多个变量的函数g(x1, x2, …, xn),其中每个变量对应一个单变量方程。
- 将超平面方程中的常数项a表示为多个变量的函数g(x1, x2, …, xn)后,可以将其代入原多变量问题中,得到一个新的多变量问题,这个问题的解即为原问题的解。
通过以上步骤,就可以将多变量问题转换为多个单变量问题。这种方法在凸优化理论中有重要的应用,因为它可以将多变量问题转化为多个单变量问题,从而简化问题的求解。
(暂不理解这个步骤2的替换如何实现的)
2、凸优化
2.1、梯度下降
传送门:ML算法—梯度下降随笔
2.2、牛顿法
求解无约束最优化问题,优点是收敛速度快。
牛顿法是一种迭代算法,用于求解方程式的根。其基本思想是利用函数的导数信息,不断迭代以逼近方程的根。
1)比梯度下降快的原因?
微分解释,牛顿法是二阶收敛,梯度下降是一阶收敛,牛顿法在选择方向时,不仅可以考虑坡度是否够大,还可以考虑走了一步后坡度是否会更大,因此能更快地走到最底部。
几何解释,牛顿法就是用一个二次曲面去拟合当前所处位置的局部曲面,梯度下降法使用一个平面去拟合当前的局部曲面。通常情况下,二次曲面的拟合效果会比平面更好。
2)牛顿法算法过程
牛顿法的推导过程基于以下公式: x k + 1 = x k − α ⋅ f ′ ( x k ) x_{k+1} = x_k - α·f'(x_k) xk+1=xk−α⋅f′(xk)
其中 x k x_k xk是第 k 次迭代时 x 的值,α 是步长, f ′ ( x k ) f′(x_k) f′(xk) 是函数 f(x) 在 x k x_k xk 处的导数值。
- 初始化一个点 x0。
- 求解函数 f(x) 在 x k x_k xk 处的导数, f ′ ( x k ) f′(x_k) f′(xk)即切线斜率 m。【m 也可以用梯度表示,即 $ m =▽f(x_k)$】
- 求解函数 f(x) 在 x k x_k xk 处的二阶导数 , f ′ ( x k ) f′(x_k) f′(xk)即切线曲率 n。
- 将 f ′ ( x k ) f'(x_k) f′(xk)和 f ′ ′ ( x k ) f''(x_k) f′′(xk)代入牛顿迭代公式 中, x k + 1 = x k − α ⋅ m x_{k+1} = x_k - α·m xk+1=xk−α⋅m,其中 α 是步长。
- 重复执行步骤 2-4,直到满足预设的阈值条件,如 ∣ x k + 1 − x k ∣ < ϵ ∣x_{k+1}−x_k∣<ϵ ∣xk+1−xk∣<ϵ,其中 ϵ 是预设的阈值。
- 最终得到的解即为方程 f(x)=0 的根。
需要注意的是,牛顿法对于非线性方程的求解效果较好,但对于线性方程的求解则可能不收敛。必须保证 f(x) 二阶导连续,否则牛顿法可能无法收敛。
在推导过程的步骤4.中,谈到的牛顿迭代公式是如何代入得切线曲率?
使用牛顿-拉夫森方法(Newton-Raphson method)来求解 α,即:
α = f ′ ( x k ) f ′ ′ ( x k ) α = \frac{f'(x_k)}{f''(x_k)} α=f′′(xk)f′(xk)
将 α 代入牛顿迭代公式中,得到:
x k + 1 = x k − f ′ ( x k ) f ′ ′ ( x k ) ⋅ f ′ ( x k ) x_{k+1} = x_k - \frac{f'(x_k)}{f''(x_k)}·f'(x_k) xk+1=xk−f′′(xk)f′(xk)⋅f′(xk)
2.3、阻尼牛顿法
1)较牛顿法的改进?
牛顿法迭代公式中没有步长因子,是定步长迭代。对于非二次型目标函数,不能保证函数值稳定的下降,有时会出现 f ( x k + 1 ) > f ( x k ) f(x_{k+1})>f(x_k) f(xk+1)>f(xk),走过头了,为消除定步长迭代的弊端,阻尼牛顿法每次迭代方向仍然是 x k x_k xk,但每次迭代会沿此方向做一维搜索,寻找最优的步长因子 λ k λ_k λk,即:
λ k = m i n f ( x k + λ d k ) λ_k = minf(x_k+\lambda d_k) λk=minf(xk+λdk)
2)阻尼牛顿法算法过程
- 给定初值x0,精度阈值 ϵ ,令 k = 0;
- 计算 x k 和 H k 计算x_k 和 H_k 计算xk和Hk
- 若 ∣ ∣ g k ∣ ∣ < ϵ ||g_k|| < ϵ ∣∣gk∣∣<ϵ 则停止迭代,否则确定搜索方向: d k = − H k − 1 ⋅ g k d_k = -H_k^{-1}·g_k dk=−Hk−1⋅gk
- 计算新的迭代点 x k + 1 = x k + d k x_{k+1} = x_k + d_k xk+1=xk+dk
- 令 k = k +1,重复执行步骤 2-5。
其中, H k 为海森矩阵( H e s s e n ) H_k为海森矩阵(Hessen) Hk为海森矩阵(Hessen),每个点处x=(x1,x2,x3,…,xn),都要计算一次:
g k 为一阶导数 g_k为一阶导数 gk为一阶导数
2.4、拟牛顿法
1)较牛顿法的改进?
牛顿法每一步都要求解目标函数的Hessen 矩阵的逆矩阵,计算量比较大,提出一种改进,**通过正定矩阵近似代替 H k − 1 H_k^{-1} Hk−1,**简化这一计算过程,改进后的方法称为拟牛顿法。
2)拟牛顿法算法过程
-
将 f(x)在 x k + 1 x_{k+1} xk+1处展开,得到:
f ( x ) = f ( x k + 1 ) + f ′ ( x k + 1 ) ( x − x k + 1 ) + 1 2 f ′ ′ ( x k + 1 ) ( x − x k + 1 ) 2 f(x) = f(x_k+1)+f'(x_{k+1})(x-x_{k+1})+\frac{1}{2}f''(x_{k+1})(x-x_{k+1})^2 f(x)=f(xk+1)+f′(xk+1)(x−xk+1)+21f′′(xk+1)(x−xk+1)2
-
两边同时取梯度,得:
f ′ ( x ) = f ′ ( x k + 1 ) + f ′ ′ ( x k + 1 ) ( x k − x k + 1 ) f'(x) = f'(x_{k+1})+ f''(x_{k+1})(x_k-x_{k+1}) f′(x)=f′(xk+1)+f′′(xk+1)(xk−xk+1)
-
令 x = x k x = x_k x=xk,得:
f ′ ( x k ) = f ′ ( x k + 1 ) + f ′ ′ ( x k + 1 ) ( x k − x k + 1 ) f'(x_k) = f'(x_{k+1})+ f''(x_{k+1})(x_k-x_{k+1}) f′(xk)=f′(xk+1)+f′′(xk+1)(xk−xk+1)
整理,得:
f ′ ( x k + 1 ) − f ′ ( x k ) = f ′ ′ ( x k + 1 ) ( x k + 1 − x k ) f'(x_{k+1}) -f'(x_k)= f''(x_{k+1}) (x_{k+1}-x_k) f′(xk+1)−f′(xk)=f′′(xk+1)(xk+1−xk)
即:
g k + 1 − g k = H k + 1 ( x k + 1 − x k ) g_{k+1} -g_k = H_{k+1}(x_{k+1} - x_k) gk+1−gk=Hk+1(xk+1−xk)
可得:
$ H_{k+1}^{-1}(g_{k+1} -g_k )=x_{k+1} - x_k$ 该式称为拟牛顿条件,对Hessen矩阵具有约束作用。
2.5、总结
重点是梯度下降法,利用一阶导数,而二阶导数涉及到海森矩阵,具有较大的计算量,因此,往往采用梯度下降算法。