可能是一个关于最小批量处理的ANN 101问题。谷歌似乎没有答案。在这里搜索也没有找到任何东西。我猜有一本书是这样说的:“这样做!”我只是还没读过那本书。
我正在用Python编写一个神经网络(语言并不重要)。我正在尝试添加小批量更新,而不是完整批量更新。是否有必要为每个时期选择一次每个观察值?小批量将是数据值1:10、11:20、21:30等,以便使用所有观察值,并且它们都使用一次。
或者基于概率从训练数据集中随机选择小批量是正确的吗?其结果是,在任何给定的时期中,每个观察值都可能被使用一次、多次或根本不使用。对于每个时期的20个小批量,每个数据元素将有5%的机会被选择用于任何给定的小批量。小批量将是随机选择的,大小也是随机的,但每20个数据点中大约有1个将包含在20个小批量中的每一个中,而不保证选择。
发布于 2012-12-09 10:34:52
你的第一个猜测是正确的。只需先随机化你的数据集。然后是(比方说) 20个小批量。使用: 1-20,然后21-40,依此类推。因此,您的所有数据集都将被使用。
Ben,不要说数据集只使用一次。通常,您需要对所有数据集执行多个时期,以便您的网络能够正确学习。
Mini-batch主要用于加快学习过程。
发布于 2012-12-11 07:15:53
关于小批量训练的一些提示:
在每个纪元之前洗牌你的样本
原因与您在在线训练中混洗样本的原因相同:否则网络可能会简单地记住您输入样本的顺序。
对于每个批处理和每个纪元,使用固定的批处理大小
可能还有统计上的原因,但它简化了实现,因为它使您能够使用矩阵乘法的快速实现进行计算。(例如BLAS)
使您的学习率适应批量大小的
对于较大的批次,您必须使用较小的学习率,否则ANN往往会收敛到次优最小值。我总是将我的学习率调整为1/sqrt(n),其中n是批量大小。请注意,这只是实验的经验值。
https://stackoverflow.com/questions/13693966
复制相似问题