美文网首页
不畏浮云遮望眼,自缘身在最高层:最优化方法

不畏浮云遮望眼,自缘身在最高层:最优化方法

作者: 熊出没之熊二快跑 | 来源:发表于2019-08-08 16:19 被阅读0次

    文末有福利哦

    人生就像登山,多数情况下你看不到山顶,甚至看不到前方的路,但你不能否定的是,你每前进一步,就离山顶近了一步。

    0 前言

    从本质上,人工智能的目标就是最优化:在复杂环境与多体交互下作出最优决策
    通常我们将目标形式化表达为目标函数或者评价函数,将判定目标函数是否存在最大值(最小值)并且找到令目标函数取到最优解的数值的过程,称为最优化过程,其对应的方法就是最优化方法

    非凸函数中的最值
    实际的最优化方法,有可能会找到全局最小值,也可能会找到局部最小值,全局最小值就是在整个函数的定义域上取最小值,局部极小值就是在其邻域中取最小值。

    1 举个栗子

    如果把目标函数比做为连绵不绝的山脉,那我们的目标就是山脉中的顶峰,判断顶峰的位置并且找到去往顶峰的路径就是最优化的过程

    爬山就是最优化的过程

    我们的最优化方法不是上帝视角,不能一眼看穿最高峰在哪个方法,全都是站在山脚下的登山人,一步一个脚印的寻找最高峰。但受视野的限制,找到的峰值很可能只是方圆十里之内的顶峰,也就是局部极小值

    2 再举个栗子

    小时候会玩过很多游戏,包括红警或者帝国时代,大家很熟悉的就是下图整个场景,有种“不识庐山真面目,只缘身在此山中”。


    在黑暗中寻找“光明”

    我们想要在一片黑暗之中寻找“光明”,向着最低洼的地方前进,于是环顾四周,看到右边比较低,走两步看看:


    往右边走一走
    再往周围比较低的地方走一走,发现新大陆了!这里比周围都更加低!也许这就是整张地图最低的地点,也许也只是一个“局部极小值”。
    找到“局部极小值”

    通常情况下,当目标函数的输入参数过多,解空间较大,绝大多数算法都不能满足全局搜索对计算复杂度的要求,因而只能退而求其次,选取一个使得目标函数相对比较小的值,把它当作全局最小值,作为性能和复杂度的折中。

    3 最优化问题的分类

    根据约束条件的不同,可以将最优化问题分为:

    • 无约束优化:对自变量x的取值没有限制
    • 有约束优化:将自变量x的取值限制在一定的集合中,也就是满足一定的约束条件。

    3.1 线性规划——一种有约束的优化

    高中时的线性规划题目

    典型的约束优化就是线性规划,其解决的问题通常是在有限的成本约束下获得最大利益,通过拉格朗日乘子的的引入可以将含有n 个变量和 k个约束条件的问题,转换为含有(n+k)个变量的无约束优化问题。其简单的表达如下:
    L(x,y,\lambda)=f(x,y)+\lambda \varphi(x,y)
    式中f(x,y)是目标函数,\varphi(x,y)是约束条件,\lambda是拉格朗日乘子。
    从数学意义上讲,由原目标函数和约束条件共同构成的拉格朗日函数与原目标函数具有共同的最优点集和共同的最优目标函数值,从而保证最优解的不变性。

    3.2 无约束优化解决——梯度下降法

    梯度下降法,就是沿着目标函数下降最快的方向寻找最优解,就像爬山找最陡峭的路上山顶。关于梯度下降法的理论依据我会在下一篇博文中介绍。

    (1) 步长

    梯度下降法中有一个关键超参数,学习率(learning rate),也叫步长(step size)。
    步长控制梯度往更新方向变化的大小。

    • 步长越小,每次更新的幅度就小,向最小值前进的速度就越慢,对应的就是收敛速度较慢。
    • 步长越大,尤其是快接近最小值点的时候,容易一次性步子迈的过大,错过最小值点。比如下图中浅绿色和黄色的线,就是步长过大导致的结果。(PS:这让我想到小时候在铁路上走轨道,步子刚刚好的时候走的又快又舒服,现在长大了,走半步刚刚好,走起来像是穿了和服的日本艺妓,小心翼翼。走一步又跨度太大,怕扯着蛋蛋。)


      步长对优化过程的影响

    (2) 样本使用的三种模式

    • 批梯度下降(batch gradient descent):利用所有样本的梯度进行更新,由于每次更新都要对所有样本进行遍历,所以该模式计算量较大。
    • 随机梯度下降(stochastic gradient descent):每次只选一个样本的梯度作为更新参考,直到用完所有样本。当样本量较大时,往往比批梯度下降效果更好。
    • 最小批梯度下降(min-batch gradient descent):每次利用样本中的一部分样本的梯度进行更新。

    3.3 二阶优化算法

    梯度下降法使用的是一阶导数的信息,其描述的是目标函数如何随输入变化的变化,而二阶导数描述的是一阶导数如何随输入的变化而变化。
    因此,相较于梯度下降法只能看到目标函数的局部信息,二阶导数可以看到目标函数的全局,使得梯度方向不会向错误的方向走下去,使得收敛更快。

    3.3.1 牛顿法

    利用二阶导数进行优化的典型方法就是牛顿法


    将目标函数进行泰勒展开

    在牛顿法中,目标函数首先使用泰勒展开,写为二阶导数近似的形式(梯度下降法只保留了一阶近似)。然后对上式求导,并令其导数为0,得到:



    求解:

    得出迭代公式:



    牛顿法的优点在于能更快的收敛,迭代次数较少,但是由于引入了二阶导数,导致计算更加复杂。

    4 线性搜索方法

    无论是一阶导数的梯度下降法,还是二阶导数的牛顿法,都是先确定方向,再确定步长,称为线性搜索方法

    5 置信域方法

    置信域方法寻找最小值点的基本思路是先确定步长,以步长为参数划定一个区域,再在这个区域内寻找最快下降的方向。
    具体来说,置信域算法的运行过程如下:设定一个置信域半径 s,并在以当前点为中心、以 s 为半径的封闭球形区域作为置信域,在置信域内寻找目标函数的二次近似模型的最优点,最优点和当前点之间的距离就是计算出来的备选位移。
    在备选位移上,如果目标函数的二次近似产生了充分的下降,就将当前点移动到计算出的最优点,则继续按此规则迭代计算下去,并可以适当增加 s;如果目标函数的近似下降不够理想,则说明步子跨得太大,需要缩小 s 并计算出新的备选位移,直到满足终止条件。

    6 启发式算法

    例如模拟生物进化的遗传算法,模拟物理固体结晶过程的模拟退火算法等等。

    7 总结

    • 通常情况下,最优化问题是在无约束情况下求解给定目标函数的最小值;
    • 在线性搜索中,确定最小值时的搜索方向需要使用目标函数的一阶导数和二阶导数;
    • 置信域方法的思想是先确定搜索步长,再确定搜索方向;
    • 以人工神经网络为代表的启发式算法是另外一类重要的优化方法。

    最优化推荐书籍资料

    最优化理论可以参考 Stephen Boyd 所著的 Convex Optimization,中译本名为《凸优化》。这本书虽然很厚,但是主要在于应用而不是理论证明,因此可读性很好。
    英文版PDF获取


    参考资料:
    [1] 人工智能基础课 04 数学基础 | 不畏浮云遮望眼:最优化方法(王天一)极客时间
    [2] 李宏毅2017机器学习3-1 随机梯度

    相关文章

      网友评论

          本文标题:不畏浮云遮望眼,自缘身在最高层:最优化方法

          本文链接:https://www.haomeiwen.com/subject/sotxjctx.html