【stanford】梯度、梯度下降,随机梯度下降

本文深入探讨了梯度下降法及其改进版本随机梯度下降法的工作原理、核心概念和应用实例,包括如何利用梯度指导优化过程,以及随机梯度下降法在处理大规模数据集时的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、梯度gradient

http://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6

在标量场f中的一点处存在一个矢量G,该矢量方向为f在该点处变化率最大的方向,其模也等于这个最大变化率的数值,则矢量G称为标量场f的梯度。

向量微积分中,标量场的梯度是一个向量场

标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。

更严格的说,从欧氏空间Rn到R的函数的梯度是在Rn某一点最佳的线性近似。在这个意义上,梯度是雅戈比矩阵的一个特殊情况。

在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率

梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。

一个标量函数\varphi的梯度记为:\nabla \varphi\rm grad \varphi, 其中\nablanabla)表示矢量微分算子

 

二、梯度下降法

http://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B3%95

梯度下降法,基于这样的观察:

如果实值函数 F(\mathbf{x}) 在点 \mathbf{a}可微且有定义,那么函数 F(\mathbf{x})\mathbf{a} 点沿着梯度相反的方向 -\nabla F(\mathbf{a}) 下降最快。因而,如果

\mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})

对于 \gamma>0 为一个够小数值时成立,那么 F(\mathbf{a})\geq F(\mathbf{b})

\mathbf{a} 是向量。

考虑到这一点,我们可以从函数 F 的局部极小值的初始估计 \mathbf{x}_0 出发,并考虑如下序列 \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots 使得

\mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

因此可得到

F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

如果顺利的话序列 (\mathbf{x}_n) 收敛到期望的极值。注意每次迭代步长 \gamma 可以改变。

 

梯度下降法的缺点是:

  • 靠近极小值时速度减慢。
  • 直线搜索可能会产生一些问题。
  • 可能会'之字型'地下降。

 

三、随机梯度下降法stochastic gradient descent,也叫增量梯度下降

由于梯度下降法收敛速度慢,而随机梯度下降法会快很多

–根据某个单独样例的误差增量计算权值更新,得到近似的梯度下降搜索(随机取一个样例)

–可以看作为每个单独的训练样例定义不同的误差函数

–在迭代所有训练样例时,这些权值更新的序列给出了对于原来误差函数的梯度下降的一个合理近似

–通过使下降速率的值足够小,可以使随机梯度下降以任意程度接近于真实梯度下降

•标准梯度下降和随机梯度下降之间的关键区别

–标准梯度下降是在权值更新前对所有样例汇总误差,而随机梯度下降的权值是通过考查某个训练样例来更新的

–在标准梯度下降中,权值更新的每一步对多个样例求和,需要更多的计算

–标准梯度下降,由于使用真正的梯度,标准梯度下降对于每一次权值更新经常使用比随机梯度下降大的步长

–如果标准误差曲面有多个局部极小值,随机梯度下降有时可能避免陷入这些局部极小值中

### 关于梯度下降算法的参考文献与学术资料 梯度下降是一种广泛应用的优化方法,在机器学习领域中占据重要地位。以下是关于梯度下降及其相关优化方法的一些经典参考文献和书籍推荐: #### 经典书籍 1. **《Pattern Recognition and Machine Learning》 by Christopher M. Bishop** - 这本书提供了对梯度下降和其他优化技术的基础介绍,适合初学者理解其基本概念[^3]。 2. **《Deep Learning》 by Ian Goodfellow, Yoshua Bengio, Aaron Courville** - 该书详细讨论了深度学习中的各种优化算法,包括梯度下降的不同变体(如批量梯度下降随机梯度下降以及小批量梯度下降),并分析了它们的优点和局限性[^4]。 3. **《Machine Learning: A Probabilistic Perspective》 by Kevin P. Murphy** - 此书中涵盖了概率视角下的机器学习理论,并深入探讨了梯度下降作为主要优化工具的作用[^5]。 #### 学术论文 1. **“Efficient BackProp” by Yann LeCun et al., 1998** - 论文中不仅介绍了反向传播算法的工作机制,还涉及到了如何有效利用梯度信息来进行参数调整的方法[^6]。 2. **“On the importance of initialization and momentum in deep learning” by Ilya Sutskever et al., ICML 2013** - 文章研究了动量项对于加速收敛过程的重要性,并提出了改进版SGD+Momentum策略的有效性验证实验数据支持结论[^7]。 3. **“Adam: A Method for Stochastic Optimization” by Diederik P Kingma & Jimmy Ba, ICLR 2015** - 提出了自适应矩估计(Adaptive Moment Estimation),即Adam算法,它结合了一阶和二阶梯度的历史统计特性来自动生成每一步的学习率调节方案,从而提高了训练效率[^8]。 #### 在线资源 - **CS231n Convolutional Neural Networks for Visual Recognition (Stanford University)** 课程笔记中有专门章节讲解各类梯度下降法的实际应用案例及性能比较图表展示效果差异显著之处[^9]。 - **UFLDL Tutorial (Unsupervised Feature Learning and Deep Learning tutorial from Stanford)** 提供了一个较为系统的入门指南,帮助读者掌握从基础到高级的各种神经网络构建技巧其中包括详细的GD说明部分[^10]。 以上列举的内容均为经过时间考验的经典材料或者近年来影响力较大的研究成果,能够为希望深入了解梯度下降及相关主题的人士提供坚实的知识背景支撑。 ```python # 示例代码片段:简单的梯度下降实现 def gradient_descent(x_start, learn_rate, num_iterations): x = x_start history = [] for _ in range(num_iterations): grad = compute_gradient(x) # 假设已定义好计算梯度的函数 x -= learn_rate * grad # 更新规则 history.append(x) return history def compute_gradient(x): # 定义一个简单的一维函数 f(x)=x^2 的梯度 return 2*x # 对应的解析解 df/dx=2x gradient_history = gradient_descent(-5, 0.1, 100) print("Gradient Descent History:", gradient_history[-1]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值