基于modAL实现成本效益主动学习算法解析
主动学习与成本效益概述
主动学习(Active Learning)是机器学习中一种特殊的半监督学习范式,它允许算法主动选择最有价值的数据进行标注,从而在减少标注成本的同时提高模型性能。成本效益主动学习(Cost-Effective Active Learning)是主动学习的一种改进方法,它不仅关注不确定样本,还考虑高置信度样本,实现更高效的样本选择策略。
算法核心思想
该实现基于论文提出的成本效益主动学习算法,但做了重要改进:
- 同时选择最不确定的K个样本(传统主动学习方法)
- 额外选择最确定的N个样本(创新点)
- 无需为不同数据集调整置信度阈值参数(简化使用)
这种混合策略既保持了模型边界的精确性(通过不确定样本),又确保了数据分布的全面性(通过高置信样本)。
代码实现详解
1. 数据准备与初始化
使用MNIST手写数字数据集作为示例:
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train / 255 # 归一化
X_train = X_train.reshape(-1, 784) # 展平图像
初始化阶段随机选择少量样本作为初始训练集:
INITIAL_SET_SIZE = 32
ind = np.random.choice(range(len(U_x)), size=INITIAL_SET_SIZE)
X_initial = U_x[ind]
y_initial = U_y[ind]
2. 核心查询策略实现
max_entropy
函数实现了混合选择策略:
def max_entropy(active_learner, X, K=16, N=16):
class_prob = active_learner.predict_proba(X)
entropy = entr(class_prob).sum(axis=1)
uncertain_idx = np.argpartition(entropy, -K)[-K:] # 选择最不确定的K个样本
confidence_idx = np.argpartition(entropy, N)[:N] # 选择最确定的N个样本
return np.concatenate((uncertain_idx, confidence_idx), axis=0)
3. 主动学习循环
主循环中实现了完整的主动学习流程:
- 使用查询策略选择样本
- 为高置信样本分配伪标签
- 更新模型
- 评估性能
for index in range(N_QUERIES):
query_idx, _ = active_learner.query(U_x, K_MAX_ENTROPY, N_MIN_ENTROPY)
# 分离不确定样本和高置信样本
uncertain_idx = query_idx[:K_MAX_ENTROPY]
confidence_idx = query_idx[K_MAX_ENTROPY:]
# 为高置信样本分配伪标签
conf_labels = assign_pseudo_labels(active_learner, U_x, confidence_idx)
# 合并两类样本进行训练
L_x = U_x[query_idx]
L_y = np.concatenate((U_y[uncertain_idx], conf_labels), axis=0)
active_learner.teach(L_x, L_y)
# 更新未标注池
U_x = np.delete(U_x, query_idx, axis=0)
U_y = np.delete(U_y, query_idx, axis=0)
# 评估模型
acc = active_learner.score(X_test, y_test)
技术优势分析
- 双样本选择机制:同时考虑模型边界不确定性和数据分布代表性
- 伪标签技术:对高置信样本使用模型预测结果作为标签,减少人工标注需求
- 参数简化:相比原算法,无需调整置信度阈值,更易使用
- 灵活性:K和N参数可根据实际需求调整,平衡探索与利用
实际应用建议
- 初始样本量:根据问题复杂度调整INITIAL_SET_SIZE,复杂问题需要更多初始样本
- K/N比例:通常保持K≈N,但可根据标注成本调整:
- 标注成本高:增大N比例
- 模型精度要求高:增大K比例
- 模型选择:示例使用随机森林,但对深度学习模型同样适用
- 停止条件:除了固定查询次数,也可设置精度阈值或提升停滞作为停止条件
扩展思考
这种方法可进一步优化为:
- 动态K/N调整:根据学习进度动态调整K和N的比例
- 样本多样性考虑:在选择高置信样本时加入多样性度量
- 多模态数据扩展:适应图像、文本等多模态数据场景
通过modAL框架实现的这种成本效益主动学习方法,为实际应用中平衡模型性能与标注成本提供了实用解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考