为什么批量梯度下降的性能比随机和小批量梯度下降差?

人工智能 Python 梯度下降
2021-11-10 12:16:29

我从头开始实现了一个神经网络(仅使用 numpy),我无法理解为什么随机/小批量梯度下降和批量梯度下降的结果如此不同:

预测结果之间的比较

训练数据是点坐标 (x,y) 的集合。标签为 0 或 1(低于或高于抛物线)。 在此处输入图像描述

作为测试,我正在做一个分类任务。我的目标是让 NN 了解哪些点位于抛物线(黄色)上方,哪些点位于抛物线(紫色)下方。

这是笔记本的链接:https ://github.com/Pign4/ScratchML/blob/master/Neural%20Network.ipynb

  • 为什么批量梯度下降相对于其他两种方法表现如此糟糕?
  • 它是一个错误吗?但是由于代码几乎与小
    批量梯度下降相同,怎么可能呢?
  • 我对所有三个
    神经网络都使用相同的(通过尝试和错误随机选择)超参数。批量梯度下降是否需要更准确
    的技术来找到正确的超参数?如果是,为什么会这样?
1个回答

假设手头的问题是一个分类(抛物线之上或之下),这可能是因为批量梯度下降的性质。由于梯度是在整个批次上计算的,所以它往往只适用于凸损失函数。

批量梯度下降不能很好地工作的原因可能是因为误差流形中的最小值很多,最终没有学到任何相关的东西。您可以更改损失函数并观察结果的变化,它们可能不是很好(Batch GD 通常不是),但您将能够看到差异。

您可以查看内容以了解有关三者之间差异的更多信息。希望这有帮助!