大规模训练数据的shuffle

大规模训练数据的洗牌是防止模型过拟合的关键,因为模型会记住数据顺序。2-pass-shuffle算法用于处理内存无法一次性加载整个数据集的情况,包括块id和块内数据的洗牌。该算法需要控制超参数以确保随机性,并处理可能出现的不均衡分块问题。在训练过程中,可以先将数据切分成多个文件,然后在每个训练epoch中随机打乱文件顺序并混合不同文件的数据。
摘要由CSDN通过智能技术生成

必要性12

以猫狗分类为例, 假如数据集是

Dog,Dog,Dog,… ,Dog,Dog,Dog,Cat,Cat,Cat,Cat,… ,Cat,Cat

所有的狗都在猫前面,如果不shuffle,模型训练一段时间内只看到了Dog,必然会过拟合于Dog,一段时间内又只能看到Cat,必然又过拟合于Cat,这样的模型泛化能力必然很差。 那如果Dog和Cat一直交替,会不会就不过拟合了呢?

Dog,Cat,Dog,Cat,Dog ,Cat,Dog,…

依然会过拟合,模型是会记住训练数据路线的,为什么呢?

当用随机梯度下降法训练神经网络时,通常的做法是洗牌数据。在纠结细节的情况下,让我们用一个极端的例子来解释为什么shuffle是有用的。假设你正在训练一个分类器来区分猫和狗,你的训练集是50,000只猫后面跟着50,000只狗。如果你不洗牌,你的训练成绩就会很差。
严格地说,这个问题是由梯度噪声中的序列相关性和参数更新的不可交换性引起的。首先我们需要明白固定的数据集顺序,意味着给定迭代步,对应此迭代步的训练数据是固定的。 假如目标函数是 J = f ( w , b ) J=f(w, b) J=f(w,b),使用梯度下降优化 J J J。给定权重取值 w 、 b w、b wb和迭代步step的情况下,固定的数据集顺序意味着固定的训练样本,也就意味着权值更新的方向是固定的,而无顺序的数据集,意味着更新方向是随机的。所以固定的数据集顺序,严重限制了梯度优化方向的可选择性,导致收敛点选择空间严重变少,容易导致过拟合。所以模型是会记住数据路线的,所以shuffle很重要,一定shuffle。

2-pass-shuffle算法

我们假设一个数据集 X m X^m Xm包含样本数目为 m m m, 大小为 S X m S_{X^m} SXm, 计算内存RAM大小为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值