油管最火十分钟机器学习数学课-优化问题

我们可以将事物都看成一组变量,看作矩阵,并且这些变量之间存在联系。在数学里面,我们把这种联系称之为函数,用函数表达一组模式一种映射关系以及多个变量之间的关系。无论我们用什么机器学习模型,也不论我们用什么数据库,机器学习的目的都在于优化目标。这样做,我们就是在准确的估算函数。优化过程不断迭代,帮我们发现数据背后的函数。梯度下降算法也是一种优化,可以把它分为五步:

  1. 首先我们定义某个机器学习模型,该模型具有一组初始权值即参数。
  2. 我们将定义一个误差函数,来表示预测值与真实值之间的误差。
  3. 我们利用误差函数帮助计算每个权值的偏导,从而得到梯度。梯度表示误差变化,这种变化是由权值从原始值变化很小的值后引起的

  4. 我们利用梯度变化曲线来定向更新权值来使得误差最小化。

  5. 通过迭代,逐步接近函数的最小值,得到算选模型的最佳权值。

大多数优化问题都能够通过梯度下降法及其衍生方法来解决,都属于一阶优化方法,因为只需要计算一阶导数。 

对于二阶优化算法,要求计算二阶导数,一阶导数告诉我们,函数在某点是趋于增加还是减少,而二阶导数告诉我们一阶导数的增减情况,可以表明一阶导数的曲率。二阶法的优点在于,它们不忽略误差曲面的曲率,而且就逐步迭代的表现来看,二阶法是更好的选择。牛顿法是一种流行的二阶优化法,第一个版本是找出某个多项式的根,也就是曲线与x轴相交的点。 牛顿法中的寻根法即求根的代码,求出函数在何处为零如下:

                      def newtons_method(f,df,x0,e):      //比如说我们有个函数f(x)和某个猜测的初始解x0

                               delta=dx(f,x0) //根据牛顿法,我们要先得出切线在猜测点的斜率

                              while delta > e      //不断迭代,直到得出不超过某个阈值的x值

                               x0=x0-f(x0)/df(xo) //求出切线与x轴的交点,求出切线与x轴的交点

                              delta=dx(f,x0) //我们重复之前的工作,用得到的映射点作为初始值

第二个版本是优化法,也是我们机器学习中用到的方法。但是在优化问题中,我们要找出使得函数导数为零的值,就是函数最小值点。总的来说,只要给定一个随机的初始位置x0,就能构建一个f(x)的一次近似值x1,求出x0点匹配的二次函数的最小值点x1,x1作为下一步的初始位置,重复操作。 如下图:

                                                                         

导数可以帮助我们计算梯度,而梯度我们可以用雅可比矩阵表示,以此来进行一阶最优化。我们用海森矩阵进行二阶最优化。

总结一下,一阶方法计算量和耗时比较少,当计算大型数据集时一阶收敛非常快。当二阶导数已知并且hen容易计算的时候,二阶方法会更快,但是二阶导数通常很难计算,需要极大的计算量。在某些问题上,梯度下降会卡住,尤其是在鞍点附近的收敛性路径上,而是用二阶没有麻烦。针对你遇到的具体问题,试用不同的优化技巧,一阶优化方法是使用函数的一阶导数求其最小值,二二阶优化法使用二阶导数。雅可比矩阵是一阶偏导数的矩阵,而海森矩阵是二阶偏导数的矩阵。牛顿法是一个很常用的二阶优化方法,有时比梯度下降法更加好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值