关于小批量梯度下降算法与改进之后的随机梯度下降算法

来源:6-9 有关梯度下降法的更多深入讨论

weixin_慕村8280326

2021-09-13

老师我对照之前问您的同学代码进行运行,对比改进之后的随机梯度下降算法,为什么后者的Score会比前者高呢(大约高0.00几)?感觉按道理小批量的应该绝对比后者好吧?也可能是我的理解有问题,希望老师能够指正

写回答

1回答

liuyubobobo

2021-09-14

我不太确定你使用的数据是怎样的,我假设你的实现是正确且等价的(一些很容易犯的错误比如在一次实验中对数据做了标准化,对另一个实验没有标准化)。但是对于机器学习,有几点简单说明一下:


1)不能只比算法,也要看参数。随机梯度下降法的迭代 100 万次,整体梯度下降法之迭代一次,肯定随机梯度下降法效果更好。除了迭代次数,还有容忍的误差,等等其他参数。再有一些情况下,对于一些算法,相同的参数背后带来的影响可能是不同的。(比如我们实现的梯度下降和随机梯度下降中的 n_iters 的定义是不一样的。)


实际上,对于你说的问题,很有可能其实随机梯度下降法内部的迭代次数,比你实现的小批量梯度下降法迭代次数高。


当然,还有可能的情况很多,比如精度问题导致速记梯度下降能到达一个那个比小批量梯度下降更“精准”的位置,那么此时需要你尝试调整误差的限制:eta 或者 epsilon


2)一个非常重要的 mindset 是:一个“更好的算法”,不一定最终的 score 更高。实际上,当你学习了后面的过拟合之后,你就会明白,我们如果只想要针对现在的数据达到 100% 的准确率,我们是永远可以做到这一点的。但关键是,这不是机器学习的目的。机器学习的目的是找到“最能反映实际情况的模型”,这个模型在我们的测试数据上可能表现差一些,但是它的泛化能力强。


所以,一个更好的算法,通常是“更可信的”,而非“准确率更高的”。这一点在机器学习中非常非常重要。


不过因为线性回归背后的最优化函数非常简单,所以可能不涉及这个问题。靠调参数让二者一致的概率应该是很大的。


继续加油!:)

0
2
liuyubobobo
回复
weixin_慕村8280326
实际上,是不是小批量梯度下降法一定优于随机梯度下降法,是有争议的,尤其是在损失函数非常复杂的情况下,会有时候随机梯度下降法反而效果更好。但是依然是,由于线性回归的损失函数非常简单,所以是的,小批量梯度下降法需要的迭代次数更少是 make sense 的:)
2021-09-14
共2条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程