基于协同训练(Co-Training)的半监督文本分类算法
字数 2114 2025-12-10 00:57:08
基于协同训练(Co-Training)的半监督文本分类算法
算法描述
协同训练是一种经典的半监督学习算法,特别适用于有大量未标注数据但标注数据稀缺的场景,如文本分类。该算法的核心思想是:假设数据可以用两个充分冗余(即条件独立)且足够好的特征视图来描述,那么可以在这两个视图上分别训练一个分类器。每个分类器在未标注数据上预测出的高置信度样本及其伪标签,可以扩充另一个分类器的训练集,从而迭代地提升两个分类器的性能。在文本分类中,两个视图可以设计为基于不同特征子集的表示(例如,一个视图使用词袋特征,另一个视图使用词性标注序列特征)。
解题过程详解
步骤1:问题定义与假设
- 目标:给定一个小的标注数据集 \(L = \{(x_i, y_i)\}_{i=1}^l\) 和一个大的未标注数据集 \(U = \{x_j\}_{j=1}^u\),利用 \(U\) 来提升文本分类模型的性能。
- 核心假设:
- 充分冗余性:每个数据点可以用两个特征视图(View 1 和 View 2)表示,且给定类别标签时,两个视图条件独立。即 \(P(x_1, x_2 | y) = P(x_1 | y) P(x_2 | y)\)。
- 视图足够性:每个视图本身都足以训练出一个有效的分类器。
- 文本场景示例:对一篇新闻分类,View 1 可以是文章中的名词和动词构成的词袋向量,View 2 可以是句子长度、标点频率等结构特征。
步骤2:算法初始化
- 从标注集 \(L\) 中,为两个视图分别构造训练集:
- 对 View 1:提取每个样本 \(x_i\) 对应的 View 1 特征,得到 \(L_1 = \{(x_i^1, y_i)\}_{i=1}^l\)。
- 对 View 2:同理得到 \(L_2 = \{(x_i^2, y_i)\}_{i=1}^l\)。
- 用 \(L_1\) 训练一个分类器 \(C_1\)(如朴素贝叶斯、SVM等),用 \(L_2\) 训练另一个分类器 \(C_2\)。
步骤3:协同训练迭代
循环执行以下步骤直到满足停止条件(如达到预设迭代次数或未标注集为空):
- 对未标注数据分类:
- 将未标注集 \(U\) 中的每个样本,分别用两个分类器在其对应视图上进行预测。
- 例如,对样本 \(x \in U\),用 \(C_1\) 基于 View 1 特征 \(x^1\) 预测概率分布 \(P_1(y | x^1)\),用 \(C_2\) 基于 View 2 特征 \(x^2\) 预测 \(P_2(y | x^2)\)。
- 选取高置信度伪标签样本:
- 对每个分类器,从其预测的未标注样本中,选出预测置信度最高的一小批样本。置信度通常用预测概率的最大值衡量,例如对 \(C_1\),选择 \(\arg\max_{x \in U} \max_y P_1(y | x^1)\) 最高的 \(k\) 个样本。
- 将这些样本及其伪标签(即预测概率最大的类别)分别加入另一个分类器的训练集。具体来说:
- 从 \(C_1\) 选出的高置信度样本,将其 View 2 特征和伪标签加入 \(L_2\)。
- 从 \(C_2\) 选出的高置信度样本,将其 View 1 特征和伪标签加入 \(L_1\)。
- 更新分类器:
- 用扩充后的 \(L_1\) 重新训练 \(C_1\)。
- 用扩充后的 \(L_2\) 重新训练 \(C_2\)。
- 从未标注集中移除已使用样本:
- 将本轮中被选为高置信度的样本从 \(U\) 中移除,避免重复使用。
步骤4:最终预测
- 迭代结束后,得到两个增强后的分类器 \(C_1\) 和 \(C_2\)。
- 对新的测试样本,可以有两种融合方式:
- 投票法:分别用 \(C_1\) 和 \(C_2\) 预测,选择多数投票的类别。
- 特征拼接法:将两个视图特征拼接后,用任一分类器预测(需重新训练一个分类器)。
步骤5:理论依据与注意事项
- 为什么有效:基于充分冗余性假设,两个分类器从不同视角学习,它们的预测错误可能不相关。因此,一个分类器产生的伪标签对另一个分类器可能提供有价值的新信息。
- 关键参数:
- 每轮选取的伪标签样本数 \(k\):太小则收敛慢,太大可能引入噪声。
- 停止条件:通常设最大迭代轮数或伪标签置信度阈值。
- 视图构建挑战:在文本任务中,找到真正条件独立的两个视图较难。一种实用变体是伪视图法,即通过随机特征子采样(如将词袋特征随机分为两半)生成两个视图。
步骤6:文本分类中的实际变体
- 在现代NLP中,常利用预训练语言模型(如BERT)生成两种不同表示作为视图:
- View 1:CLS标记的向量表示。
- View 2:通过不同dropout掩码或数据增强(如同义词替换)生成的表示。
- 结合自训练(Self-Training):每个分类器自身产生伪标签,同时利用对方产生的伪标签,形成协同增强。