当前位置: 首页 > news >正文

梯度下降法和牛顿法

梯度下降法和牛顿法都是优化方法。

梯度下降法

梯度下降法和相关知识可以参考导数、偏导数、梯度、方向导数、梯度下降、二阶导数、二阶方向导数一文。梯度下降法是一种迭代地每次沿着与梯度相反方向前进的不断降低损失函数的优化方法。梯度下降只用到一阶导数的信息,没有参考二阶导数的信息。 

当自变量有多维时,如果某点二阶导数矩阵\boldsymbol{H}的最大特征值和最小特征值差别较大(二阶导数的信息),也就是说在一个自变量维度上一阶导数下降的很快,另一个自变量维度上一阶导数下降的很慢,慢的那个维度会拖累快的维度,导致整体迭代速度较慢。并且此时学习率设置的较小才会避免迭代过程中在二阶导大的方向不经过最低点而跳到对向这样来回跳动,但是此时学习率较小同时会导致在二阶导小的方向迭代较慢。在这种情况下,选择一个好的学习率是一件比较困难的事情。

如下图所示,(1,1)方向是二阶导最大的方向(最陡),(1,-1)方向是二阶导最小的方向(最缓),红色的线是梯度下降的路线,可以看到路线在(1,1)方向反复来回跳动(不断跳到对向)。梯度下降在这种情况下的表现有瑕疵。

牛顿法

牛顿法既参考了一阶导数的信息,也参考了二阶导数的信息。在理解牛顿法之前,可以参考驻点以及二阶导对驻点的判断一文。

牛顿法先在某点\boldsymbol{x^{(0)}}进行二阶泰勒展开,用二次函数近似表示原函数。

然后求这个二次函数的驻点\boldsymbol{x^{*}}

\boldsymbol{x^{(0)}}\boldsymbol{x^{*}}就是一次迭代。

如果原函数就是二次函数,那么牛顿法直接就找到了原函数驻点,停止迭代。如果原函数不是二次函数,那么需要使用二阶泰勒展开每次迭代到达近似二次函数的驻点,直至到达原函数驻点。

深度学习下的损失函数

在深度学习中,损失函数往往是高维的。

维度越高,最小值点出现的概率越来越低,鞍点出现的概率越来越高(呈指数级增大)。这和投硬币是一样的道理,在二维情况下,二阶导数矩阵\boldsymbol{H}的两个特征值都为正的概率(最小值点出现的概率)是1/4,在三维情况下,二阶导矩阵\boldsymbol{H}的三个特征值都为正的概率(最小值点出现的概率)是1/8,等等......。在高维情况下,因为鞍点多,牛顿法有很大的概率会停在鞍点上。

并且在高维情况下,\boldsymbol{H}的特征值都为正的情况更有可能出现在损失函数低的地方,也就是说最小值点更有可能出现在损失函数低的地方,鞍点更有可能出现在损失函数高的地方。所以在高维情况下牛顿法不仅有很大的概率会停在鞍点上,并且这些鞍点还对应着较高的损失函数。

在高维的情况下,梯度下降法比牛顿法会取得更好的优化效果。因为梯度下降不断迭代寻找使得损失函数很低的点,而牛顿法不断迭代停留在某一驻点上(大概率是对应较高损失函数的鞍点)。

梯度下降法和牛顿法的对比

梯度下降法牛顿法
理念不断迭代使损失函数下降,寻找损失函数值较低的点不断迭代进行二阶泰勒近似,寻找驻点
优点基本不会停留在鞍点速度较快
缺点速度较慢,需要选择合适的学习率会停留在鞍点(损失函数较高)

 如果有不正确的地方,欢迎各位大佬留言呀~

http://www.lryc.cn/news/97792.html

相关文章:

  • elment-ui的侧边栏 开关及窗口联动
  • 【从零开始学习JAVA | 第三十二篇】 异常(下)新手必学!
  • onnxruntime (C++/CUDA) 编译安装
  • 第三篇-Tesla P40+CentOS-7+CUDA 11.7 部署实践
  • Unity游戏源码分享-ARPG游戏Darklight.rar
  • 类型转换运算符
  • Kafka 入门到起飞系列 - 消费者组管理、位移管理
  • SpringBoot——数据层三组件之间的关系
  • LeetCode647.Palindromic-Substrings<回文子串>
  • React的hooks---useContext
  • 【Terraform学习】TerraformCloud入门介绍(快速入门)
  • linux实现运行java分包部署
  • 数据安全之全景图系列——数据分类分级落地实践
  • C++实现MySQL数据库连接池
  • day4 驱动开发 c语言学习
  • history命令:显示命令执行时间
  • Django接口返回JSON格式数据报文
  • OBS 迁移--华为云
  • 【Docker consul的容器服务更新与发现】
  • MFC第二十天 数值型关联变量 和单选按钮与复选框的开发应用
  • 服务器 Docker Alist挂载到本地磁盘(Mac版)夸克网盘
  • EMP-SSL: TOWARDS SELF-SUPERVISED LEARNING IN ONETRAINING EPOCH
  • 注解和反射01--什么是注解
  • 虚拟机 RHEL8 安装 MySQL 8.0.34
  • kafka 总结宝典
  • 跨平台力量:探索C++Qt框架的未来前景
  • 基于长短期神经网络LSTM的位移监测,基于长短期神经网络的位移预测,LSTM的详细原理
  • ChatGPT漫谈(二)
  • 【LangChain】检索器之MultiQueryRetriever
  • 教师ChatGPT的23种用法