Class2基础优化算法
梯度
梯度(Gradient)其实就是函数在某一点的“斜率”或“变化方向”。
在一元函数(只有一个变量)里,梯度就是导数,告诉你函数值随着变量变化快不快,往上还是往下。
在多元函数(多个变量)里,梯度是一个向量,告诉你函数在各个变量方向上,变化最快的方向和变化率。
想象你在一个山谷里(这个山谷是你的损失函数的图像),你想找到最低点(最小损失)。
梯度告诉你哪个方向是“上坡”,也就是说,沿着梯度的方向,函数值会增加。
所以,如果你想找最低点,你需要往梯度的反方向走,才能让损失变小。
损失函数
损失函数(Loss Function),也叫代价函数,是用来衡量模型预测结果和真实结果之间差距的一个函数。
损失函数告诉我们模型预测得有多“差”。损失越小,说明模型预测越准确。
假设你用线性回归预测房价:
真实房价是 𝑦
模型预测房价是 𝑦^
一个常用的损失函数是均方误差(MSE):
把所有预测值和真实值的差(误差)平方后求平均。
误差平方能保证正负误差都计入,且更大误差惩罚更重。
梯度下降
梯度下降(Gradient Descent)是一种迭代优化算法,用来找到函数的最小值,尤其常用在机器学习里优化模型参数。
梯度告诉我们函数上升最快的方向。
梯度下降就是往梯度的反方向走,也就是沿着函数值减少最快的方向移动。(你站在一个山坡上,想下山到谷底。梯度告诉你“坡度最大的上坡方向”,而你要往相反方向走,才能最快下坡。)
每一步,我们根据梯度更新参数,逐渐让损失函数变小。
梯度下降的因素
一.学习率(Learning Rate)
学习率是每一步沿梯度方向更新参数的“步长”大小。
学习率太大,可能导致“走过头”,错过最优点,甚至发散;学习率太小,收敛很慢,训练时间长。
二.批量大小(Batch Size)
一次计算梯度用的数据量大小,比如全量数据(批量梯度下降)还是一小部分数据(随机梯度下降)。
小批量的梯度更新有噪声,能跳出局部最优,但收敛更“抖”;大批量更稳定但计算开销大。
三.初始参数值(Initialization)
四.损失函数的形状(函数的曲率)
小批量随机梯度下降
批量大小
不能太小:
每次计算量太小。不适合并行来最大利用计算资源
不能太大:
内存消耗增加浪费计算,例如如果所有样本都是相同的就没有意义
总结