IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 梯度下降法(Gradient Descent)求解最优化问题 -> 正文阅读

[数据结构与算法]梯度下降法(Gradient Descent)求解最优化问题

梯度下降法应用十分广泛,可以用于求解最小值问题。一个机器学习算法的目标就是要找到其损失函数最低点对应的参数,这时就用到了梯度下降法,该方法在之后要介绍的很多算法中要用到,所以单独写一篇文章来介绍。

1.概述

梯度下降法也成为最速下降法,是一种一阶最优化算法。

  • 首先对所有的参数进行初始化;
  • 然后不断更新参数的值,直到目标函数达到最小值。此时模型就被训练完成了。

Require: 学习率 α \alpha α和初始参数 Θ \Theta Θ
repeat
θ j : = θ j ? α ? ? J ( Θ ) ? θ j \theta _{j} := \theta _{j} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{j}} θj?:=θj??α??θj??J(Θ)?
until 达到收敛条件

注意事项
参数同时更新
正确的计算方式:(假设只有两个参数)
t e m p 0 : = θ 0 ? α ? ? J ( Θ ) ? θ 0 temp_{0} := \theta _{0} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{0}} temp0?:=θ0??α??θ0??J(Θ)?
t e m p 1 : = θ 1 ? α ? ? J ( Θ ) ? θ 1 temp_{1} := \theta _{1} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{1}} temp1?:=θ1??α??θ1??J(Θ)?
θ 0 : = t e m p 0 \theta _{0} := temp_{0} θ0?:=temp0?
θ 1 : = t e m p 1 \theta _{1} := temp_{1} θ1?:=temp1?
错误的计算方式:(假设只有两个参数)
t e m p 0 : = θ 0 ? α ? ? J ( Θ ) ? θ 0 temp_{0} := \theta _{0} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{0}} temp0?:=θ0??α??θ0??J(Θ)?
θ 0 : = t e m p 0 \theta _{0} := temp_{0} θ0?:=temp0?
t e m p 1 : = θ 1 ? α ? ? J ( Θ ) ? θ 1 temp_{1} := \theta _{1} - \alpha \cdot \frac{\partial J(\Theta )}{\partial \theta _{1}} temp1?:=θ1??α??θ1??J(Θ)?
(此时由于 θ 0 \theta _{0} θ0?已经更新, t e m p 1 temp_{1} temp1?的值将受到影响)
θ 1 : = t e m p 1 \theta _{1} := temp_{1} θ1?:=temp1?

2.公式中各项的含义

收敛准则

不能证明梯度下降法是收敛的,并且没有明确定义的算法停止准则

通常使用如下方法对是否收敛进行判断:

  • 当梯度向量的欧几里得范数达到一个充分小的阈值时。
    ∥ ? Θ ∥ = ( ? θ 0 ) 2 + ( ? θ 1 ) 2 + ? + ( ? θ n ) 2 \left \| \nabla\Theta \right \| = \sqrt{(\nabla\theta_{0})^{2}+(\nabla\theta_{1})^{2}+\cdots +(\nabla\theta_{n})^{2}} ?Θ=(?θ0?)2+(?θ1?)2+?+(?θn?)2 ?
  • 当迭代的每一个回合的均方误差变化的绝对速率足够小时。

当目标函数是凸函数时,梯度下降法的解是全局最优解。一般情况下,其解不保证是全局最优解。其下降速度也不保证是最快的(不同特征之间特征值相差较大的情况下使用特征缩放,能够加快下降速度)。

导数项含义(作用)

导数为正
导数为正: θ = θ ? α ? \theta = \theta - \alpha \cdot θ=θ?α? (positive number), θ \theta θ变小,向代价减小的方向;
导数为负
导数为负: θ = θ ? α ? \theta = \theta - \alpha \cdot θ=θ?α? (negtive number), θ \theta θ变大,向代价减小的方向。
由此可见,导数项的作用是使参数向使得损失逐渐减小的方向更新。

学习率(learning rate)的作用

学习率 α \alpha α决定梯度下降的速度
学习率的作用
上图引自知乎用户@马同学,图中的 η \eta η表示学习率。
由上图可知,学习率太小,导致梯度下降缓慢,而学习率太高,可能越过最低点,导致无法收敛甚至发散,因此,应该选取合适大小的学习率。可以尝试从一系列学习率中(…, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, …间隔约三倍)使用K折交叉验证的方式选取合适的学习率。
梯度下降速率
在迭代的过程中,应使梯度下降的速率逐渐缓慢,以免越过最低点,而在实际的操作中,不需要逐渐减小 α \alpha α值,因为导数值越来越小,梯度下降会自动变缓慢。

3.批量与小批量

  • 批量梯度下降法(Gradient Descent, GD, Batch Gradient Descent):使用全部训练样本估计梯度进行训练。计算量大,一般不使用批量算法。
  • 小批量梯度下降法(Mini Batch Gradient Descent, MBGD):使用部分训练样本估计梯度进行训练。实际操作中最常使用。
  • 随机梯度下降法(Stochastic Gradient Descent, SGD):每次从固定训练集中抽取一个训练样本估计梯度进行训练。

4.总结

以上就是关于梯度下降算法的内容,其具体应用及实现将在以后的算法中展示。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:35:49  更:2021-11-22 12:36:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 16:18:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码