[机器学习Lesson3] 梯度下降算法

简介: 1. Gradient Descent(梯度下降)梯度下降算法是很常用的算法,可以将代价函数J最小化。它不仅被用在线性回归上,也被广泛应用于机器学习领域中的众多领域。1.1 线性回归问题应用我们有一个函数J(θ0,θ1),要使其最小化minJ(θ0,θ01):Outline对θ0,θ1开始进行一些猜测通常将初θ0,θ1初始化为0在梯度算法中,要做的就是不停的一点点改变θ0和θ1试图通过这种改变使得J(θ0,θ1)变小,直到找到J的最小值或者局部最小值。

1. Gradient Descent(梯度下降)

梯度下降算法是很常用的算法,可以将代价函数J最小化。它不仅被用在线性回归上,也被广泛应用于机器学习领域中的众多领域。

1.1 线性回归问题应用

我们有一个函数J(θ0,θ1),要使其最小化minJ(θ0,θ01):

Outline

  • 对θ0,θ1开始进行一些猜测
    通常将初θ0,θ1初始化为0
  • 在梯度算法中,要做的就是不停的一点点改变θ0和θ1试图通过这种改变使得J(θ0,θ1)变小,直到找到J的最小值或者局部最小值。

1.2 梯度算法工作原理

现在我们把这个图像想象为一座山,想像类似这样的景色 :公园中有两座山,想象一下你正站立在山的这一点上 站立在你想象的公园这座红色山上。在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己,我要在某个方向上,用小碎步尽快下山。如果我想要下山。如果我想尽快走下山,这些小碎步需要朝什么方向? 如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,大约是那个方向。

现在你在山上的新起点上 你再看看周围 然后再一次想想 我应该从什么方向迈着小碎步下山? 然后你按照自己的判断又迈出一步 往那个方向走了一步 然后重复上面的步骤。从这个新的点,你环顾四周并决定从什么方向将会最快下山。然后又迈进了一小步,并依此类推,直到你接近这里,直到局部最低点的位置。

image

现在想象一下,我们在刚才的右边一些的位置,对梯度下降进行初始化。想象我们在右边高一些的这个点。开始使用梯度下降。如果你重复上述步骤,停留在该点,并环顾四周,往下降最快的方向迈出一小步,然后环顾四周又迈出一步,然后如此往复。如果你从右边不远处开始梯度下降算法将会带你来到这个右边的第二个局部最优处。 如果从刚才的第一个点出发,你会得到这个局部最优解 但如果你的起始点偏移了一些,起始点的位置略有不同 你会得到一个非常不同的局部最优解。这就是梯度下降算法的一个特点。

1.3 梯度下降算法定义。

  • :=:赋值符号(Assignment).
  • α:这里的α是一个数字,被称为学习速率(learning rate)。在梯度下降算法中,它控制了我们下山时会迈出多大的步子。
  • 微分项。

在梯度下降中,我们要更新θ0和θ1。当 j=0 和 j=1 时 会产生更新。所以你将更新J、θ0还有θ1。实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新 θ0和θ1。

θ0和θ1需要同步更新,右侧是非同步更新,错误。

1.4 梯度下降和代价函数

梯度下降是很常用的算法,它不仅被用在线性回归上 和线性回归模型还有平方误差代价函数。
当具体应用到线性回归的情况下,可以推导出一种新形式的梯度下降法方程:

image

  • m:训练集的大小
  • θ0与θ1同步改变
  • xi和yi:给定的训练集的值(数据)。

我们已经分离出两例θj:θ0和θ1为独立的方程;在θ1中,在推导最后乘以Xi。以下是推导∂/∂θjJ(θ)的一个例子:

image

这一切的关键是,如果我们从猜测我们的假设开始,然后反复应用这些梯度下降方程,我们的假设将变得越来越精确。

因此,这只是原始成本函数J的梯度下降。这个方法是在每个步骤的每个训练集中的每一个例子,被称为批量梯度下降。注意,虽然梯度下降一般容易受到局部极小值的影响,但我们在线性回归中所提出的优化问题只有一个全局,没有其他局部最优解,因此梯度下降总是收敛(假定学习率α不是太大)到全局最小值。实际上,j是凸二次函数。这里是一个梯度下降的例子,它是为了最小化二次函数而运行的。

image

上面所示的椭圆是二次函数的轮廓图。也表明是通过梯度下降的轨迹,它被初始化为(48,30)。X在图(连接的直线)的标志,θ梯度穿过它收敛到最小的连续值。


本文资料部分来源于吴恩达 (Andrew Ng) 博士的斯坦福大学机器学习公开课视频教程。

[1]网易云课堂机器学习课程:
http://open.163.com/special/opencourse/machinelearning.html
[2]coursera课程:
https://www.coursera.org/learn/machine-learning/

目录
相关文章
|
16天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
44 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
|
17天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
21 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
23天前
|
机器学习/深度学习 算法
深度学习中的优化算法:从梯度下降到Adam
本文深入探讨了深度学习中的核心——优化算法,重点分析了梯度下降及其多种变体。通过比较梯度下降、动量方法、AdaGrad、RMSProp以及Adam等算法,揭示了它们如何更高效地找到损失函数的最小值。此外,文章还讨论了不同优化算法在实际模型训练中的表现和选择依据,为深度学习实践提供了宝贵的指导。
52 7
|
1月前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
1月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
166 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
机器学习必知必会10大算法
机器学习必知必会10大算法
|
2月前
|
机器学习/深度学习 存储 算法
图解最常用的 10 个机器学习算法!
图解最常用的 10 个机器学习算法!
|
4天前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
|
1月前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
下一篇
无影云桌面