VAAL: 变分对抗主动学习.
- paper:Variational Adversarial Active Learning
- code:github
1. VAAL的流程
用$(x_L,y_L)$表示标记样本池$(X_L,Y_L)$中的样本,$x_U$表示未标记样本池$X_U$中的样本。主动学习的目的是训练一个模型循环的从未标记样本池中采样一个budget,即$b$个最有价值的样本($x_U$~$X_U$),增加到标记样本池中,从而使得模型经过标记样本训练获得更好的表现。VAAL设计了寻找这个budget的过程。
作者使用$\beta$-VAE进行特征的表示学习,编码器把输入样本转换为低维的概率分布,解码器重构输入数据。 这一步的目的是把输入样本编码到高斯先验的低维特征空间。$\beta$-VAE的损失函数表示为:
\[\begin{aligned} \mathcal{L}^{trd}_{\text{VAE}}= & \mathbb{E}[\log p_{\theta}(x_L|z_L)] -\beta \text{D}_{\text{KL}}(q_{\phi}(z_L|x_L)||p(z)) \\ &+ \mathbb{E}[\log p_{\theta}(x_U|z_U)] -\beta \text{D}_{\text{KL}}(q_{\phi}(z_U|x_U)||p(z)) \end{aligned}\]作者进一步使用对抗网络学习区分隐空间中的编码特征,即增加一个判别器区分低维特征来自标注样本池还是未标注样本池。此时$\beta$-VAE试图将有标注和无标注的样本映射到相似的空间,并欺骗判别器将所有输入识别为标注池样本。$\beta$-VAE的对抗损失使用交叉熵损失:
\[\mathcal{L}^{adv}_{\text{VAE}} = -\mathbb{E}[\log (D(q_{\phi}(z_L|x_L)))]-\mathbb{E}[\log (D(q_{\phi}(z_U|x_U)))]\]而判别器试图有效地区分标记样本和未标记样本的特征:
\[\mathcal{L}_{\text{D}} = -\mathbb{E}[\log (D(q_{\phi}(z_L|x_L)))]-\mathbb{E}[\log (1-D(q_{\phi}(z_U|x_U)))]\]记最终要实现的任务为$T$,$T$的训练与主动学习的训练可以是独立的。VAAL的完整流程如下:
2. VAAL的采样策略
使用VAAL训练完成后,需要从未标注数据池中采样并补充到标注池中。作者使用判别器预测概率作为数据得分。
具体地,将标注数据和未标注数据映射到低维特征空间中,使用判别器对这两组特征进行判别。标注数据的判别结果分布更倾向于$1$(即被判别器认为来自标注池),而未标注数据的判别分布出现在标注数据的判别分布的左侧。选择未标注数据的判别分布中判别得分最低的$b$个样本作为最有价值的样本。
这样做是因为最左侧的这些样本具有最低的置信度,与标记池中的样本具有最小的特征相关性,从而可能包含更多有价值的信息。
VAAL的一次采样流程如下:
3. 实验分析
作者给出了VAAL的实验结果:
消融实验显示同时训练VAE和判别器的效果是最好的:
实验结果还显示出模型对初始标签偏差、不同的标注预算以及噪声的鲁棒性。