小批量反向传播说明
mini batch backpropagation clarification
阅读了很多文章,现在我的脑筋急转弯,需要对 mini batch 的概念有一个新的认识。我是机器学习的新手,如果有任何关于我的过程是否正确的建议,我将不胜感激。这是我的前提:
我有一个包含 355 个特征和 8 个 class 输出的数据集。共有12200条数据。这是我的神经网络的粗略可视化:
我决定为隐藏层 1 使用 181 个神经元,为隐藏层 2 使用 96 个神经元。我对隐藏层使用 ReLu 激活,对输出层使用 Logistic。
为了进行小批量处理,我将批量大小设置为 8。所以我总共有 1525 个批次,每个批次有 8 个数据集。这是我的步骤:
- 获取第一批数据(8 组 355 个输入和 8 个输出)。
- 批量的前向传播。
- 获取误差并计算误差的平方和。
对于平方和,我先对批次的误差进行平均,使用公式
SumError = (1/8)*sum(error^2)
- 批量的反向传播
- 得到反向传播后权重值的平均值。
- 使用新的权重作为下一批次的权重。
- 获取下一批数据(8 组 355 个输入和 8 个输出)。
- 使用新的一组权重重复 2-7。
- 当所有批处理完成后,获取 SumError 的平均值以获得每个时期的平方和。
- 重复 1-9 直到每个 epoch 的 SumError 变小。
- 获取用于验证的最终权重
这就是我的小批量的过程。这个对吗?我的意思是,对于权重,我是使用每个批次后计算的权重作为下一批次的输入权重,还是先收集所有权重(起始权重将用于所有批次),然后平均所有批次的重量?然后将平均权重作为下一个epoch的输入?
实际上,你必须定义你的 epoch,每个 epoch 应该至少传播一次你的输入数据(不仅仅是 2-7 次)。并且在一个 epoch 更新一个权重之后重复这些步骤直到完成所有 epoch .
阅读了很多文章,现在我的脑筋急转弯,需要对 mini batch 的概念有一个新的认识。我是机器学习的新手,如果有任何关于我的过程是否正确的建议,我将不胜感激。这是我的前提:
我有一个包含 355 个特征和 8 个 class 输出的数据集。共有12200条数据。这是我的神经网络的粗略可视化:
我决定为隐藏层 1 使用 181 个神经元,为隐藏层 2 使用 96 个神经元。我对隐藏层使用 ReLu 激活,对输出层使用 Logistic。
为了进行小批量处理,我将批量大小设置为 8。所以我总共有 1525 个批次,每个批次有 8 个数据集。这是我的步骤:
- 获取第一批数据(8 组 355 个输入和 8 个输出)。
- 批量的前向传播。
- 获取误差并计算误差的平方和。 对于平方和,我先对批次的误差进行平均,使用公式 SumError = (1/8)*sum(error^2)
- 批量的反向传播
- 得到反向传播后权重值的平均值。
- 使用新的权重作为下一批次的权重。
- 获取下一批数据(8 组 355 个输入和 8 个输出)。
- 使用新的一组权重重复 2-7。
- 当所有批处理完成后,获取 SumError 的平均值以获得每个时期的平方和。
- 重复 1-9 直到每个 epoch 的 SumError 变小。
- 获取用于验证的最终权重
这就是我的小批量的过程。这个对吗?我的意思是,对于权重,我是使用每个批次后计算的权重作为下一批次的输入权重,还是先收集所有权重(起始权重将用于所有批次),然后平均所有批次的重量?然后将平均权重作为下一个epoch的输入?
实际上,你必须定义你的 epoch,每个 epoch 应该至少传播一次你的输入数据(不仅仅是 2-7 次)。并且在一个 epoch 更新一个权重之后重复这些步骤直到完成所有 epoch .