持续更新……
1.给模型做对抗训练,参考链接,https://www.zhihu.com/question/407992050/answer/1380752786无论是给词ids做随机掩码,还是对embedding layer进行反向梯度扰动,在模型能力足够的情况下都能够有所提升,具体提升效果看数据质量。
2.先overfit,再寻找最优epoch,很多rnn模型在early stop的情况下可能效果不错,但是容易错过损失函数的最优点。
3.防止过拟合不只dropout或者设置惩罚项,把最后几层的输出拼接起来给最后的fc一起预测也是很好的手段。这个方法就是比较常见的ResNet,能够有效缓解神经网络退化的问题。
3.不计成本提高效果,可以将分类任务也做成十折交叉验证,训练十个模型来提高准确率。
4.损失函数还在下降,val的acc却上下起伏?可以在最后几个epoch都对test进行预测,再把预测结果做blending,亲证可以提高3%的准确率。
5.尽量去提升模型的深度而不是单层layer的广度,广而浅的神经网络性能远远比不上窄而深的神经网络性能。
6.序列上LN,非序列上BN(老生常谈了,但是有效果)。
7.bert的trick,把位置ids也训练成位置向量,加入embedding参与参数更新,至于段向量的训练按实际数据来决定。