Musicaldg
← 全部文章

Active Learning

目录

人工标注的成本,来自标注者投入的时间、专业知识,以及组织和审核标注的过程。面对大量未标注数据,一个自然的问题是:如果只能获得少量标签,应该先标注哪些样本?

Active Learning(主动学习)让模型参与这个选择过程。模型先评估未标注样本,再把其中一些交给人类标注,用新增标签更新自己。

本文关注 Pool-Based Active Learning:候选样本已经存在于一个未标注池中,我们需要决定下一次向人类询问谁的标签。理解这件事的关键,是区分两种问题:模型对这个样本有多不确定?知道它的标签后,我们能多了解模型?

1. 主动学习循环

记当前已有的标注数据为 D_t,未标注池为 X_p^t,当前模型参数为 \theta_t。模型对候选样本 x 的标签预测分布是

p(y\mid x,\theta_t).

Acquisition Function(采集函数,简称 AF)为每个候选样本计算一个分数 A(x;\theta_t)。选择分数最高的样本:

x^*=\arg\max_{x\in X_p^t}A(x;\theta_t).

获得它的标签 y^* 后,更新两个集合:

D_{t+1}=D_t\cup\{(x^*,y^*)\}, \qquad X_p^{t+1}=X_p^t\setminus\{x^*\}.

随后用 D_{t+1} 更新模型,再进行下一轮选择。这里先假设标注者提供正确标签,暂不讨论标注噪声。

理想的采集函数应当选择最能降低未来预测误差的样本。但真实标签尚未获得,真实的数据分布也未知,我们通常无法直接计算这种收益。因此,实际方法常用不确定性或信息增益作为选样依据。

2. 熵

2.1 信息量与熵

一个结果 y 的信息量定义为

I(y)=-\log_2 p(y).

概率越小,结果越出乎意料,得知它时获得的信息量越大。例如,概率为 1/2 的结果带来 1 bit 信息,概率为 1/8 的结果带来 3 bits 信息。

这里的“信息”衡量意外程度,并不等于这个结果对某项学习任务的实际价值。

对数还有一个方便的性质:独立事件的概率相乘,信息量相加。如果两个独立事件的概率分别为 p(a) 和 p(b),那么

-\log_2[p(a)p(b)] =-\log_2 p(a)-\log_2 p(b).

熵则是信息量按发生概率加权后的平均值:

H[p]=\mathbb E_{y\sim p}[I(y)] =-\sum_{y\in\mathcal Y}p(y)\log_2 p(y).

因此,小概率结果虽然信息量大,但它对熵的贡献还要乘上发生概率。本文讨论离散类别,并约定 0\log_2 0=0。

当类别数固定为 K 时,概率分布越集中,熵通常越小;均匀分布的熵最大,为 \log_2 K。对于二分类:

  • 预测为 (1,0):熵为 0,模型完全确定。
  • 预测为 (0.9,0.1):熵约为 0.469 bits。
  • 预测为 (0.5,0.5):熵为 1 bit,模型最不确定。

2.2 不确定性采样

Uncertainty Sampling(不确定性采样)优先询问当前模型最拿不准的样本。以熵为采集函数:

A(x;\theta_t) =H[p(y\mid x,\theta_t)] =-\sum_{y\in\mathcal Y} p(y\mid x,\theta_t)\log_2 p(y\mid x,\theta_t).

于是

x^*=\arg\max_{x\in X_p^t}H[p(y\mid x,\theta_t)].

也就是:对每个未标注样本计算预测熵,再选择熵最大的样本交给人类标注。对于二分类逻辑回归,这通常会选中最靠近当前决策边界的候选点,因为那里两个类别的预测概率最接近 0.5。

这一方法直接、容易实现,但它回答的是当前模型有多不确定,不保证所选样本标注后带来的性能提升最大。

3. KL 散度

熵描述一个分布自身的不确定性,KL 散度描述两个分布之间的差异。对于离散分布 p 和 q:

