前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >ML算法——最优化|凸优化随笔【机器学习】【端午节创作】

ML算法——最优化|凸优化随笔【机器学习】【端午节创作】

作者头像
来杯Sherry
发布2023-06-27 15:57:04
发布2023-06-27 15:57:04
3040
举报
文章被收录于专栏:第一专栏第一专栏

数学预备知识

1、最优化问题

最优化问题指的是在给定条件下,找到一个目标函数的最优解,即找到能够使目标函数取得最大值或最小值的变量取值。常用的优化方法包括线性规划、整数规划、动态规划、遗传算法、模拟退火等。最终,通过对最优解的检验和实施,可以实现资源的最优分配或其他最优解决方案。

最优化的基本数学模型:

min f(x)
s.t. \quad h_i(x)= 0 ,\quad g_j(x)≤ 0

  • 设计变量:x 是一个实数域范围内的n维向量,被称为决策变量或问题的解;
  • 目标函数: f(x) 为目标函数;
  • 约束条件:
\quad h_i(x)= 0 ,\quad g_j(x)≤ 0
  • 数学公式中的s.t.是subject to的缩写,表示约束条件。

超平面和半空间

二维空间的超平面就是一条线(可以是曲线),三维空间下的超平面是一个面(可以是曲面)。

简单来说,超平面是具有一个变量的空间中的直线、平面等概念的推广。半空间是数学中的一个概念,通常指一个空间中,其中一个方向的值被限定为非负数。例如,在三维空间中,一个半空间可以表示为z≥0,其中z表示垂直于x-y平面的方向。数学表达式如下:

超平面:

H = \{x ∈R^n | a_1x_1+a_2x_2+...+a_nx_n=b\}

半空间:

H^+ = \{x ∈R^n | a_1x_1+a_2x_2+...+a_nx_n≥b\}

凸集分离定理

凸集,凸函数,详见 数学预备知识 2.1梯度下降

凸集分离定理是凸集理论中最基本的定理之一,它表明两个不相交的凸集总可以用超平面分离。这个定理在凸优化理论中有重要的应用,因为它提供了将多变量问题转化为多个单变量问题的方法。

如何实现的多变量问题转换为多个单变量问题?

凸集分离定理可以将多变量问题转换为多个单变量问题。具体来说,如果需要将两个不相交的凸集C和D分离,可以通过以下步骤实现:

  1. 找到一个超平面,使得它与C和D的交点分别为x和y,且x和y分别位于超平面的两侧。
  2. 将超平面方程中的多个变量化为单个变量,例如将x1, x2, x3化为x1,将y1, y2, y3化为y1。
  3. 将超平面方程表示为一个关于x1的单变量函数f(x1),使得f(x1) = 0。
  4. 对于每个变量xi,分别求解f(xi) = 0,得到一组单变量方程。
  5. 对于每个单变量方程,求解其根xi,如果xi同时满足C和D的定义域,则将xi代入超平面方程中得到超平面方程中的常数项a。
  6. 将超平面方程中的常数项a表示为多个变量的函数g(x1, x2, …, xn),其中每个变量对应一个单变量方程。
  7. 将超平面方程中的常数项a表示为多个变量的函数g(x1, x2, …, xn)后,可以将其代入原多变量问题中,得到一个新的多变量问题,这个问题的解即为原问题的解。

通过以上步骤,就可以将多变量问题转换为多个单变量问题。这种方法在凸优化理论中有重要的应用,因为它可以将多变量问题转化为多个单变量问题,从而简化问题的求解。

(暂不理解这个步骤2的替换如何实现的)

2、凸优化

2.1、梯度下降

传送门:ML算法—梯度下降随笔

2.2、牛顿法

求解无约束最优化问题,优点是收敛速度快。

牛顿法是一种迭代算法,用于求解方程式的根。其基本思想是利用函数的导数信息,不断迭代以逼近方程的根。

1)比梯度下降快的原因?

微分解释,牛顿法是二阶收敛,梯度下降是一阶收敛,牛顿法在选择方向时,不仅可以考虑坡度是否够大,还可以考虑走了一步后坡度是否会更大,因此能更快地走到最底部。

几何解释,牛顿法就是用一个二次曲面去拟合当前所处位置的局部曲面,梯度下降法使用一个平面去拟合当前的局部曲面。通常情况下,二次曲面的拟合效果会比平面更好。

2)牛顿法算法过程

  1. 重复执行步骤 2-4,直到满足预设的阈值条件,如
∣x_{k+1}−x_k∣<ϵ

,其中 ϵ 是预设的阈值。

  1. 最终得到的解即为方程 f(x)=0 的根。

需要注意的是,牛顿法对于非线性方程的求解效果较好,但对于线性方程的求解则可能不收敛。必须保证 f(x) 二阶导连续,否则牛顿法可能无法收敛。

在推导过程的步骤4.中,谈到的牛顿迭代公式是如何代入得切线曲率?

使用牛顿-拉夫森方法(Newton-Raphson method)来求解 α,即:

α = \frac{f'(x_k)}{f''(x_k)}

α 代入牛顿迭代公式中,得到:

x_{k+1} = x_k - \frac{f'(x_k)}{f''(x_k)}·f'(x_k)

2.3、阻尼牛顿法

1)较牛顿法的改进?

牛顿法迭代公式中没有步长因子,是定步长迭代。对于非二次型目标函数,不能保证函数值稳定的下降,有时会出现

f(x_{k+1})>f(x_k)

,走过头了,为消除定步长迭代的弊端,阻尼牛顿法每次迭代方向仍然是

x_k

,但每次迭代会沿此方向做一维搜索,寻找最优的步长因子

λ_k

,即:

λ_k = minf(x_k+\lambda d_k)

2)阻尼牛顿法算法过程

  1. 给定初值x0,精度阈值 ϵ ,令 k = 0;
计算x_k 和 H_k
||g_k|| < ϵ

则停止迭代,否则确定搜索方向:

d_k = -H_k^{-1}·g_k
  1. 计算新的迭代点
x_{k+1} = x_k + d_k
  1. 令 k = k +1,重复执行步骤 2-5。

其中,

H_k为海森矩阵(Hessen)

,每个点处x=(x1,x2,x3,…,xn),都要计算一次:

g_k为一阶导数

2.4、拟牛顿法

1)较牛顿法的改进?

牛顿法每一步都要求解目标函数的Hessen 矩阵的逆矩阵,计算量比较大,提出一种改进,**通过正定矩阵近似代替

H_k^{-1}

,**简化这一计算过程,改进后的方法称为拟牛顿法。

2)拟牛顿法算法过程

2.5、总结

重点是梯度下降法,利用一阶导数,而二阶导数涉及到海森矩阵,具有较大的计算量,因此,往往采用梯度下降算法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数学预备知识
    • 1、最优化问题
    • 2、凸优化
      • 2.1、梯度下降
      • 2.2、牛顿法
      • 2.3、阻尼牛顿法
      • 2.4、拟牛顿法
      • 2.5、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档