梯度下降|笔记

1.梯度下降法的原理

1.1确定一个小目标:预测函数

机器学习中一个常见的任务是通过学习算法,自动发现数据背后的规律,不断改进模型,做出预测。

上图的坐标系,横轴表示房子面积,纵轴表示房价,图中的点就是给出的数据。

任务是,设计一个算法,让机器能够拟合这些数据,算出直线的参数w

一个简单的方法是,先随机选一条过原点的直线,然后计算所有样本点和这条直线的偏离程度,再根据误差大小来调整w的值。

1.2 找到差距:代价函数

均方误差,所有点的误差相加求和再求平均值

e1 e2 ...en是每个点的误差值

把每个点的误差值相加求和再求平均值,合并同类项

上面这个误差函数代表了学习需要付出的代价,也常被称为代价函数(cost function),

二次项的系数a>0,是一个开口向上的抛物线

左边的直线绕原点旋转,对应到右边图像上就是取值点(红色)在抛物线上运动,

左边找到正确的w的值的时候,对应右边图像上取值点应该到最底部,即梯度为0的点

左边是预测函数,右边是代价函数

通过定义预测函数,根据误差公式,推导代价函数,可以成功地将样本点的拟合过程映射到一个函数图像上,

1.3 明确搜索方向:梯度下降

目标是找到代价函数的最低点,

从当前点的位置,每一步都选择"最陡峭"的方向走,这就是前进的方向 沿着这个方向走,就能最快到达最低点

"陡峭程度"就是梯度,是代价函数的导数,抛物线的曲线斜率

(补充:机器学习、深度学习中很多模型是非常复杂的,不能对整个函数求导,只能在一个函数的一个点上求导)

1.4 迈多大步子:学习率

步子太小,loss值会一直在最低点处震荡,难以收敛

直接使用斜率值做步长,步子太大,取值会左右横跳,loss难以收敛

正确的做法:给斜率值乘上一个很小的数值,也就是乘上学习率α,

调整权重参数w的公式是:

1.5 不达目的不罢休:循环迭代

1-4步如下图:

第5步就是重复3、4步,直到找到最低点

整个流程就是梯度下降算法

实际情况没这么简单,

因为实际情况中,训练样本的分布千奇百怪,代价函数也可能千变万化,不太可能是一条简单的抛物线。

代价函数的图像是波浪线时,会有多个最低点,要找到全局最优

代价函数还有可能是高维的,十几维、百维,难以可视化;但都可以通过梯度下降法找到最低点。

2. 梯度下降算法的变体

2.1 批量梯度下降

每次用全部训练样本参与计算,梯度下降的非常平稳,

优点:保证算法的精准度,找到全局最优点

缺点:训练搜索过程慢,代价大

2.2 随机梯度下降

每次只用一个样本参与计算,

优点:提升了计算速度,

缺点:牺牲了一定的精准度

2.3 min-batch梯度下降

每次选用小批量样本进行计算

优点:比批量梯度下降快,比随机梯度下降准确

2.4 其它

其它改进的梯度下降算法:

AdaGrad 动态调节学习率,经常更新的参数学习率小一些,不常更新的参数学习率大

RMSProp 优化动态学习率

AdaDelta无需设置学习率

Adam 融合了AdaGrad和RMSProp

补充:

梯度下降是一种用来对模型的参数进行更新的优化算法,在机器学习和深度学习中,模型的目标是通过调整参数来最小化损失函数。梯度下降算法,通过计算损失函数对参数的梯度(即求导),来指导参数的更新方向。通过迭代地沿着梯度的反方向更新参数,梯度下降算法可以逐步地降低损失函数的值,从而使模型更准确地进行预测或分类。


道阻且长,行则将至!


相关推荐
闲人编程20 天前
Python 实现 LM 算法(Levenberg-Marquardt)
开发语言·python·算法·优化·梯度下降·拟合·lm
hyk今天写算法了吗22 天前
凸优化学习(2)——梯度类方法求解(gradient descent)
人工智能·深度学习·学习·梯度下降·凸优化
py明天会更好2 个月前
【Deep-ML系列】Linear Regression Using Gradient Descent(手写梯度下降)
人工智能·算法·线性回归·梯度下降
大数据AI人工智能培训专家培训讲师叶梓2 个月前
Learning Law:迈向语言模型最优学习的理论
人工智能·机器学习·语言模型·自然语言处理·优化·梯度下降·无损数据压缩
逐梦苍穹2 个月前
PyTorch的自动微分模块【含梯度基本数学原理详解】
人工智能·pytorch·python·数学·算法·梯度下降·自动微分
松下J273 个月前
深度学习 --- stanford cs231学习笔记七(训练神经网络之梯度下降优化器)
人工智能·深度学习·神经网络·梯度下降·sgd
不会&编程3 个月前
方向导数和梯度
深度学习·神经网络·梯度下降
知来者逆4 个月前
深度神经网络——什么是梯度提升?
人工智能·深度学习·神经网络·机器学习·dnn·梯度下降·梯度提升
Sarapines Programmer4 个月前
【动手学深度学习】softmax回归从零开始实现的研究详情
人工智能·深度学习·梯度下降·python实现·softmax回归·多类别分类
知来者逆4 个月前
深度神经网络——什么是梯度下降?
人工智能·深度学习·神经网络·机器学习·dnn·梯度下降