神经网络 - 为每个Mini Batch选择数据

use*_*770 7 neural-network

可能是ANN 101关于最小批量处理的问题.谷歌似乎没有答案.在这里搜索也没有产生任何结果.我猜这里有一本书说"这样做!" 而我还没读过那本书.

我用Python编写神经网络(不是语言很重要).我正在尝试添加小批量更新而不是完整批量.是否有必要为每个时期选择一次观察?小批量将是数据值1:10,11:20,21:30等,以便使用所有观察,并且它们都被使用一次.

或者根据概率从训练数据集中随机选择迷你批次是否正确?结果是每个观察可以在任何给定的时期中使用一次,多次或根本不使用.对于每个时期20个小批量,每个数据元素将被给予5%的机会被选择用于任何给定的小批量.微型批次将随机选择并且随机大小,但每20个数据点中大约有1个将包含在20个迷你批次中的每一个中,不保证选择.

小智 7

关于小批量培训的一些提示:

在每个时代之前洗牌你的样品

原因与在线培训中对样本进行混洗的原因相同:否则网络可能只是记住您提供样本的顺序.

对每个批次和每个时期使用固定的批次大小

可能还有一个统计原因,但它简化了实现,因为它使您能够使用矩阵乘法的快速实现进行计算.(例如BLAS)

使您的学习率适应批量大小

对于较大的批次,您将不得不使用较小的学习率,否则ANN趋向于收敛到次优的最小值.我总是将学习率调整为1/sqrt(n),其中n是批量大小.请注意,这只是实验的经验值.


Thi*_*hiS 2

你的第一个猜测是正确的。首先随机化你的数据集。然后是(比如说)20 个小批量。使用:1-20,然后 21-40,等等...因此,您的所有数据集都将被使用。

Ben 没有说数据集只使用一次。通常,您需要对所有数据集执行多个纪元,以便网络能够正确学习。

小批量主要用于加速学习过程。