[主动学习--查询策略] 01 Core-set
符号定义
- 主动学习每一次迭代选择的样本数量为一个 budget
- 训练集中初始无标签数据集记为 unlabeled data,\(\bm{u}^0\)
- 训练集中初始有标签数据集记为 initial labeled data,\(\bm{s}^0\)
查询策略:Core-set
k-Center-Greedy
主动学习每一轮将选择 budget 个样本,core-set 方法将这个过程视为寻找一个当前最佳集合的问题,顺序从 unlabeled data 中选出 budget 个样本加入集合 \(\bm{s}\),新加入的点 \(u\) 需要满足与集合 \(\bm{s}\) 的距离最大。
一个无标记样本点 \(u\) 与集合 \(\bm{s}\) 的距离为:该点 \(u\) 与集合 \(\bm{s}\) 各个点距离的最小值,论文中距离采用 L2-norm。
注意:同一次迭代选出的无标记样本点有先后之分,计算点 \(u\) 与集合 \(\bm{s}\) 的距离时,同一次迭代已经选出的无标记样本点都看作加入了集合 \(\bm{s}\),参与距离计算。
Robust k-Center
在 k-Center-Greedy 的基础上,进行修改。通过 k-Center-Greedy,得到无标记数据集中距离 \(s^g\) 最远的距离,设为 \(\delta_{2-OPT}\),此时所有的样本点都会在包括在这个半径 \(\delta_{2-OPT}\) 内。
计算 Feasible 函数,去找到一组符合 Feasible 函数的解(可以理解是 \(u_i, \omega_{i, j}, \xi_{i, j}\) 这些值),使得 Feasible 内所有约束条件都满足,如果找到了,那么说明此时的半径 \(\delta\) 不会使 outlier 的数量超过自己定的界限 \(\Xi\),半径 \(\delta\) 可以缩小,即缩小上界 \(ub\);如果没有找到,那么说明此时的半径 \(\delta\) 会使得 outlier 数量超过界限 \(\Xi\),需要扩大半径,即扩大下界 \(lb\)。(outlier 为不能被 \(s^0 \cup s^1\) 中元素在半径 \(\delta\) 内覆盖到的样本)
直到最后,\(ub - lb\) 相等或者相差不大,算法停止。
算法详情
Algorithm 2 用 Gurobi 进行 MIP(mixed integer program)优化,运行较慢。Algorithm 1 比 Algorithm 2 简单,速度很快,但论文中效果稍微不如后者。
实现代码
GitHub - ozansener/active_learning_coreset (Source code)
GitHub - google/active-learning/sampling_methods/kcenter_greedy.py
GitHub - dsgissin/DiscriminativeActiveLearning/query_methods.py
提出论文:
Sener, O., & Savarese, S. (2018). Active Learning for Convolutional Neural Networks: A Core-Set Approach. In ICLR (pp. 1–13). Retrieved from http://arxiv.org/abs/1708.00489
被引论文:
[1] Yoo, D., & Kweon, I. S. (2019). Learning Loss for Active Learning. CVPR, 93–102. Retrieved from http://arxiv.org/abs/1905.03677
[2] Sinha, S., Ebrahimi, S., & Darrell, T. (2019). Variational Adversarial Active Learning. ICCV. Retrieved from http://arxiv.org/abs/1904.00370