1. 凸优化的定义
    1.1 凸优化
    1.2 全局最优化与局部最优化
  2. Least-squares and linear programming(最小二乘与线性规划)
    2.1 最小二乘
    2.2 线性规划
  3. 最优化方法的一般结构
  4. 优化理论在机器学习,深度学习中扮演的角色

1.优化的定义

1.1 凸优化

最优化问题目前在机器学习,数据挖掘等领域应用非常广泛,因为机器学习简单来说,主要做的就是优化问题,先初始化一下权重参数,然后利用优化方法来优化这个权重,直到准确率不再是上升,迭代停止,那到底什么是最优化问题呢?

它的一般形式为:

minimize f0(x)
<script type="math/tex; mode=display" id="MathJax-Element-139">minimize\ f_0(x)</script>
使 fi(x)bi,i=1,,m
<script type="math/tex; mode=display" id="MathJax-Element-140">使得\ f_i(x)\leq b_i,i=1,\cdots,m</script>第一个为优化的目标,即最小化目标函数f(x),而带大于号或小于号的,则是约束条件。我们希望找到一个满足约束条件的x<script type="math/tex" id="MathJax-Element-141">x^*</script>,使得对于任意的z<script type="math/tex" id="MathJax-Element-142">z</script>满足约束条件:
f1(z)b1,,fm(z)bm
<script type="math/tex; mode=display" id="MathJax-Element-143">f_1(z) \leq b_1,\cdots,f_m(z)\leq b_m</script>有
f0(z)f0(x)
<script type="math/tex; mode=display" id="MathJax-Element-144">f_0(z) \geq f_0(x^*)</script>而x<script type="math/tex" id="MathJax-Element-145">x^*</script>就是我们所求的最后结果。
  • 相当于你要从上海去北京,你可以选择搭飞机,或者火车,动车,但只给你500块钱,要求你以最快的时间到达,其中到达的时间就是优化的目标,500块钱是限制条件,选择动车,火车,或者什么火车都是x。

满足所有约束条件的点集称为可行域,记为X,又可以写为:

min f(x)   s.t xX
<script type="math/tex; mode=display" id="MathJax-Element-146">min\ f(x)\ \ \ s.t \ x \in X</script>,s.t表示受限于(subject to)。

在优化问题中,应用最广泛的是凸优化问题:

  • 若可行域X是一个凸集:即对于任给的x,yX<script type="math/tex" id="MathJax-Element-147">x,y\in X</script>,总有
    λx+(1λ)yX, λ(0,1)
    <script type="math/tex; mode=display" id="MathJax-Element-148">\lambda x + (1 - \lambda )y \in X ,对于任意的 \ \lambda\in(0,1)</script>
  • 并且目标函数是一个凸函数:即
    f(λx+(1λ)y))λf(x)+(1λ)f(y)
    <script type="math/tex; mode=display" id="MathJax-Element-149">f(\lambda x + (1 - \lambda )y)) \leq \lambda f(x) + (1-\lambda)f(y)</script>我们称这样的优化问题为凸优化问题。

用图像来表示就是:
这里写图片描述
函数上方的点集就是凸集,函数上任意两点的连线,仍然在函数图像上方。

一句话说清楚就是:希望找到合适的x<script type="math/tex" id="MathJax-Element-150">x</script>,使得f0(x)<script type="math/tex" id="MathJax-Element-151">f_0(x)</script>最小。

1.2 全局最优化与局部最优化

全局最优化指的是在满足条件约束的情况下,找到唯一的一个点满足最大值或者最小值。

局部最优化指的是在满足条件约束的情况下,有可能找到一个局部最大/小点,但不是全局最大或者最小的点。
用图像表示为:
这里写图片描述

2.Least-squares and linear programming(最小二乘与线性规划)

关于这两个问题的更详细的例子会在接下来的文章中说到,这次只是简单的介绍一下我们的内容。

2.1 最小二乘

最小二乘问题是无约束的优化问题,通常可以理解为测量值与真实值之间的误差平方和:

minimize f0(x)=Axb22=i=1k(aTixbi)2
<script type="math/tex; mode=display" id="MathJax-Element-152">minimize\ f_0(x) = ∥Ax − b∥^2_2 = \sum_{i=1}^k (a^T_i x − b_i)^2</script>其中ARk x nk>naTiAix<script type="math/tex" id="MathJax-Element-153">A\in R^{k\ x\ n}(k>n),a^T_i为A的第i行,向量x就是我们的优化目标。</script>

这个问题既然没有约束条件,那应该怎么求解呢?我们的目标是求解出最好的x,观察这个式子可以发现,这个式子一定是大于等于0的,所以这样的最优化问题,我们可以把它转成线性方程来求解:

ATAx=ATb
<script type="math/tex; mode=display" id="MathJax-Element-154">A^TAx = A^Tb</script>AT<script type="math/tex" id="MathJax-Element-155">A^T</script>为A的转置,因此根据矩阵的逆:
(ATA)1ATA=1
<script type="math/tex; mode=display" id="MathJax-Element-156">(A^TA)^{-1}A^TA = 1</script>可以把上式表示为:
x=(ATA)1ATb
<script type="math/tex; mode=display" id="MathJax-Element-157">x = (A^TA)^{-1}A^Tb</script>

加权的最小二乘问题

