推荐评论展示任务
https://github.com/guangweis/BERT--Recommended-comments
1.训练数据:
训练集:16000个样本,0代表不推荐,1代表推荐。其中文本是长度小于20的短文本。并且‘1’ label的样本比较少
2.评估标准:AUC
尝试的模型:
1.基于bert
2.Bi-LSTM
3.XLNET
最终选择了两个基于bert的模型
取得了0.96965分数
3.比赛概况和思路
由于bert预训练模型在NLP各项任务都表现很好,我们就首先尝试了bert模型。基于bert的模型,我们使用了基于CLS和CNN的。在ELMO模型中,我们得知多层RNN中,不同RNN层包含不同的信息。BERT是由12层transformer训练来的,我们就考虑将BERT十二层隐藏层权重相加,其中权重也是可以训练的。在最后模型融合期间,为了提高模型的多样性,我就尝试了BI-LSTM和XLNET(但是效果并不好)。我还尝试了加入统计特征,经过很多尝试后,我仅保留了文本长度特征,主要为了方便bert模型中获取一句话最后一个词的索引。伪标签一直是一个很有效的方法,于是我就找了8w左右的未标签数据。并且我尝试了用近100w带评分的评论数据进行Bi-LSTM模型的预训练。但是结果显示,效果提升并不大。EMA优化方法是一种很稳定的效果提升方法,我在比赛中也使用了它。我还尝试了FGM对抗训练,这个方法对提升我的BI-LSTM模型效果很明显,但是对于基于bert的模型,效果提升一般。由于文本标签分布不平均,这种标签分布差异在我的伪标签上十分明显(0标签要比1标签多8倍),于是我考虑的对1标签的样本进行数据扩充(翻译和EDA)和权重损失,但是效果反而变差了。
4.模型介绍
1.bert-cls
2.bert-cnn
5.提升技巧
1.EMA
2.FGM对抗训练
3.伪标签
因为时间的问题我们对XLNET模型没有进行过多调参,所以效果最差。采用这些技巧,我们的Bi-LSTM的效果已经超过了没使用这些技巧的BERT模型。
6.融合策略
我采用了5折交叉验证,最后获得了10个模型。我选取了8个做了简单的平均融合。
7.对我没用
我尝试了很多技巧,下面是本次比赛对我无效的。
1.标签平滑
2.权重损失
3.简单的预训练bert
4.幂函数后处理预测
5.数据扩充