Motivation
- 训练深度网络存在的问题:需要大量训练数据,进而需要更强的计算资源等。因此如何在减少这些开销(例如使用更小的数据集)的同时,不影响模型的性能成为了一个至关重要的问题;
- 挑选 coreset 的四大挑战:
- 选取 sample 的规则尚不明确;
- 检索的速度要快,否则就失去了加速训练的意义;
- 光找出 coreset 仍不够,还要为 coreset 中的每个 datapoint 决定他们各自的学习率;
- 即使某个策略在一些数据集上起作用了,也要用数学的方法进行分析(为什么有用)。
Analysis
目标:找出完整数据集 $V$ 的一个子集 $S^{*}$,使得:
其中 w 是模型权重参数,W 是 w 所有可能取值的区域, $\beta$ 是权重,对于 Coreset 中的每个样本有不同的权重(代表重要程度),使用 Coreset 进行训练时,学习率可以根据权重调整。
上图中的范数部分成为估计误差(即挑选子集的梯度和全数据集梯度的差距)。
直接用此式是不可行的,因为需要计算每个可能的 w,而 W 一般是连续的。
两步转化,获得估计误差的上界(针对一个特定的 w):
因此问题变成了,找出完整数据集 $V$ 的一个 $S^{*}$,使得(为了解决 w 连续的问题,约定 $d_{ij}$ 为最大误差时的 w,也就是相当于又取了一次上界):
解决这个问题是 NP-hard 的,因为必须计算每一种可能的 S 组合,因此可以用次模函数,利用贪心算法得到一个近似的解:
问题变成了:
标签:coreset,误差,Training,训练,权重,efficient,Coresets,数据 From: https://www.cnblogs.com/metaz/p/16844505.html