梯度下降|笔记

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

补充:

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


道阻且长,行则将至!


相关推荐
_清豆°2 个月前
机器学习(四)——神经网络(神经元、感知机、BP神经网络、梯度下降、多层神经网络、Python源码)
python·神经网络·机器学习·感知机·梯度下降·神经元·多层神经网络
正义的彬彬侠2 个月前
交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式
人工智能·深度学习·神经网络·算法·机器学习·梯度下降·反向传播
闲人编程3 个月前
Python 实现 LM 算法(Levenberg-Marquardt)
开发语言·python·算法·优化·梯度下降·拟合·lm
hyk今天写算法了吗3 个月前
凸优化学习(2)——梯度类方法求解(gradient descent)
人工智能·深度学习·学习·梯度下降·凸优化
py明天会更好4 个月前
【Deep-ML系列】Linear Regression Using Gradient Descent(手写梯度下降)
人工智能·算法·线性回归·梯度下降
大数据AI人工智能培训专家培训讲师叶梓5 个月前
Learning Law:迈向语言模型最优学习的理论
人工智能·机器学习·语言模型·自然语言处理·优化·梯度下降·无损数据压缩
逐梦苍穹5 个月前
PyTorch的自动微分模块【含梯度基本数学原理详解】
人工智能·pytorch·python·数学·算法·梯度下降·自动微分
松下J276 个月前
深度学习 --- stanford cs231学习笔记七(训练神经网络之梯度下降优化器)
人工智能·深度学习·神经网络·梯度下降·sgd
不会&编程6 个月前
方向导数和梯度
深度学习·神经网络·梯度下降
知来者逆7 个月前
深度神经网络——什么是梯度提升?
人工智能·深度学习·神经网络·机器学习·dnn·梯度下降·梯度提升