i=1kwi(aTixbi)2
<script type="math/tex; mode=display" id="MathJax-Element-158">\sum_{i=1}^k w_i(a^T_i x − b_i)^2</script>权值均为正数,代表每一个aTixbi<script type="math/tex" id="MathJax-Element-159">a^T_i x − b_i</script>对结果的影响程度。

正则化的最小二乘问题:

i=1k(aTixbi)2+ρi=1nx2i
<script type="math/tex; mode=display" id="MathJax-Element-160">\sum_{i=1}^k (a^T_i x − b_i)^2 + \rho\sum_{i=1}^n x_i ^2</script>ρ<script type="math/tex" id="MathJax-Element-161">\rho</script>是人为的选择的,用来权衡 最小化ki=1(aTixbi)2<script type="math/tex" id="MathJax-Element-162">\sum_{i=1}^k (a^T_i x − b_i)^2</script>的同时,使得ni=1x2i<script type="math/tex" id="MathJax-Element-163">\sum_{i=1}^n x_i ^2</script>不必太大的关系。

2.2 线性规划
另一类重要的优化问题是线性规划,它的目标函数和约束条件都是线性的:

minimize cTx
<script type="math/tex; mode=display" id="MathJax-Element-164">minimize\ c^Tx</script>
s.t    aTixbi,i=1,,m
<script type="math/tex; mode=display" id="MathJax-Element-165">s.t\ \ \ \ a_i^T x \leq b_i ,i=1,\cdots,m</script>
用画图的方法,就是根据条件,画出可行域,然后将目标函数在可行域上移动,直到得到最大值。
这里写图片描述

3.最优化方法的一般结构

最优化的过程,相当于爬山,如图:
这里写图片描述
希望找到一个点列xk<script type="math/tex" id="MathJax-Element-166">{x_k}</script>使得他的函数值是一直减少的,直到到达某一停止条件或者达到最小值的点xk<script type="math/tex" id="MathJax-Element-167">x_k</script>.

用数学上的术语可以表示为:

  • xk<script type="math/tex" id="MathJax-Element-168">x_k</script>为第k次迭代点,dk<script type="math/tex" id="MathJax-Element-169">d_k</script>为第k次搜索方向,αk<script type="math/tex" id="MathJax-Element-170">\alpha_k</script>为第k次迭代的步长因子,则第k次迭代为:
    xk+1=xk+αkdk
    <script type="math/tex; mode=display" id="MathJax-Element-171">x_{k+1} = x_k + \alpha_k d_k</script>

从这里可以看到不同的步长和不同的搜索方向组成了不同的优化方法,这就是最优化理论中所讨论的。f<script type="math/tex" id="MathJax-Element-172">f</script>是xk<script type="math/tex" id="MathJax-Element-173">x_k</script>的函数,搜索方向dkfxk<script type="math/tex" id="MathJax-Element-174">d_k是f在x_k</script>处的下降方向,即dk<script type="math/tex" id="MathJax-Element-175">d_k</script>满足:

f(xk)Tdk<0
<script type="math/tex; mode=display" id="MathJax-Element-176">\nabla f(x_k)^T d_k <0 </script>或者
f(xk+1)=f(xk+αkdk)<f(xk)
<script type="math/tex; mode=display" id="MathJax-Element-177">f(x_{k+1} )= f(x_k + \alpha_k d_k ) 而最优化的基本可以表示为:给定初始点 xk<script type="math/tex" id="MathJax-Element-178">x_k</script>

  1. 确定搜索方向dk<script type="math/tex" id="MathJax-Element-179">d_k</script>,即按照一定规则画方法确定f在xk<script type="math/tex" id="MathJax-Element-180">x_k</script>处的下降方向
  2. 确定步长因子αk<script type="math/tex" id="MathJax-Element-181">\alpha_k</script>,使得目标函数有一定的下降
  3. xk+1=xk+αkdk
    <script type="math/tex; mode=display" id="MathJax-Element-182">x_{k+1} = x_k + \alpha_kd_k</script>不断迭代,直到xk+1<script type="math/tex" id="MathJax-Element-183">x_{k+1}</script>满足某种某种停止条件,即得到最优解xk+1<script type="math/tex" id="MathJax-Element-184">x_{k+1}</script>

最优化中的问题中,大部分都是在寻找各种各样的方法确定步长和方向,使得迭代的速度尽可能快,得到的解尽可能是最优的解。

4.优化理论在机器学习,深度学习中扮演的角色

凸优化,或者更广泛的说,是最优化理论,在目前的机器学习,数据挖掘,或者是深度学习的神经网络中,都要用到。

他的地位相当于人的脊背一样的,支撑着整个模型的学习过程。因为模型,通俗来说就像人学习思考一样,我们自己知道自己该学什么,该怎么学,发现自己的知识学错了之后怎么调整,但计算机可没有人这么聪明,知道学什么,往哪里学。

而最优化,就是告诉模型应该学什么,怎么学的工具。模型学习的往往都是一个映射函数,也就是模型中的参数W,这个参数的好坏,得看答案才能知道,但知道自己错了之后,该往哪里学,怎么学,怎么调整,这就是优化理论在其中扮演的角色。如果没有优化理论,那么模型是不知道该怎么学习的,也就是没有了最优化,模型的学习永远都是停滞不前的,这下你知道最优化理论的重要性了吧。

Logo

聚焦前沿AI与大模型技术探索,汇聚开发者及爱好者,共享开源项目、学习资源与行业资讯。

更多推荐