通过探索-开发实现基于深度相似性的批处理主动学习.
本文提出了一种批处理主动学习方法,通过在每次迭代中选择一批样本进行标注,以减少深度神经网络中的标记工作。在选择样本时不仅需要确保样本具有足够的信息量,还应该保持样本的多样性。作者提出了一种探索-开发(exploration-exploitation)方法,通过开发(exploitation)选择一组具有最大不确定性和最小冗余的样本,再通过探索(exploration)标注其中最具有代表性的样本。
1. 开发 exploitation
开发阶段旨在选择具有最大不确定性和最小冗余的样本。
(1) 最大不确定性 maximum uncertainty
采用熵来衡量样本$x$的不确定性:
\[E(x) = -\sum_{0<<i<<|Y|} h_i(x) \log h_i(x)\]其中$h_i(x)$表示样本$x$属于类别$i$的概率。对于一批样本$S$,其不确定性为所有样本不确定性之和:
\[E(S) = \sum_{i\in S}E(x_i)\](2) 最小冗余性 minimum redundancy
冗余性旨在评估一批样本中不同样本之间的重复程度,在同一批样本中选择的标注样本应尽可能不同。
冗余性通常在特征空间中进行测量,选用网络最后一层(softmax函数之前)的输出作为特征空间,样本$i$的特征向量为$f_i$,则样本$i,j$之间的冗余性用这两个样本的相似度衡量:
\[Sim(i,j) = f_iMf_j\]其中$M$是相似度矩阵。若$M$是单位矩阵,则相似度由内积衡量;$M$在训练时作为可学习参数。
对于一批样本$S$,其冗余性计算为:
\[R(S) = \sum_{i \in S} \sum_{j \in S} Sim(i,j)\](3) 结合不确定性与冗余性
衡量一批样本$S$的信息量可以由不确定性和冗余性的线性组合实现:
\[I(S) = E(S) - \frac{\alpha}{|S|} R(S)\]寻找$I(S)$最大的一批样本是非常困难的,因此采用贪心方法进行采样,即首先选择具有最大不确定性的样本,然后选择不确定性较大且与已选样本的冗余性较小的样本;此时样本$i$与已选样本$S$的冗余性计算为:
\[Sim(i,S) = \mathop{\max}_{j \in S}(Sim(i,j))\]则对新样本$x_i$的信息量评估如下:
\[I(i) = E(x_i) - \alpha Sim(i,S)\]2. 探索 exploration
在初始情况下已标记样本在样本空间中的占比较小,不能覆盖所有重要区域。探索阶段旨在探索未知区域,尽可能选择距离已标记样本最远的样本。
探索阶段的目标为寻找一批相似度最小的样本$S_e$,使其与已标记样本集$L ∪ S$的相似度也最小:
\[S_e = \mathop{\min}_{S_e} \sum_{i \in S_e} Sim(i,L ∪ S) + \sum_{i \in S_e} \sum_{j \in S_e} Sim(i,j)\]上述目标是NP-hard问题,因此采用贪心算法近似。每次选择距离已标注数据集最远的样本:
\[i = \mathop{\min}_{i} Sim(i,L ∪ S)\]按照上述流程逐一选择样本加入$S_e$。
3. Exploration-Exploitation
在主动学习的初始阶段,已标记的样本数量太少,无法覆盖特征空间中的真实数据分布,因此探索过程更加重要;随着已标记数据集越来越大,开发将成为主要目标。
在每次迭代中,首先根据开发标准选择$m$个样本,再根据探索标准选择$k−m$个样本。在早期阶段,$m$相对较小;随着已标注数据的增加,$m$开始增加;在实践中线性增加$m$,直到$m$达到预定值$m_{upper}$。
exploration-exploitation算法的完整流程如下: