总的来说,我认为您已经理解了这两个概念。我将尝试更详细地解决这两个问题。
输入层大小
在神经网络 (NN) 中,输入层的大小始终等于数据中变量(或我们通常在机器学习中称之为特征)的数量。
批量大小
这是指网络在更新其权重之前将看到多少数据样本。
通常,当执行梯度下降(即训练神经网络的算法)时,网络将输入所有样本以计算损失并更新权重。然而,尤其是在深度神经网络 (DNN) 中,这是不可行的,因为数据集的大小太大,即使网络有足够的内存,梯度的计算也会效率低下。相反,我们所做的是一次传递几个样本(称为批次)并在它们上训练模型。然后另一批通过,依此类推。我们在每次迭代中输入模型的样本数称为批量大小。
两人的关系
从理论上讲,如果您有许多功能(数千个),您就不能使用足够大的批量大小,并且您拥有的功能越多,您可以使用的批量大小就越少。然而,在实践中,我发现这两者实际上是无关的!在深度神经网络中,批量大小主要由模型的大小决定。估计这个大小的一种简单(但并不总是准确)的方法是通过模型中可训练参数的数量。更多的参数,意味着更多的模型内存(和更长的梯度计算),导致更小的批量大小。在具有多个层的 DNN 中,只有一小部分参数是输入层的参数。因此,特征的数量在批量大小的选择中起着很小的作用。
例子
在您的示例中,您说您有 50 行和 4 列,其中 3 个是输入变量。
输入层中的神经元数量为 3,以匹配输入变量(或特征)的数量。这是我们无法改变的,即使我们想改变!
批量大小是我们可以改变的。假设我们使用 5 的批量大小。
第一次迭代:
在第一次迭代中,NN 将获得前 5 行数据。对于每一个,前三列将被传递到网络的第一层,它将计算一个输出。在所有 5 个输出生成后,它们将与第 4 列的前 5 行进行比较,以计算损失。使用这个损失,网络将计算梯度并执行更新。同样,这个损失对应于前 5 个样本,而不仅仅是第 5 个。
第二次迭代:
第 6-10 行将被传递到网络,它将执行与第一步相同的过程。
第 10 次迭代:
第 45-50 行将被传递到网络。这标志着 NN 已经看到每个数据样本一次。在机器学习的上下文中,我们称之为epoch。至此,数据被打乱,第 2 个 epoch 的第 1 次迭代开始。
笔记:
在大多数框架中,每批中的样本由网络并行处理,而不是按顺序处理。这对结果没有影响,我只是想指出这一点。