---这里记录下一些关于牛顿法来作为优化器的个人笔记 :)

关于牛顿法,先不说其中的概念,来简单看一个例子? 不用计算器,如何手动开一个值的平方根,比如计算{sqrt(a) | a=4 } ? 不用程序和代码如何求?

  ----比较简单有木有,直接上用公式来套就好了.

      xt = ( xt-1 + ( a / xt-1 ) ) / 2

      我们看 sqrt(4) 这个值的区间在1<=sqrt(4)<=4里,写成这种形式吧[1,4],我们令x0 = 1,

      x = ( 1 + (4/1))/2 = 5/2 =2.5

      x = (2.5 + (4/2.5))/2 = 2.05

      x = (2.05 + ( 4 /2.05 ))/2 = 2.0006

        .....

于是我们就求出x的近似值为2

那么这个公式是如何得来的呢?

  这个公式其实是依据牛顿法得来的?牛顿法长成什么样子呢?

     就是长成这个样子,我们发现这个样子和我们的SGD还是很像的,这两者的区别记录在后面吧~。

而牛顿迭代法,这个公式其实就是泰勒级数展开的前几项 f(x),并使得f(x) =0,求解后的结果,而泰勒级数是采用无限项的来等价表示一个函数,比如:

,那牛顿法采用的是泰勒级数的前几项 -- 有限的项,来近似表示一个函数f(x).

那么如何上面这个公式是如何通过牛顿法得到的呢?

  上面的题,我们将其转换车更加通用的一些,比如改为如何求解sqrt(a)?

------这又等价于sqrt(a)=x  转换成-->  x^2 = a , (a 属于实数域),  进一步转换成--->f(x) = x^2 -a =0

我们知道 f(x) = x^2 - a =0 ,因为只要求某一个点的值,所以我们只需要知道这个点的切线就可以了, 由此我们依据泰勒级数定义,对其进行一阶展开,可以知道 f(x) ~g(x) =  f(x0) + f ' (x0)*(x - x0),我们令g(x)=0

于是我们就得到了 x = x0 - f(x0) / f '(x0);

  然后我们再次化解这个公式:

        x = x0 - (x0^2 - a / 2x0 )  = (x0^2 + a) /2x0  = (x0 + a/x0)/2

这样我们就得到了最开始的那个公式了。

但是我们在用牛顿法作为优化器的时候,是要求极小值的啊? 那么如何快速的求出极小值呢?

   我们知道一阶导,为曲线切线方向,二阶导为切线的切线方向回想一下SGD法,SGD只是在一阶导上,进行权值更新,基本上就是处于求切线方向,前进一个步长,然后再矫正,再求当前点的切线,再矫正:

  

这种方式就会出现绿线的情况,那么牛顿法就給出另一种思路: 我们再沿着切线方向走的时候,不必按照固定的步长走动,我们可以依据切线的变化率来动态调整行走的步子,于是就有了这个公式:

 当二阶导趋近于0的时候,说明一阶导有极小值,那么此时就应该让它接近这个极小值,而loss函数为凸函数 ,f’(x)趋近极小值的时候,f(x)就也就可以快速的接近极小值,而不出现大幅度摇摆,就出现了红色那条线.

一般来说,对于那种高阶多项式采用牛顿法效果会比SGD好些.

转载于:https://www.cnblogs.com/gongxijun/p/7496078.html

优化器--牛顿法总结相关推荐

  1. Pytorch优化器全总结(三)牛顿法、BFGS、L-BFGS 含代码

    目录 写在前面 一.牛顿法 1.看图理解牛顿法 2.公式推导-三角函数 3.公式推导-二阶泰勒展开 二.BFGS公式推导 三.L-BFGS 四.算法迭代过程 五.代码实现 1.torch.optim. ...

  2. DRO:SFM任务中的深度循环优化器(阿里巴巴AI Lab)

    代码.论文地址:在公众号「3D视觉工坊」,后台回复「DRO」,即可直接下载. Motivation: 解决一个优化问题,常见的优化器比如梯度下降法, 牛顿法等, 一般会先计算梯度------>再 ...

  3. TensorFlow学习(四):优化器Optimizer

    梯度下降优化算法综述    该文翻译自An overview of gradient descent optimization algorithms.    总所周知,梯度下降算法是机器学习中使用非常 ...

  4. 优化器(AdaGrad,AdaDelta,RmsProp,Adam,Nadam,Nesterovs,Sgd,momentum)

    以下来自: https://my.oschina.net/u/2935389/blog/2967242 https://mp.weixin.qq.com/s/NmSVXezxsQOZzK8pne3pC ...

  5. SGD、Adam优化器

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 各种优化器Optimizer的总结与比较 https://blog.csdn.net/weix ...

  6. 【Pytorch的优化器总结归纳】

    文章目录 1.SGD(随机梯度下降) 2.ASGD(随机平均梯度下降) 3.AdaGrad算法 4.AdaDelta算法 5.Rprop(弹性反向传播) 6.RMSProp(Root Mean Squ ...

  7. 优化器(Optimizer)(一)

    什么是优化器? 解释 如果我们定义了一个机器学习模型,比如一个三层的神经网络,那么就需要使得这个模型能够尽可能拟合所提供的训练数据.但是我们如何评价模型对于数据的拟合是否足够呢?那就需要使用相应的指标 ...

  8. Pytorch的优化器总结归纳

    pytorch的几类优化器 笔记总结自: https://pytorch.org/docs/stable/optim.html 在博客https://www.jianshu.com/p/39dac1e ...

  9. 系统总结深度学习的主要的损失函数和优化器

    本次博客是深度学习的作业:系统总结了深度学习中监督学习的主要的损失函数,并指出各自的适应条件和优缺点.觉得很有意义,就记录下来供大家参考. 文章目录 损失函数 损失函数的作用 损失函数的分类 基于距离 ...

最新文章

  1. rdp协议打开 windows_RDPY - Twisted Python 实现的RDP协议(Windows 远程桌面)
  2. 简单计算器的设计java_(基于java的简易计算器的设计.doc
  3. 山东省枣庄市台儿庄区云平台运维故障处理一例
  4. 第一阶段冲刺 第二天
  5. 设计模式笔记-命令模式
  6. Android 系统(65)---Android修改分区格式为F2FS
  7. asp.net页面调用cs中的方法
  8. 第二季-专题17-触摸屏显身手
  9. oracle dblink性能,谈谈Oracle为2019年埋下的雷:Oracle关于DBLINK的预警
  10. AR引擎vuforia源码分析、中文注释(2)用手势控制来与模型简单交互
  11. 用javascript制作简易的QQ登录网页
  12. 10个小窍门,让你轻松准确搜索(转)
  13. GetLastError() 返回值对照表
  14. 基于ResNetRS的宝可梦图像识别
  15. Supervisely 人像分割数据集
  16. 大专生三面蚂蚁金服,Java中高级核心知识全面解析(7)
  17. C++实现批量文件重命名
  18. zookeeper的watcher机制原理详解
  19. excel计算机教学教案,计算机基础教案(EXCEL部分)【精选】
  20. centos7 team 绑定

热门文章

  1. 从零开始-小程序采坑记录
  2. 使用openssl生成双向加密证书(转)
  3. awk、变量、运算符、if多分支
  4. HDU5670Machine(抽象进制)
  5. 网络编程——第一篇 基础之进程线程
  6. 分析函数RANK的使用
  7. [设计模式] 15.Command 命令模式
  8. Centos-7.4_安装_Redis_4.0.8
  9. 营销区块链技术的艺术
  10. MvcPager帮助文档 - MvcAjaxOptions 类