为了更好地理解JEST算法的应用,以下是一个具体的示例:
假设我们在训练一个图像分类模型,我们有一个大规模的"超级batch" (\mathcal{B}_{super}),其中包含了10000张图像。我们希望从中筛选出一个包含1000张图像的"子batch" (\mathcal{B}) 进行训练,以提高训练效率和模型性能。
步骤 1: 初始化模型和参考模型
首先,我们有两个模型:
- 当前模型 (\theta):正在训练的图像分类模型。
- 参考模型 (\theta^*):一个已经训练好的图像分类模型。
步骤 2: 计算损失
对于超级batch中的每一个batch,我们计算两个损失值:
- 当前模型的损失 (\ell(\mathcal{B}|\theta)):衡量当前模型在这个batch上的表现。
- 参考模型的损失 (\ell(\mathcal{B}|\theta^*)):衡量参考模型在这个batch上的表现。
步骤 3: 计算可学习性评分
我们使用可学习性评分来评估每个batch的价值:
[ \text{learn}(\mathcal{B}|\theta, \theta^) = \ell(\mathcal{B}|\theta) - \ell(\mathcal{B}|\theta^) ]
- 高可学习性评分:表示当前模型在这个batch上的损失比参考模型高很多,这表明这个batch包含了很多当前模型尚未学好的难例(hard negatives),对模型的训练非常有帮助。
- 低可学习性评分:表示当前模型在这个batch上的损失比参考模型低,这表明这个batch中的样本比较容易学习(easy examples),对模型的改进帮助不大。
步骤 4: 采样过程
我们采用block Gibbs采样的方法来筛选batch:
- 在第 ( n ) 次迭代中,对第 ( B_n ) 个batch进行采样。
- 依据概率公式对块 ({X_k}) 进行无替换采样。
- 将 ( X_k ) 块添加到 ( B_n ) 中,更新当前采样的batch。
- 重复上述步骤 直至迭代数 ( n = N ) 时终止。
举例说明
- 超级batch (\mathcal{B}_{super}):包含10000张图像。
- 初始化模型:当前模型 (\theta) 和参考模型 (\theta^*)。
- 计算损失:对于每个小batch,计算 (\ell(\mathcal{B}|\theta)) 和 (\ell(\mathcal{B}|\theta^*))。
- 计算可学习性评分:选择可学习性评分高的batch。
- 采样:使用block Gibbs采样方法从超级batch中采样,逐步构建最终的子batch (\mathcal{B}),直至筛选出1000张最有价值的图像。
这里是引用
总结
通过上述步骤,我们能够有效地从超级batch中筛选出对模型训练最有价值的子batch。这种方法不仅提高了训练效率,还能够使模型更快地学习到有效的特征,从而提升模型的性能。