大家好,初次写博文还有点小激动,还希望大家多多指教!
该同学现在在读研二,主要研究内容自然语言处理方向中的文本分类,希望利用的方法呢就是目前最最最最火的深度学习。目前阶段尚处于文献调研期。这里对所读的文章做一个整理,希望处于同一研究领域的同学批评指正,大家相互交流,共同进步!
参考文献:Convolutional Neural Networks for Sentence Classification EMNLP 2014
ConvolutionalNeural Networks for Sentence Classification
主要工作:
实现了四个利用CNN进行句子层面的文本分类工作,分别是CNN-rand、CNN-static、CNN-non-static、CNN-multichannel。
创新点:
1.实验采用预先训练好的词向量
2.对CNN网络结构做了改动,能够同时使用task-specificand static vectors
实验及结果:
1.CNN-rand:所有的词向量都是随机初始化的,在随机训练过程中作为参数进行调整
2.CNN-static:所有的词向量都是预先通过word2vec训练好的(未知词汇则采用随机初始化的方法),并且在实验过程中保持不变,只调整其它参数。
3.CNN-non-static:通商一个实验一样只是词向量在训练过程中调整。
4.CNN-multichannel:采用两组词向量(都是通过word2vec训练好的),每组词向量作为一个通道,每组滤波器都同时用在两个通道上,但是在实现BP计算梯度的时候制作用在一个通道上,也就是只对一个通道的词向量调整,另一个保持不变。
CNN-rand:效果并不理想
CNN-static:效果非常好,即使只是微调网络参数就能获得很好的结果,说明了采用训练好的词向量对各种分类任务非常有效
Multichannelvs. Single ChannelModels:初始的期望是通过多通道来防止过拟合(通过保证训练过程中对词向量的调整不会偏离初始向量太多来防止过拟合),但得到的结果更为复杂,因为实验发现,正则化的过程还是必不可少的。
Staticvs. Non-staticRepresentations:词向量在训练过程中有调整,可以根据现在的分类任务对词向量进行调整的,所以更符合当前任务,效果就会更好。
模型:
表示一句话中的第i个词的词向量,向量维度是k;
表示长度为n的句子,是各个词向量的串联;
进行卷积运算的滤波器,窗口大小为h。
1.在一个窗口 上通过卷积获取特征 公式如下:
f是双曲正切函数,将这个w用到句子中的各个词上就能够获得一个新的特征层
2.进行max-over-timepooling运算,目的是找出最重要的特征:
3.倒数第二层通过全链接与最后一层相连,采用dropout防止过拟合,并通过softmax函数计算最终要优化的代价函数
正则化:权值向量w是基于l2泛数 是一个“标记”向量(伯努力随机向量,向量中元素为1的概率是p)
两个通道的CNN网络,是采用了两种词向量表示一个句子,就形成了两个通道。同一个滤波器在不同通道上,同一个位置的卷积结果相加得到下一层的输入。