本文主要是介绍《数学基础》-4.凸优化-4.1.无约束优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
4.1.无约束优化
4.1.1.无约束优化问题
无约束优化问题是机器学习中最普遍、最简单的优化问题。
求最大值也可以 在前面加上负号,变成上面求最小的形式。
求一个函数f(x)的最小值可以对函数f(x)求导并使其等于0(或者说使得梯度▽f(x)等于0),但是很多复杂的函数求导后没法求出解,所以这种方法实际上很少用。
常用梯度下降法、牛顿法或者拟牛顿法求解。
4.1.2.梯度下降法
基于迭代的方法,从某个点开始找很多点,使得这些点满足:,且有,这里表示单位梯度,经常写作,λ表示步长,所以通项是:
实际上λ也不会取很大,一般是
其过程为:
梯度下降法的种类:
①批量梯度下降法(BGD)
更新系数时,所有样本都参与计算
优点:需要个很少的迭代次数就可以收敛
缺点:当样本量很大时,更新一次的时间很长
②随机梯度下降法(SGD)
更新系数时,从n个样本中随机选择一个样本参与计算,
优点:更新一次的时间很短,所以大样本时有优势
缺点:会受到每一个样本的影响会很大,不稳定,需要更多的迭代次数才能收敛
③小批量梯度下降法(MBGD)
结合了批量梯度下降法和随机梯度下降法,选择一小部分样本参与计算
例如:
所有的样本都算完,就是一个epoch
4.1.3.牛顿法
求一个函数的最小值可以对函数求导并使其等于0(或者说使得梯度等于0):,把函数的导数看做一个函数,令
牛顿法求的过程也是迭代过程
假设的函数曲线是这个样子,要找到那个的点,先做某个的切线,然后找到切线与x轴相交的点然后再做的切线,以此类推,不断逼近的点。
先来求第一条切线的方程:
令y=0(就是上图中的点)得:
再把带入得:
这是二维的情况,如果是多维的情况:
其中H是海森矩阵,除以海森矩阵就是乘以它的逆矩阵。
为什么这里是海森矩阵?因为是的n维向量,是n维向量,二次求导就是海森矩阵。
在机器学习中,要算海森矩阵的逆矩阵很麻烦,于是就引申出了很多种拟牛顿法BFGS(用另外一个矩阵来逼近海森矩阵的逆矩阵)。
牛顿法收敛速度:
按这个迭代原理,就应该是函数的局部最优点,也就是有最小值,且有要弄明白这个收敛速度,就是要比较下到的距离和到的距离的区别,由上述结论得:
由于,所以分子加上得:
根据中值定理f(b)−f(a)=(b−a)f′(ξ),a<ξ<b,得:
再利用拉格朗日中值定理得:
ξ是在之间的,所以
由于M的分子分母都是导数,导数都是有界的,所以M是有界的,用表示其上界。
即:
当和的距离小于1:,则,这里是按照平方的速度进行收敛的,收敛速度更快,注意这里有条件:x和的距离小于1,如果距离大于1,上界会越来越大,没法收敛。
综上,牛顿法要拟合,不能离最小值太远的地方拟合,越接近极小值再拟合收敛的效果越好。因此可以先用梯度下降,到了局部极小值附近后再用牛顿法。
这篇关于《数学基础》-4.凸优化-4.1.无约束优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!