我应该采用随机元素进行小批量梯度下降吗?

数据挖掘 机器学习 神经网络
2021-09-24 09:19:33

在为神经网络实现 mini-batch 梯度下降时,在每个 mini-batch 中取随机元素是否重要?还是在训练开始时将元素洗牌一次就足够了?

(我也对明确说明他们做什么的消息来源感兴趣。)

1个回答

在训练开始时对元素进行洗牌,然后按顺序阅读它们就足够了。这确实实现了与每次获取随机元素相同的目标,即打破原始数据集中可能存在的任何类型的预定义结构(例如,开头的所有正数、连续图像等)。

虽然每次都可以获取随机元素,但此操作通常不是最佳性能。数据集通常很大,不会通过快速随机访问保存在您的内存中,而是保存在您的慢速 HDD 中。这意味着顺序读取几乎是您获得良好性能的唯一选择。

例如,Caffe 使用 LevelDB,它不支持有效的随机搜索。看到这个,它确认了数据集总是以相同的顺序用图像训练的。