半监督文本分类的优势:可以减少数据的标注,节省人力成本。
项目流程:
1.数据预处理:
1).生成字的字典:加载所有训练数据,统计词频,统计每个字在各个文本中出现的文本数量n,取n大于1的字,再根据词频大小排序,取前6000个字,并保存。
2).生成训练数据:训练数据分为语言模型的训练数据和分类模型的训练数据。
语言模型训练数据的封装:遍历有标签和无标签的训练数据,对每一条样本进行过滤,只保留该样本中在字典中存在的字,为每条样本封装字、权重、label数据。当前字的label为下一个字,权重为1,最后一个字的label为自己本身,权重为0。
分类模型训练数据的封装:遍历有标签的训练数据,对每一条样本进行过滤,只保留该样本中在字典中存在的字。
2.预训练语言模型:通过双向LSTM提取特征,计算损失,优化损失得到模型。
3.分类器模型训练:通过加载预训练好的语言模型中的字向量进行词嵌入,用双向LSTM提取特征,用softmax交叉熵函数计算损失loss,为提升模型鲁棒性,增加对抗损失:
1).普通对抗损失:加载语言模型中生成的损失language_loss,对字向量求偏导并l2正则化生成一个新的噪音数据perturb,并与字向量相加,通过双向LSTM提取特征,求对抗损失。
2).虚拟对抗损失的增加:随机初始化词向量维度的矩阵并与词向量相加,通过双向LSTM提取新特征,将新特征与旧特征做kl散度来求对抗损失。
4.优化分类器损失和对抗损失。
最后说白了半监督的训练体现在语言模型的训练过程中,语言模型为分类模型提供了字向量和对抗损失的生成。