小批量反向传播说明

mini batch backpropagation clarification

阅读了很多文章,现在我的脑筋急转弯,需要对 mini batch 的概念有一个新的认识。我是机器学习的新手,如果有任何关于我的过程是否正确的建议,我将不胜感激。这是我的前提:

我有一个包含 355 个特征和 8 个 class 输出的数据集。共有12200条数据。这是我的神经网络的粗略可视化:

我决定为隐藏层 1 使用 181 个神经元,为隐藏层 2 使用 96 个神经元。我对隐藏层使用 ReLu 激活,对输出层使用 Logistic。

为了进行小批量处理,我将批量大小设置为 8。所以我总共有 1525 个批次,每个批次有 8 个数据集。这是我的步骤:

  1. 获取第一批数据(8 组 355 个输入和 8 个输出)。
  2. 批量的前向传播。
  3. 获取误差并计算误差的平方和。 对于平方和,我先对批次的误差进行平均,使用公式 SumError = (1/8)*sum(error^2)
  4. 批量的反向传播
  5. 得到反向传播后权重值的平均值。
  6. 使用新的权重作为下一批次的权重。
  7. 获取下一批数据(8 组 355 个输入和 8 个输出)。
  8. 使用新的一组权重重复 2-7。
  9. 当所有批处理完成后,获取 SumError 的平均值以获得每个时期的平方和。
  10. 重复 1-9 直到每个 epoch 的 SumError 变小。
  11. 获取用于验证的最终权重

这就是我的小批量的过程。这个对吗?我的意思是,对于权重,我是使用每个批次后计算的权重作为下一批次的输入权重,还是先收集所有权重(起始权重将用于所有批次),然后平均所有批次的重量?然后将平均权重作为下一个epoch的输入?

实际上,你必须定义你的 epoch,每个 epoch 应该至少传播一次你的输入数据(不仅仅是 2-7 次)。并且在一个 epoch 更新一个权重之后重复这些步骤直到完成所有 epoch .