【ML】以梯度下降(Gradient Descent)展开的优化器总结

本篇关键词:损失函数/代价函数/误差函数、梯度下降、学习率、Momentum(动量)
损失函数也可以理解为代价函数,机器学习中通常指同一种东西
【梯度下降】3D可视化讲解通俗易懂
5分钟深度学习-01 梯度下降算法
72 优化算法【动手学深度学习v2】

梯度下降算法,拿最简单的线性拟合的例子,首先随机取一条直线 y=wx+b 计算每个真实数据点 xi 和预测值 yi 的差值的平方和,对所有点求和,然后求一个平均,其实就是在求样本的 MSE 均方误差。
MSE 越小代表直线对整体点的拟合效果越好,任务就是求 MSE 这个式子的最小值。
进行整理后发现,可以将这个式子变为一个二次函数的形式,最小值即对称轴所在点。
而机器学习中不能一下看出来,所以采取 GD 算法通过逐步迭代找出这个最小值
权重w = w - 学习率 x 梯度
梯度下降步骤:1. 定义损失函数 2. 选择起始点 3. 计算梯度 4. 按照学习率前进
重复3,4,直到找到最低点

三种梯度下降

梯度下降(Gradient Descent):使用所有样本进行梯度下降,更新方向正确,但计算成本高
随机梯度下降(Stochastic GD):每次只使用一个样本进行梯度下降,更新快,可以跳出局部最优解,但方向不稳定,可能永远不会收敛
小批量样本梯度下降(Mini Batch GD):每次使用小批量样本进行梯度下降,结合GD和SGD的优点,较稳定,且更新迭代较快,能跳出局部最优解
什么是小批量梯度下降,和批量梯度下降、随机梯度下降有什么不同
能使用 SGD 和 Mini Batch GD 都是因为导数是线性可加的,可以求多次梯度进行迭代

🔺目前,小批量样本梯度下降即为 ML、DL 中的默认方法。因为现在的项目数据量通常都很大,无法一次输入内存,需要通过设置 batch size 来决定一次参数更新所用的样本数量。

🔺Adam:是 SGD 的优化版本,目前使用最广泛的优化算法,一般情况下使用 Adam 都没有问题

怎么通俗易懂的理解SGD中Momentum的含义?
深度学习各类优化器详解(动量、NAG、adam、Adagrad、adadelta、RMSprop、adaMax、Nadam、AMSGrad)

Q:模型评估方法和损失函数使用的函数是否相同?
A:在深度学习中,模型评估方法和损失函数使用的函数通常是不同的,
尽管有些情况下可能会相同或者有所重叠。这两者之间的主要区别在于它们的目的和应用场景:

1. 损失函数(Loss Functions):
   - 目的:损失函数是在模型训练过程中使用的,目的是量化模型预测的好坏。
   损失函数衡量的是模型预测值和实际值之间的不一致程度。
   训练深度学习模型的目标就是通过优化算法(如梯度下降)最小化这个损失函数。
   - 常见例子:均方误差(MSE)用于回归任务,交叉熵损失用于分类任务,
   以及其他更专业的损失函数,如对抗损失、对比损失等,它们适用于特定类型的深度学习任务。

2. 模型评估方法(Evaluation Metrics):
   - 目的:模型评估方法用于在模型训练完成后评估模型的性能。
   这些评估指标帮助我们理解模型在实际应用中的表现,比如它的准确度、召回率、F1 分数等。
   - 常见例子:对于分类问题,常用的评估指标包括准确率、精确率、召回率和 F1 分数等。
   对于回归问题,常用的评估指标包括均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)等。

虽然某些函数既可以用作损失函数也可以用作评估指标(例如,均方误差可以用作回归任务的损失函数,
也可以用来评估回归模型的性能),但它们的用途和上下文是不同的。
评估指标通常被选用来直观地反映模型的性能,而不一定是为了指导模型的训练过程。
此外,一些评估指标(如准确率或F1 分数)并不总是可导的,因此不适合直接用作损失函数进行模型优化。

MSE 和 方差的辨析
均方误差(Mean Squared Error, MSE)和方差(Variance)是两个相关的概念,但它们并不相同。
均方误差(MSE) 是一种用于衡量模型预测值与实际值之间差异的指标。它是预测值实际值之差的平方的平均值,公式如下:
MSE=1ni=1n(YiYi^)2\text{MSE} = \frac{1}{n}\sum_{i=1}^{n}(Y_i - \hat{Y_i})^2
方差(Variance) 是统计学中衡量一组数据分散程度的指标。它是各个数据点数据平均值之差的平方的平均值,公式如下:
Variance=1ni=1n(Xiμ)2\text{Variance} = \frac{1}{n}\sum_{i=1}^{n}(X_i - \mu)^2


`拓展阅读`
[SGD有多种改进的形式(RMSprop,Adadelta等),为什么大多数论文中仍然用SGD?](https://www.zhihu.com/question/42115548/answer/1636798770)
[PyTorch学习之 torch.optim 的6种优化器及优化算法介绍](https://blog.csdn.net/qq_36589234/article/details/89330342)
赞赏