首页 > 其他分享 >[最优化方法笔记] 梯度下降法

[最优化方法笔记] 梯度下降法

时间:2023-12-15 17:12:25浏览次数:40  
标签:partial 梯度 nabla 笔记 下降 text alpha 最优化

1. 梯度下降法

无约束最优化问题一般可以概括为:

\[\min_{x \in \mathbb{R}^n}f(x) \]

通过不断迭代到达最优点 \(x^*\),迭代过程为:

\[x^{k + 1} = x^k + \alpha_k d^k \]

其中 \(d^k\) 为当前的 搜索方向,\(\alpha_k\) 为当前沿着搜索方向的 步长

我们需要寻找可以不断使得 \(f(x^{k + 1} < f(x^k)\) 的方法。


构造一元辅助函数:

\[\phi(\alpha) = f(x^{k + 1})= f(x^k + \alpha d^k) \]

其中 \(d^k\) 是 下降方向,\(\alpha > 0\) 是辅助函数的 自变量

由一阶泰勒展开式将目标函数进行泰勒展开:

\[f(x) = f(x^k) + \nabla f(x^k)^T (x - x^k) + o(||x - x^k||) \]

(带皮亚诺余项的一阶泰勒展开)

可得:

\[\phi (\alpha) = f(x^k) + \alpha \nabla f(x^k) ^T d^k + o(||x^{k + 1} - x^k||) \]

为了使得迭代过程 可行,能够达到 收敛,显然有 \(||x^{k + 1} - x^k|| \rightarrow 0\),所以有:

\[f(x^{k + 1}) = f(x^k) + \alpha \nabla f(x^k)^T d^k \]

显然,为了能够使得 \(f(x^{k + 1}) < f(x^k)\),需要确保 \(\alpha \nabla f(x^k)^Td^k < 0\),而 \(\alpha > 0\),所以需要保证:

\[\frac{\partial f}{\partial \alpha} = \nabla f(x^k)^T d^k < 0 \]

为了使得 下降速度尽可能快,即有关于下降方向的最优化问题:

\[(d^k)^* = \text{arg}\min_{d^k} \frac{\partial f}{\partial \alpha} = \text{arg}\max_{d^k} - \frac{\partial f}{\partial \alpha} \]

柯西不等式

\[-\frac{\partial f}{\partial \alpha} = - \nabla f(x^k)^Td^k \le ||\nabla f(x^k)|| \cdot ||d^k|| \]

根据柯西不等式等号成立的条件,需要使 \(d^k\) 与 \(- \nabla f(x^k)\) 同向。所以,我们需要找到的 最快的下降方向 即:

\[(d^k)^* = - \nabla f(x^k) \]

由此得出 梯度下降法 (最速下降法) 的迭代格式:

\[x^{k + 1} = x^k - \alpha_k \nabla f(x^k) \]

其中 步长 \(\alpha_k\) 可以依据线搜索算法(精确解、直接搜索、非精确搜索的一些准则等)得到,也可以选取固定的步长 \(\alpha\) 。

终止条件 一般有 \(||x^{k + 1} - x^k|| < \varepsilon\) 或 \(|f(x^{k + 1}) - f(x^k)| < \varepsilon\) 。其中 \(\varepsilon\) 是一个很小的数。

如下图所示,为一个二元二次函数 \(f(x, y)\),采用 梯度下降法 \(x^{k + 1} = x^k - \alpha_k \nabla f(x^k)\) 的迭代过程。


在机器学习领域,梯度下降法有非常广泛的应用。例如梯度下降法解决线性回归问题。[机器学习复习笔记] Grandient Descent 梯度下降法




2. Lipschitz 连续

2.1 梯度利普希茨连续定义

给定可微函数 \(f\),若存在 \(L > 0\),对于任意 \(x, y \in \text{dom} f\) 有:

\[||\nabla f(x) - \nabla f(y)|| \le L||x - y|| \]

则称 \(f\) 是 梯度利普希茨连续 的。其中 \(L\) 为 利普希茨常数

函数 \(f\) 满足 \(\text{Lipschitz}\) 连续可以理解为该函数的变化速率受到了限制。变化速率的上界即为 \(\text{Lipschitz}\) 常数 \(L\)。


2.2 下降引理(二次上界)

设可微函数 \(f\) 定义域 \(\text{dom} f = \mathbb{R}^n\),且 梯度利普希茨连续,则 其 \(\text{Hessian}\) 矩阵满足:

\[\nabla ^2 f(x) \preceq LI \]

其中 \(L\) 为 利普希茨常数,\(I\) 为单位阵。

导数 \(\nabla f(x)\) 变化 最快的方向 就是它的 \(\text{Hessian}\) 矩阵 \(\nabla ^2 f(x)\) 绝对值 最大特征值所对应的特征向量

对函数 \(f\) 进行泰勒展开得:

\[\begin{split} f(y) &= f(x) + \nabla f(x)^T (y - x) + \frac{1}{2}(y - x)^T \nabla ^2 f(x) (y - x) \\\\ & \le f(x) + \nabla f(x)^T (y - x) + \frac{L}{2}||y - x||^2 \end{split} \]

对任意 \(x, y \in \text{dom} f\) 成立,称 \(f(x)\) 有二次上界。




3. 梯度下降收敛性

梯度法迭代式:

\[x^{k + 1} = x^k - \alpha_k \nabla f(x^k) \]

  • 设函数 \(f(x)\) 为凸函数,且梯度利普希茨连续

  • 极小值 \(f(x^*)\) 存在且可达

  • 步长应满足 \(0 < \alpha < \frac{1}{L}\)

条件(2)是一个不可或缺的条件,它保证了原始的优化问题存在可行解。

条件(1)和条件(3)使得下降引理成立,保证了梯度下降算法在优化目标函数过程中的正确性。




参考

刘浩洋, 户将, 李勇锋, 文再文《最优化:建模、算法与理论》

最优化方法复习笔记(一)梯度下降法、精确线搜索与非精确线搜索(推导+程序)

线搜索法的理论(一) - 下降方向

标签:partial,梯度,nabla,笔记,下降,text,alpha,最优化
From: https://www.cnblogs.com/MAKISE004/p/17903765.html

相关文章

  • 《Java编程思想第四版》学习笔记47--关于handleEvent
    (4)增加可以被handleEvent()方法测试事件的组件到练习3中。过载handleEvent()并在文字字段中为每个组件显示特定的消息。                                                ......
  • 【graphviz笔记】用graphviz画UML类图
    digraphUMLClassDiagram{//指定节点类型,这样节点才会变成UML的类图矩形node[shape=record,fontname="Arial"];//定义节点数据//其中“|”会渲染成横线;//\l表示向左对齐,同时换行//\n表示居中对齐,同时换行class1[label="{ Class1 | +attribute1:type\l +me......
  • linux 学习笔记
    计算机硬件软件体系 冯诺依曼体系结构1.计算机处理的数据和指令一律用二进制数表示2.顺序执行程序3.计算机硬件由运算器、控制器、存储器、输入设备、输出设备五部分组成计算机硬件组成、1.输入设备 键盘鼠标2.输出设备 显示器,音响3.存储器 1)RAM(randomaccessmemory)随......
  • 学C笔记归纳 第十四篇——一维数组
    1.什么是数组?        数组是一组相同类型元素的集合。2.数组的创建方式        type_tarr_name[const_n]        type_t            数组的元素类型    arr_name     数组名        const_n   ......
  • [Python学习笔记]制作自动将xls文件转化为xlsx文件的程序
    背景:供应商程序导出的文件是xls格式的,我需要使用PowerQuery将这些文件合并整理,但是目前没有找到可以打卡xls文件的代码,所以将xls文件转化为xlsx文件后再使用PowerQuery进行处理。思路:1.网上找到了将xls文件转化为xlsx文件的代码,将这个代码定义为一个函数去执行转换的功能......
  • Leader笔记:程序员小团队透明和信任管理
    今天想跟大家分享一下小团队的透明管理,这也是一个管理技巧,相信很多Leader身份的同学都了解到主管有很大的一个优势,就是在组织内拥有了信息不对称能力,Leader能够听到和了解到完全不同层面上的内容和消息,所以有很多Leader就采用这种信息不对称的方式来管理同学,这种短期看起来确实会......
  • 算法学习笔记二一冒泡排序
    目录什么是冒泡排序算法原理代码示例什么是冒泡排序​对给定数组进行遍历,每次比较相邻两个元素大小,若大的数值在前面则交换两数位置(升序),每完成一趟遍历数组中最大的元素都会上升到数组的末尾,这也是冒泡一词的由来。算法原理(升序)列表每相邻的数,如果前面比后面大,则交换这两个数......
  • openGauss学习笔记-159 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-159openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出所有数据库-导出所有数据库159.1导出所有数据库openGauss支持使用gs_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库信息和公共的全局对象信息。可根......
  • 读书笔记12《构建之法 现代软件工程(第二版)》读后感
    今天将《大话软件工程-需求分析与软件设计》这本书算是总体阅读下来了,说一说总的感受。《大话软件工程-需求分析与软件设计》是一本为软件工程师和客户们提供一套支持交流、传递,具有很强实操性的理论、方法、工具和标准的书籍。这本书让我对软件工程有了更深入的理解,并且让我......
  • Zotero使用笔记
    1、下载导入论文第一种:打开谷歌学术,输入关键词,然后我们能看到相关的论文,最后点击黄色的文件袋,选择想要导入的论文。——注意:Zotero也需要打开。 第二种:进入Zotero通过点击标识符,输入专属的ISBN或DOI,生成条目。 第三种:进入Zotero点击+按钮,手动添加第四种:将PDF拖拽到Zot......