2021SC@SDUSC
基于bert_base模型的文本分类半监督学习在bert的模型之上加入无标签数据增强技术,本文开始进入bert模型的探索和uda无标签数据增强入门。
1.概述:
DisTillBERT 作为bert模型的简化版,亲手实践其完成句子分类的整个过程无疑是bert入门的绝佳指南。
数据集:
https://github.com/clairett/pytorch-sentiment-classification/raw/master/data/SST2/train.tsv
数据概览如下:
该数据集共两千行数据,每一行数据都已标记为0,1两种标签。
2.目标:
使用预训练好的DisTillBERT来完成这2000个句子的嵌入,将模型的输出划分为训练集和测试集就可以得到训练和评估回归模型的数据集,从而利用回归模型完成分类任务。
整个过程可以分为bert分词器对数据集中的句子进行分词,将每一个句子分成若干词条,再加入句子分类所需的特殊词(在句子开始加入 [CLS],末端加入 [SEP]),最后将这些词替换成词嵌入表中的编号转换成能够直接被DisTillBERT处理的形式。如下图所示:
至此,DisTillBERT部分结束,实践可参考代码:
https://github.com/jalammar/jalammar.github.io/blob/master/notebooks/bert/A_Visual_Notebook_to_Using_BERT_for_the_First_Time.ipynb。
3.uda部分技术TSA:
在半监督学习中,如果未标记数据和标记数据的数量存在巨大的差距。因此,模型往往会很快地对标记数据产生过拟合的现象。此处采用Training Signal Annealing(TSA)训练方法,随着未标签数据的增加,逐步去除带标签数据,从而避免模型过拟合到带标签的训练数据。代码三处条件对应着方法的三种阈值函数线性,指数,对数。
举例:
对数函数中,阈值前期增长速度快,后期增长速度慢。适用于数据量多的有标签的数据,不易发生过拟合,我们希望阈值增长得快一点,减少删除一些有标签的数据。