0

我目前正在使用求解器 adam 和激活 relu 解决 ScikitLearn 中两个类的分类问题。为了探索我的分类器是否存在高偏差或高方差,我使用 Scikitlearns 内置函数绘制了学习曲线:

https://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html

我正在使用带有 8 个拆分的 Group-K_Fold 交叉验证。然而,我发现我的学习曲线很大程度上取决于我的分类器的批量大小:

https://imgur.com/a/FOaWKN1

它应该是这样的吗?我认为学习曲线正在解决依赖于训练数据部分的准确性分数,独立于任何批次/时期?我真的可以将此内置函数用于批处理方法吗?如果是,我应该选择哪个批次大小(全批次或批次大小=训练示例的数量或介于两者之间)以及我从中得到什么诊断?或者您通常如何诊断神经网络分类器的偏差/方差问题?

帮助将不胜感激!

4

1 回答 1

1

是的,学习曲线取决于批量大小。

最佳批量大小取决于数据类型和数据总量。
在理想情况下,批量大小为 1 是最好的,但在实践中,对于大量数据,这种方法是不可行的。
我认为您必须通过实验来做到这一点,因为您无法轻松计算出最佳值。

此外,当您更改批量大小时,您可能还想更改学习率,以便保持对过程的控制。
但确实有一个工具来找到最佳(内存和时间)批量大小是非常有趣的。


什么是随机梯度下降?

随机梯度下降,通常缩写为 SGD,是梯度下降算法的一种变体,它计算误差并更新训练数据集中每个示例的模型。

每个训练样例的模型更新意味着随机梯度下降通常被称为在线机器学习算法。

什么是批量梯度下降?

批量梯度下降是梯度下降算法的一种变体,它计算训练数据集中每个示例的误差,但仅在评估所有训练示例后才更新模型。

整个训练数据集的一个周期称为一个训练时期。因此,人们常说批量梯度下降在每个训练 epoch 结束时执行模型更新。

什么是小批量梯度下降?

小批量梯度下降是梯度下降算法的一种变体,它将训练数据集分成小批量,用于计算模型误差和更新模型系数。

实现可以选择对小批量的梯度求和,或者取梯度的平均值,这进一步减少了梯度的方差。

小批量梯度下降寻求在随机梯度下降的鲁棒性和批量梯度下降的效率之间找到平衡。它是深度学习领域中最常见的梯度下降实现。


来源:https ://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/

于 2019-03-26T10:40:47.860 回答