AI算法工程师手册-四、牛顿法

四、牛顿法

  1. 梯度下降法有个缺陷:它未能利用海森矩阵的信息。 当海森矩阵的条件数较大时,不同方向的梯度的变化差异很大。 在某些方向上,梯度变化很快;在有些方向上,梯度变化很慢。 梯度下降法未能利用海森矩阵,也就不知道应该优先搜索导数长期为负或者长期为正的方向。 本质上应该沿着负梯度方向搜索。但是沿着该方向的一段区间内,如果导数一直为正或者一直为负,则可以直接跨过该区间。前提是:必须保证该区间内,该方向导数不会发生正负改变。 当海森矩阵的条件数较大时,也难以选择合适的步长。 步长必须足够小,从而能够适应较强曲率的地方(对应着较大的二阶导数,即该区域比较陡峭)。 但是如果步长太小,对于曲率较小的地方(对应着较小的二阶导数,即该区域比较平缓)则推进太慢。
  2. 下图是利用梯度下降法寻找函数最小值的路径。该函数是二次函数,海森矩阵条件数为 5,表明最大曲率是最小曲率的5倍。红线为梯度下降的搜索路径。

g_descent.PNG

  1. 牛顿法结合了海森矩阵。 考虑泰勒展开式:![四、牛顿法 - 图2] 处的海森矩阵。 如果 ![四、牛顿法 - 图7] 。

  2. 四、牛顿法 - 图10

  3. 四、牛顿法 - 图11

  4. 一维情况下,梯度下降法和牛顿法的原理展示:

newton

  • 梯度下降法:下一次迭代的点 四、牛顿法 - 图13 对于一维的情况,可以固定 ![四、牛顿法 - 图14] 越小。

  • 牛顿法:目标是 四、牛顿法 - 图17 在一维情况下就是求解 ![四、牛顿法 - 图18] 。 推广到多维情况下就是:![四、牛顿法 - 图24] 。

  • 当位于一个极小值点附近时,牛顿法比梯度下降法能更快地到达极小值点。 如果在一个鞍点附近,牛顿法效果很差,因为牛顿法会主动跳入鞍点。而梯度下降法此时效果较好(除非负梯度的方向刚好指向了鞍点)。

  • 仅仅利用了梯度的优化算法(如梯度下降法)称作一阶优化算法,同时利用了海森矩阵的优化算法(如牛顿法)称作二阶优化算法。

  • 牛顿法算法: 输入:

  • 目标函数 四、牛顿法 - 图2

  • 梯度 四、牛顿法 - 图2

  • 海森矩阵 四、牛顿法 - 图2

  • 精度要求 四、牛顿法 - 图2

  • 输出: 四、牛顿法 - 图2 算法步骤:

  • 选取初始值 四、牛顿法 - 图3 迭代,停止条件为:梯度收敛。迭代步骤为:

  • 计算 四、牛顿法 - 图3

  • 四、牛顿法 - 图3

  • 四、牛顿法 - 图3

  • 计算 四、牛顿法 - 图3

  • 四、牛顿法 - 图4

  • 四、牛顿法 - 图4

  • 梯度下降法中,每一次 ![四、牛顿法 - 图42] 决定,若跨度过大容易引发震荡。 而牛顿法中,每一次 ![四、牛顿法 - 图45] 中(也可以乘以学习率作为幅度的系数)。

newton

  1. 深度学习中的目标函数非常复杂,无法保证可以通过上述优化算法进行优化。因此有时会限定目标函数具有Lipschitz连续,或者其导数Lipschitz连续。

  2. Lipschitz连续的定义:对于函数 四、牛顿法 - 图4

四、牛顿法 - 图5 Lipschitz连续的意义是:输入的一个很小的变化,会引起输出的一个很小的变化。

与之相反的是:输入的一个很小的变化,会引起输出的一个很大的变化

  1. 凸优化在某些特殊的领域取得了巨大的成功。但是在深度学习中,大多数优化问题都难以用凸优化来描述。 凸优化的重要性在深度学习中大大降低。凸优化仅仅作为一些深度学习算法的子程序。

文章列表

更多推荐

更多
  • Pharo敏捷人工智能-第一部分:神经网络
    Apache CN

  • Pharo敏捷人工智能-第二部分:遗传算法
    Apache CN

  • Pharo敏捷人工智能-# 第三部分:神经进化 第三部分:神经进化
    Apache CN

  • Azure数据工程指南-二十四、数据治理的权限 创建 azure 预览帐户,探索 azure 预览,探索词汇表,浏览资产,以编程方式使用预览,摘要,管理凭证和访问,创建扫描, 许多组织需要建立数据治理流程、标准和方法,并且已经能够使用内部 SQL Server 工具(如 Master
    Apache CN

  • Azure数据工程指南-二十二、Synapse 分析工作区 创建 Synapse 分析工作区,使用 Spark 探索样本数据,用 SQL 查询数据,用 SQL 创建外部表,摘要, 微软 Azure 数据平台的众多新增功能已经围绕许多类似的产品及其在现代 Azure 数据平台中的用途产生了兴奋和困
    Apache CN

  • Azure数据工程指南-二十三、数据块中的机器学习 创建 MLflow 实验,安装 MLflow 库,创建笔记本,选择性测井,自动记录,摘要, 寻求利用机器学习(ML)和人工智能能力的组织和开发人员花费大量时间构建 ML 模型,并寻求一种方法来简化他们的机器学习开发生命周期,以跟踪实验,
    Apache CN

  • Azure数据工程指南-二十一、将 Apache Spark 的 GraphFrame API 用于图形分析 安装 JAR 库,加载新数据表,将数据加载到数据块笔记本中,用顶点和边构建一个图,查询图表,寻找有图案的图案,用 PageRank 发现重要性,探索入度和出度度量,摘要,进行广度优先搜索,查找连接的组件, 图形技术使用户能够以图形的形式
    Apache CN

  • Azure数据工程指南-20 二十、部署 SQL 数据库先决条件,创建 Visual Studio SQL 数据库项目,安装 Visual Studio GitHub 扩展,导入 AdventureWorks 数据库,连接到 GitHub Repo 源代码控制,将
    Apache CN

  • Azure数据工程指南-十九、部署数据工厂更改 先决条件,创建 DevOps 持续集成构建管道,创建 DevOps 持续部署发布渠道,验证部署的数据工厂资源,摘要,Azure PowerShell 任务停止触发器,ARM 模板部署任务,Azure PowerShell 任务启动触发器
    Apache CN

  • Azure数据工程指南-十八、用于 Cosmos DB 的 Azure Synapse 链接 创建一个 Azure Cosmos DB 帐户,启用 Azure Synapse 链接,创建一个 Cosmos DB 容器和数据库,将数据导入 Azure Cosmos DB,在 Azure Synapse Analytics 中创建
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多