\operatorname{KLD}[p\|q] =\sum_{y\in\mathcal Y} p(y)\log_2\frac{p(y)}{q(y)}.

它的方向很重要:概率比的对数由第一个分布 p 加权。如果结果实际上按 p 发生,却用 q 来预测,KL 散度表示相比使用 p,平均多承担多少对数损失。

为看清这一点,先写出交叉熵:

H[p,q]=-\sum_y p(y)\log_2 q(y).

拆开 KL 中的对数比:

\begin{aligned} \operatorname{KLD}[p\|q] &=\sum_y p(y)\log_2 p(y)-\sum_y p(y)\log_2 q(y)\\ &=H[p,q]-H[p]. \end{aligned}

KL 散度非负,两个分布一致时为零。它一般不对称,因此不是通常意义上的距离。如果某个结果在 p 下概率非零、在 q 下概率为零,KL 散度会趋于无穷大。

这个工具会在 BALD 中再次出现:我们不仅关心预测是否模糊,也关心不同模型给出的预测有多不同。

4. Query-by-Committee

单个模型的预测可能不够可靠。Query-by-Committee(QBC)使用一个包含 C 个模型的委员会,让它们分别预测同一个候选样本:

p(y\mid x,\theta_{1,t}),\ldots,p(y\mid x,\theta_{C,t}).

直觉是:如果多个合理模型已经给出一致的判断,获得标签可能难以帮助我们区分它们;如果它们的判断不同,真实标签就可能告诉我们,哪些模型更符合数据。

讲义给出一种成对比较的采集函数:

A(x;\theta_{1,t},\ldots,\theta_{C,t}) =\sum_{c=1}^{C}\sum_{j\ne c} \operatorname{disagreement} \left[p(y\mid x,\theta_{c,t})\|p(y\mid x,\theta_{j,t})\right].

一种简单实现只比较最终预测类别。设

\hat y_c=\arg\max_{y\in\mathcal Y}p(y\mid x,\theta_{c,t}),

则

A(x)=\sum_{c=1}^{C}\sum_{j\ne c}\mathbf 1[\hat y_c\ne\hat y_j].

例如,三个模型分别预测“正、正、负”,有两对模型意见不同。上式按有序模型对求和,每对会计算两次,因此分数为 4;如果三个模型预测一致,分数为 0。

只比较最终类别会丢掉置信度信息。也可以比较完整预测分布,例如用统计散度定义分歧。

QBC 不一定要求显式的贝叶斯先验,但委员会应当代表当前数据下仍然合理的不同解释。若所有模型几乎相同,或它们共有同一种偏差,分歧分数就未必能反映真正值得学习的内容。

5. BALD

Bayesian Active Learning by Disagreement(BALD)把“模型分歧”放进贝叶斯框架。它寻找的样本,是其标签预计最能减少参数不确定性的样本。

5.1 先验与后验

贝叶斯模型先用 p(\theta) 表达观察数据之前对参数的先验。看到当前标注数据 D_t 后,更新得到后验

p(\theta\mid D_t).

对于一个固定参数 \theta,模型给出的预测是 p(y\mid x,\theta)。把不同参数下的预测按后验加权,就得到后验预测分布:

p(y\mid x,D_t) =\int p(y\mid x,\theta)p(\theta\mid D_t)\,d\theta.

这三个分布不能混为一谈:先验与后验描述我们对参数的认识,后验预测分布描述我们对候选样本标签的预测。

5.2 条件互信息

BALD 的采集函数是

A(x;D_t)=I[y,\theta\mid x,D_t].

其含义是:给定已有数据和候选样本,观察标签 y,预计能为参数 \theta 带来多少信息。这里取的是尚未观察标签之前的预期收益。

在讲义采用的模型假设下,条件联合分布可写成

p(y,\theta\mid x,D_t) =p(y\mid x,\theta)p(\theta\mid D_t).

代入条件互信息定义,后验因子在概率比中约去:

