如何解决基于 NLP 的 CNN 模型中的过度拟合问题,以使用词嵌入进行多类文本分类?

     2023-03-28     250

关键词:

【中文标题】如何解决基于 NLP 的 CNN 模型中的过度拟合问题,以使用词嵌入进行多类文本分类?【英文标题】:How does one tackle over-fitting in NLP based CNN models for multiclass text classification with word embeddings? 【发布时间】:2021-05-28 16:40:44 【问题描述】:

(问题:多类文本分类问题中的过拟合问题) 在我的个人项目中,目标是根据公司描述对公司的行业标签进行分类。我采取的步骤是:

    删除停用词、标点符号、空格等,并将说明拆分为标记。 将标签和标记转换为词向量。 将标记转换为词嵌入模型。 设置具有 62 个输出节点的 CNN。 (62 个不同的行业标签进行分类)

图片/数据集链接供参考:https://drive.google.com/drive/folders/1yLW2YepoHvSp_koHDDzcAAJBIaYQIen0?usp=sharing


我面临的问题是模型过拟合,不管我做了什么改变。 (由于我为损失设置的回调而提前结束) [CNN准确率][7]

max_features = 700
maxlen = 200
embedding_dims = 50
filters = 200
kernel_size = 3
hidden_dims = 160
es_callback = EarlyStopping(monitor='val_loss', patience=5)

model = Sequential()
model.add(Embedding(vocab_size, 100, weights=[embedding_matrix], trainable=False))
model.add(Dropout(0.4))

model.add(Conv1D(filters,
                 kernel_size,
                 padding='valid',
                 activation='relu',
                 strides=1))
model.add(GlobalMaxPooling1D())

model.add(Dense(hidden_dims))
model.add(Dropout(0.4))
model.add(Activation('relu'))

model.add(Dense(62))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

history = model.fit(X_train, y_label_train,
              batch_size=64,
              epochs=50,
              validation_data=(X_test, y_label_test),
              callbacks=[es_callback])

代码链接:https://colab.research.google.com/drive/1YqbhPX6e4bJ5FnbfHj7fTQH4tUe6diva?usp=sharing

【问题讨论】:

【参考方案1】:

我觉得这个问题很笼统,尽管它不仅对 NLP 有用。因此,我认为要正确解决这个问题,需要涵盖很多主题。我建议您首先关注数据预处理步骤,因此这里描述神经网络架构的代码 sn-p(在我看来)可能是最后一步。基于对 colab 代码的初步了解,我建议:

更好的数据预处理

更正确的数据预处理

例如,我认为您仅在训练数据X['Text_Clean'] = X['Business Description'].apply(lambda x: remove_punct(x)) 上应用了以下内容,并且我没有在测试集上看到类似转换的管道,也没有看到直接转换。 您在 tokens 上应用了词嵌入。我相信它们会给您的文本“text_final”功能带来更大的价值,这样您就可以从语义表示中获得价值em> 的文本叙述。

在general 我会说:转换为小写,删除 HTML 标记、标点符号、非字母字符、删除停用词/根据您的特定文本在停用词列表中添加一些其他词,修复一些非正式的词汇表中的文本,例如"what's" -> "what is",并通过词干将语义大致相同的单词转换为一种标准形式。

Imbalanced Classification Problems:发生了

当每个类的训练数据集中的示例数 标签不平衡。

简单地说,当你的少量标签占据了与你的文本相关的大量标签时,剩下的要学习的“少数”标签就没有太多的训练了。

Feature Engineering:您可以创建额外的功能和元数据来增强培训和学习。例如,您可以添加一个列来提供每个实例的情绪,和/或您可以将主题建模应用为一个额外的属性(它们类似于您放在数据框上的“令牌”,支持 - 而不是替换 -主要文本属性)。

最后,我认为首先从TfidfVectorizer 开始并观察那里的准确性,然后再进行神经网络,这不是一个坏主意。如果以上还不够,还可以在使用深度神经网络的同时探索更鲁棒的迁移学习和pre-trained models。

【讨论】:

cnn为啥能使用在nlp?

...对于当前分类要求最有用的信息。但是general的机器学习模型,很难直接将数据之间的关联分析出来,所以需要设计特定的模型来分析这些关联,其实可以这么说,N-gram模型就是从语句中找N个词之间的关系,把所有的训练数据中N... 查看详情

如何测试过度拟合的随机森林回归模型?

】如何测试过度拟合的随机森林回归模型?【英文标题】:HowtotestaRandomForestregressionmodelforOverfitting?【发布时间】:2021-03-2517:58:32【问题描述】:我将RandomForest用于回归模型,并想看看我的模型是否过拟合。这是我所做的:我使... 查看详情

CNN 中的验证损失显着减少,模型拟合还是过拟合?

】CNN中的验证损失显着减少,模型拟合还是过拟合?【英文标题】:validationlossdecreasesdramaticallyinCNN,modelfitoroverfit?【发布时间】:2020-06-2501:21:55【问题描述】:我的CNN模型有问题。我有89张原始眼底图像,其中5张是正常类图像,8... 查看详情

如何使用 GridSearchCV 测试回归交叉验证中的过度拟合?

