1 概述
虽说现在深度学习在文本分类上取得了很大的进步,但是很多时候在工业界没有与之匹配的数据量,在少量数据的情况下,使用深度学习很容易出现过拟合,而此时使用传统的TF-IDF加机器学习又无法取得良好的效果。针对这种情况,我们来看看在使用深度学习时有哪些方法也尽量地避免过拟合。
2 过拟合的处理方法
1)L1和L2正则化
对模型中的权重系数加上L1或L2正则处理,将无关的权重系数惩罚到一个很小的值,甚至为0。
2)Dropout 正则化
Dropout正则化一般使用在全连接层中。
3)提早停止
当发现在继续迭代时,验证集上的损失开始上升时,即使此时训练集上的损失在下降,也应该停止迭代。
4)数据增强
在图像中我们知道可以通过对图片进行翻转,裁剪,缩放,调整对比度等来进行数据增强,那么在文本中又该如何增强数据呢?
a)同义词替换
在有些论文中提出了同义词替换,但在使用word2vec词嵌入时,同义词之间的向量是非常相似的,也就是说你输入到模型中的数据实际上没有什么变化,此时的效果并不会很好。
b)反向翻译
利用机器翻译的技术将原始的句子翻译成一种目标语言,然后又将这种目标语言重新翻译回来,例如英文文本分类时,先将英文翻译成西班牙语,然后又反向翻译为英文,利用这种方法可以得到两个不同的句子。有时候能取得不错的效果。
c)文档裁剪
如果此时是长文本分类时,有时候一篇长文本中的主要思想会重复好几次,此时我们只要把这含有中心思想的几处给裁剪出来,就可以将一个长文本裁剪成多个文本。
d)生成对抗网络
生成对抗网络已经被用在图像中的数据增强中,也可以尝试用在文本中。
5)迁移学习
a)预训练词向量
例如常用的word2vec,glove等
b)句子向量
直接将文档用句子向量表示,例如facebook和谷歌的句编码器,或者skip-thought等。
c)预训练的语言模型
例如ULMFiT,BERT等。
d)多任务学习
可以构建多个任务协同学习
6)特征工程
人工从文本中抽取特征工程,然后利用较小的模型来建模。