\begin{aligned} I[y,\theta\mid x,D_t] &=\int p(\theta\mid D_t) \sum_y p(y\mid x,\theta) \log_2\frac{p(y\mid x,\theta)}{p(y\mid x,D_t)}\,d\theta\\ &=\mathbb E_{\theta\mid D_t} \operatorname{KLD}\left[p(y\mid x,\theta)\|p(y\mid x,D_t)\right]. \end{aligned}

也就是:每个模型的预测与综合预测相差多少,再按后验概率取平均。

5.3 熵差形式

用前面的关系 \operatorname{KLD}[p\|q]=H[p,q]-H[p],可以继续展开:

\begin{aligned} A(x;D_t) &=-\sum_y\mathbb E_{\theta\mid D_t}[p(y\mid x,\theta)] \log_2 p(y\mid x,D_t) -\mathbb E_{\theta\mid D_t}H[p(y\mid x,\theta)]\\ &=H[p(y\mid x,D_t)] -\mathbb E_{\theta\mid D_t}H[p(y\mid x,\theta)]. \end{aligned}

关键一步是:后验平均后的预测概率,正好就是 p(y\mid x,D_t)。

第一项衡量综合预测有多不确定,第二项衡量各个模型自身的不确定性有多大。BALD 倾向于选择这样的样本:单个模型各有把握,合在一起却意见不同。

5.4 数值示例

为方便计算,假设后验只包含两个等权模型。以下数字是解释性示例,不是课程实验结果。

一致的不确定预测

对样本 x_a,两个模型均预测 (0.5,0.5)。综合预测也是 (0.5,0.5),因此

A(x_a;D_t)=1-\tfrac12(1+1)=0.

预测熵很高,但两个模型完全没有分歧。这个标签无法帮助我们区分这两个模型;分数为零不表示所有参数都已确定,也不表示样本对任何其他目标都没有价值。

相反的确定预测

对样本 x_b,两个模型分别预测 (0.99,0.01) 和 (0.01,0.99)。综合预测仍为 (0.5,0.5),但每个模型自身的熵仅约为 0.0808 bits,因此

A(x_b;D_t)=1-0.0808\approx0.9192\ \text{bits}.

两种情况的综合预测熵都是 1 bit。若只按综合预测熵选样,它们并列;BALD 则能识别第二种情况中的模型分歧。这个例子比较的是同一后验预测分布上的熵与 BALD,单个模型的 Uncertainty Sampling 则使用 p(y\mid x,\theta_t)。

6. 两类不确定性

预测不确定性常被区分为两类:

  • Aleatoric uncertainty(数据不确定性):在给定观测特征下,标签本身存在的随机性或噪声。例如,现有特征不足以唯一决定类别。固定这些特征与生成过程,增加同类标注通常不能消除这种随机性。
  • Epistemic uncertainty(模型不确定性):由于有限数据,我们还不能确定哪种模型或参数更合理。新增有信息的观测可以减少这部分不确定性。

熵式 Uncertainty Sampling 用一个预测不确定性分数选样,通常不能单独分辨二者。在所采用的贝叶斯模型下,BALD 则通过减去参数固定时仍存在的平均标签不确定性,强调由参数分歧带来的信息价值。

这种区分依赖模型假设。“不可约”是相对于当前特征和建模条件而言的:增加新特征、改善测量或修正标签机制,也可能改变原本看起来无法消除的不确定性。

实际使用还需要留意三点。首先,BALD 的质量取决于后验或其近似是否可信;少数偏差相似的模型,并不一定能代表完整的参数不确定性。其次,信息增益不等于测试误差下降,三种方法都不保证选中带来最大性能提升的样本。最后,如果一次选择多个样本,直接取单点分数最高的若干个,可能获得大量重复信息;批量选样还需要考虑样本之间的关系。

这三种方法关注的对象不同:Uncertainty Sampling 看当前预测有多模糊,QBC 看委员会成员有多不一致,BALD 看标签预计能为参数带来多少信息。理解这个差别,比单独记住某个采集公式更有助于判断方法适合什么场景。

参考资料