机器学习中的数学原理——随机梯度下降法

简介: 机器学习中的数学原理——随机梯度下降法

一、什么是随机梯度下降法

随机梯度下降是随机取样替代完整的样本,主要作用是提高迭代速度,避免陷入庞大计算量的泥沼。 对于整个样本做GD又称为批梯度下降(BGD,batch gradient descent)。 随机梯度下降(SGD, stochastic gradient descent) :名字中已经体现了核心思想,随机选取一个店做梯度下降,而不是遍历所有样本后进行参数迭代。

二、算法分析

之前我们介绍过最速梯度下降法,即只要向与导数的符号相反的方向移动 x,g(x) 就会自然而然地沿着最小值的方向前进了。也就是自动更新参数。但是最速下降法除了计算花时间以外,还有一个缺点——容易陷入局部最优解。在讲解回归时,我们使用的是平方误差目标函数。这个函数形式 简单,所以用最速下降法也没有问题。现在我们来考虑稍微复杂 一点的,比如下列的图这种形状的函数:

最速下降法来找函数的最小值时,必须先要决定从哪个 x 开始 找起。之前我们用 g(x) 说明的时候是从 x = 3 或者 x = −1 开始的,这是我们随便选择的,选用随机数作为初始值的情况比较多。不过这样每次初始值都会变,进而导致陷入局部最优解的问题。假设这张图中标记的位置就是初始值:

那么从这个点开始找,可以求出最小值。但是如果将下列这个点作为初始值,还没计算完就会停止,这就叫陷入了局部最优解

随机梯度下降法就是以最速下降法为基础的。我们先复习一下最速下降法,还记得最速下降法的参数更新表达式吗?

这个表达式使用了所有训练数据误差,而在随机梯度下降法中会随机选择一个训练数据并使用它来更新参数。这个表达 式中的 k 就是被随机选中的数据索引

所以最速下降法更新 1 次参数的时间,随机梯度下降法可以更新 n 次,速度上明显提升。 此外,随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解。并且在实际计算过程中,的确会收敛!这样的做法就叫做随机梯度下降法

上述提到的是随机选择1个训练数据的做法,此外还有随机选择 m 个训练数据来更新参数的做法。设随机选择 m 个训练数据的索引的集合为 K,那么我们这样来更新参数:

假设训练数据有 100 个,那么在 m = 10 时,创建一个有 10 个随机数的索引的集合,例如 K = {61, 53, 59, 16, 30, 21, 85, 31, 51, 10},然后重复更新参数就可以了,这样的做法称为小批量(mini-batch)梯度下降法,这是一种介于最速下降法和随机梯度下降法之间的方法

三、总结

不管是随机梯度下降法还是小批量梯度下降法,我们都必须考虑学习率 η。把 η 设置为合适的值是很重要的。学习率的决定是一个很难的问题,可以通过反复尝试来找到合适的值,除此之外还有其他的几个办法,这是我们后续所要学习的!这三个算法总结成一句话:最速梯度下降法是用每个对应的估计值减去实际值求和,随机梯度下降法是用选定的一个估计值减去实际值求和,批量梯度下降法是用选定的多个估计值减去实际值求和。


相关文章
|
2月前
|
机器学习/深度学习 算法 知识图谱
【机器学习】逻辑回归原理(极大似然估计,逻辑函数Sigmod函数模型详解!!!)
【机器学习】逻辑回归原理(极大似然估计,逻辑函数Sigmod函数模型详解!!!)
|
2月前
|
机器学习/深度学习 算法
机器学习入门(三):K近邻算法原理 | KNN算法原理
机器学习入门(三):K近邻算法原理 | KNN算法原理
|
2月前
|
机器学习/深度学习 API
机器学习入门(七):线性回归原理,损失函数和正规方程
机器学习入门(七):线性回归原理,损失函数和正规方程
|
2月前
|
机器学习/深度学习 算法
【机器学习】揭秘GBDT:梯度提升决策树
【机器学习】揭秘GBDT:梯度提升决策树
|
2月前
|
机器学习/深度学习 程序员
【机器学习】朴素贝叶斯原理------迅速了解常见概率的计算
【机器学习】朴素贝叶斯原理------迅速了解常见概率的计算
|
2月前
|
机器学习/深度学习 算法
【机器学习】逻辑回归介绍(逻辑回归应用场景,原理,损失及优化详解!!!)
【机器学习】逻辑回归介绍(逻辑回归应用场景,原理,损失及优化详解!!!)
|
4月前
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
109 2
|
3月前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
|
4月前
|
机器学习/深度学习 人工智能 关系型数据库
【机器学习】Qwen2大模型原理、训练及推理部署实战
【机器学习】Qwen2大模型原理、训练及推理部署实战
724 0
【机器学习】Qwen2大模型原理、训练及推理部署实战
|
4月前
|
机器学习/深度学习 数据采集 物联网
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
144 0