【DL与NLP】总结

本文探讨了CNN如何应用于文本分类,分析了CNN利用局部连接捕捉文本中词的局部相关性,通过一维窗口滚动提取组合特征,以及CNN在文本分类上的调参技巧和过拟合处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么CNN可以文本分类?

1,CNN的特性是用局部连接代替了全连接,CNN在2D的图像领域,前提假设是数据在二维空间上存在着局部相关性。如果输入不存在这个局部相关性,即shuffle也不影响,也就不适合用CNN了。

文本语言中单个词单独看待和多个词组合的语义是有差别,即之间是有局部相关性的。

文本上将一个句子embedding后得到二维特征矩阵,类似图像的应用,只是这里是一维窗口滚动,即每个卷积核的一次考虑n个词的全部特征。

2,类似于传统方法用n-gram提特征来做文本分类,n-gram是考虑局部统计信息的语言模型,CNN在文本上近似于n-gram的应用。

CNN提取的是词的组合特征,相当于由网络自己实现n-gram。

同时n-gram可以自动计算每个组合词的每个核的权重。

相关:

RNN的假设是数据在时序上存在相关性。时序上则可以认为是一维上。

CNN分类调参:filter_size的选择


CNN的计算

1. CNN的feature map size计算

若输入为 [input_height x input_width] , 对于kernel: [kernel_height x kernel_width],再考虑上[padding],[stride],得到的output_size:

output\_height = (input\_height - kernel\_height + 2 * padding) / stride + 1

output\_width = (input\_width - kernel\_width + 2 * padding) / stride + 1

2. CNN参数量计算

卷机内部实现实际上就是矩阵相乘,每个kernel有 x * y 个weight 加上一个 bias。

比如有3种filter_size,如文本分类中,取[3,4,5],而filter_num = 128, 则有 3x128 个kernel,每个经过maxpooling后都是一个数,可知经过CNN后得到的vector为 3x128维。后续可接全连接等操作。


3. CNN的BP计算


RNN的特点

RNN是一种串行计算的递推式的计算函数,即每一时刻计算都是参考之前的传递的信息。

在t0时刻,s_0一般初始化为0。


过拟合的判断和处理

原因:

把学习进行的太彻底,把样本数据的所有特征几乎都习得了。

1,数据量少,训练集与测试集的分布不一致;2,模型太过复杂。

判断:

1. 绘图训练集和验证集的曲线。

2. 观察训练集与测试集的表现。过拟合最直观的表现就是 training accuracy 特别高,但是test accuracy 特别低,即两者相差特别大。训练完了以后可以测试一下网络在训练集的正确率,如果和测试集的正确率相差特别大(比如20%),则说明网络过拟合了。

预防处理:

训练数据的选取,本身的局部特征应尽可能少,噪声也尽可能小。

限制机器的学习,使机器学习特征时学得不那么彻底

1,从数据下手,增加数据量。

2,使用early stopping。限制模型学习得太过。在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch 没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了。

3,正则化,添加正则化惩罚项来限制参数的解空间。否则模型为了拟合所有训练数据,w可以变得任意大且不稳定,直观看就是对局部特征太敏感。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值