】如何使用GridSearchCV测试回归交叉验证中的过度拟合?【英文标题】:Howtotestforoverfittinginregressioncross-validationwithGridSearchCV?【发布时间】:2021-06-1201:38:39【问题描述】:我正在运行一组连续变量和一个连续目标的回归模型。这是... 查看详情

过度拟合数据集的可能原因

...k张图像。训练包含27k个图像,验证集包含6k个图像。我为模型使用了以下CNN代码:model=Sequential()model.add(Convolution2D(32,3,3,activation=\'relu\',border_ 查看详情

迁移学习在自然语言处理中的应用

...习模型结构复杂,在NLP领域中迁移学习不够成熟,不知道如何进行迁移、迁移模型的哪个结构部分、源数据集合与目标数据集合之间需要满足怎样的关系。本文以CNN文本分类任务为例进行描述,总结一下迁移学习在NLP领域文本分... 查看详情

CNN模型在多类分类上过拟合

...01-0622:29:17【问题描述】:我正在尝试使用GloVe嵌入来训练基于thisarticle的cnn模型(也是一个rnn,它具有thisissue)。数据集是一个带标签的数据:带有标签的文本(推文)(仇恨、攻击性或两者都没有)。问题是模型在训练集上表... 查看详情

过度拟合问题

Underfitting(欠拟合)Overfitting(过拟合)解决拟合的方法线性回归正则化欠拟合/高偏差(highbias)过拟合/高方差(highvariance)过拟合与欠拟合也可以用Bias与Variance的角度来解释,欠拟合会导致高Bias,过拟合会导致高Variance,所以模... 查看详情

系统学习nlp(三十一)--基于cnn句子分类

这篇文章翻译自ASensitivityAnalysisof(andPractitioners’Guideto)ConvolutionalNeuralNetworksforSentenceClassification近年来,卷积神经网络在句子分类任务上取得了显著的成绩(Kim,2014;Kalchbrenneretal.,2014),然而,这些模型要求从业者指定精确... 查看详情

系统学习nlp(三十一)--基于cnn句子分类

这篇文章翻译自ASensitivityAnalysisof(andPractitioners’Guideto)ConvolutionalNeuralNetworksforSentenceClassification近年来,卷积神经网络在句子分类任务上取得了显著的成绩(Kim,2014;Kalchbrenneretal.,2014),然而,这些模型要求从业者指定精确... 查看详情

BIC 使用来自 scikit-learn 的 GaussianMixture 过度拟合图像分割模型中的组件数量

】BIC使用来自scikit-learn的GaussianMixture过度拟合图像分割模型中的组件数量【英文标题】:BICisover-fittingthenumberofcomponentsinanimagesegmentationmodelusingGaussianMixturefromscikit-learn【发布时间】:2017-11-0611:54:38【问题描述】:我正在使用GMM对80... 查看详情

什么是机器学习中的过拟合和噪声?

...的过度拟合和噪声是什么?这会发生在参数分类器中吗?如何知道模型是否过度拟合数据?【问题讨论】:有时我想知道你们是如何在谷歌之前找到***的。过度拟合是ML中非常基本的概念,简单的Google搜索会带来过多的结果。话... 查看详情

论文研读1.1基于deepfm模型的广告推荐系统研究(郁等)

...推荐系统研究(郁等)摘要信息呈指数爆炸增长的时代,如何在这个信息千变万化的世界里获得用户想要的数据显得尤其重要。作者们提出了DeepFM模型并且实验结果发现,DeepFM模型比逻辑回归和因子分解机模型的效果都要好。关... 查看详情

scipy非线性曲线拟合中的过度拟合

...fit【发布时间】:2017-09-1523:50:31【问题描述】:我有一个模型方程,我们称之为eq_m:我知道我的数据集如下,我正在尝试将我的数据拟合到eq_m以便我可以使用拟合的参数来预测新数据。但是这个eq_m是非线性的,因此我使用scipy... 查看详情

如何修复 Elman 神经网络中的过度拟合?

】如何修复Elman神经网络中的过度拟合?【英文标题】:HowtofixoverfittinginElmanneuralnetwork?【发布时间】:2016-09-0116:51:28【问题描述】:我正在使用neurolabpython库训练elman网络,但我的网络无法正常工作。训练输入向量:http://pastebin.c... 查看详情

machinelearning—关于过度拟合(overfitting)

...以很好地拟合已有数据集,并且正确预测未知数据。那么如何评价一个模型的优劣的,用代价函数(Costfunction)来度量预测错误的程度。代价函数有很多中,在Ng的视频中,LinearRegression用的是平方代价函数: LogisticRegression用... 查看详情

cnn和rnn在nlp任务中的对比实验

...包括CNN(卷积神经网络)和RNN(递归神经网络)两大阵营,基于卷积的CNN对识别目标任务的结构具有一定的优势,而RNN由于其记忆 查看详情

lsf-scnn:一种基于cnn的短文本表达模型及相似度计算的全新优化模型

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~本篇文章是我在读期间,对自然语言处理中的文本相似度问题研究取得的一点小成果。如果你对自然语言处理(naturallanguageprocessing,NLP)和卷积神经网络(convolutionalneural... 查看详情