参数调整:在实验四的基础上,在数据预处理的时候,随机去掉20%的A特征,相比baseline 提升0.28%, 并没有优于随机去掉10%,最终选择随机去掉10%A特征
实验六 随机去掉20% A 特征
修改内容
测试集acc
迭代步数
baseline diff
在数据增广的时候,设置概率值, 如果 随机数小于0.2就不输出A特征, 如果随机数高于该概率值就输出A 特征
85.42%
26w
+0.28%
优化实验七:随机去掉10%A特征,使用一致的特征抽取方式
参数调整:在实验四的基础上,我们分析了测试集合与训练集合特征抽取不一致的来源,统一来源,相比baseline 提升了0.64%
实验七 随机去掉10% A特征 使用一致的特征抽取方式
修改内容
测试集acc
迭代步数
baseline diff
在数据增广的时候,设置概率值, 如果 随机数小于0.1就不输出A特征, 如果随机数高于该概率值就输出A特征
85.78%
26w
+0.64%
优化实验八:随机去掉10% A 特征,使用一致的特征抽取方式,引入B特征
参数调整:在实验七的基础上,我们进一步分析出B特征对badcase 有很好的区分度,将B特征引入训练,相比baseline 提升了1.14%
实验八 随机去掉10% A 特征 使用一致的特征抽取方式,引入B特征
修改内容
测试集acc
迭代步数
baseline diff
在数据增广的时候,设置概率值, 如果随机数小于0.1就不输出A特征, 如果随机数高于该概率值就输出A特征,训练与测试集合使用一致的特征抽取方式,额外引入B特征
86.28%
26w
+1.14%
总结
这篇文章主要总结了文本分类算法TextCNN调优的方法,先给大家分享了下一般基本做调优我们会采取什么方法——找到badcase,分析共性问题。
分析共性问题后,可以从模型和特征两个方面去优化。在这里我们以文本分类为例,针对具体出现的badcase,我们总结了四个原因:
抽取方式差异
过于依赖某个特征
泛化能力差
缺乏先验知识
这些问题可能不仅仅在文本分类这个领域中出现,在其他的应用场景中也可能会出现。那么,具体如何优化呢,我们做了八个实验来解决问题:其中实验五,实验八是从数据层面来优化模型,其余的都是从模型方面来优化
实验一:我们通过修改embedding_dim长度希望了解不同的向量维度对最后的实验结果的影响,发现embedding_dim 降低到64会对最后结果有比较明显的影响,下次要实验一下embedding dim 到512 会不会对实验结果有提升
实验二:在全连接层增加dropout 层,keep_rate = 0.7,随机丢掉30%,来降低最后结果与A特征相关性
实验三:在全连接层增加dropout 层,keep_rate = 0.5,随机丢掉50%,来降低最后结果与A特征相关性
实验四:只在数据预处理的时候,随机去掉10%的A特征,相比baseline 提升0.29%