在上文[1]提到的BERT+CNN司法考试模型的基础上,对模型结构和参数进行了调整,调整后增加了CNN层数,示意图如图1:
图1 BERT编码后接入的CNN结构示意图
其中详细参数见图2:
图2 CNN和输出层的网络结构参数
在给出的司法考试训练集上,模型的精度为:单选0.2765,复选0.1397,合计0.1989。
在上述CNN基础上,引入了GRU网络结构,BERT表征后,接入4层双向GRU模型,输出连接100维全连接层,与CNN的600维全连接层合并后,接入输出层。改进模型的精度为:单选0.2723,复选0.2098,合计0.2376。
对单复选分类GBT模型进行了调整,引入四个选项特征,模型精度由67.3%提升至71.5%。在测试集与训练集数据分布完全一致的前提下,联合叙述和选项的单复选分类GBT模型和单复选BERT+CNN+GRU问答模型的得分应为0.715*0.2376=16.99%。
应在当前的排行榜中排第8名,如图3所示。
图3 2020.6.10司法考试排名截图
损失函数使用了CrossEntropyLoss[2],将输入经过softmax激活函数之后,再计算其与target的交叉熵损失。
单复选模型训练优化器选择了Adam[3],学习率为1E-3,betas=(0.9, 0.999),精度为1e-8,不开启权重衰减,不使用自动求导。
模型共训练2轮,过程如图4:
图4 模型训练过程损失函数值变化图(98.5%平滑图)
总结,本文引入了多层CNN可以提取BERT句子向量中高阶特征并利用了GRU对长文本特征的记忆能力,提升了原BERT和BERT+CNN的模型预测效果,在不引入其他知识的情况下(司法考试参考书),对原任务效果进行了提升。虽然与比赛第一名有差距,但未来仍有提升空间。
[1]基于BERT+CNN语言模型的司法考试问答模型 tsinghuaboy:基于BERT+CNN语言模型的司法考试问答模型
[2]Pytorch常用的交叉熵损失函数CrossEntropyLoss()详解 https://zhuanlan.zhihu.com/p/98785902
[3]A Method for Stochastic Optimization:Adam: A Method for Stochastic Optimization