卷积神经网络用语句子分类---Convolutional Neural Networks for Sentence Classification 学习笔记
读了一篇文章,用到卷积神经网络的方法来进行文本分类,故写下一点自己的学习笔记:
本文在事先进行单词向量的学习的基础上,利用卷积神经网络(CNN)进行句子分类,然后通过微调学习任务特定的向量,提高性能。
在从无监督神经语言模型中获得单词向量(Tomas Mikolov等人做过相关工作,即谷歌的word2vector完成,将原始的1/V模型变化为分布式低维表示)后利用一层卷积层的CNN进行学习。
模型结构:

首先输入具有两个通道,分别对应static和non-static的方式,其中static方式表明单词向量不会随着训练过程而发生变化,我们可以采用各种各样的固定长度编码,包括one-hot(数据量很小的时候可以用),本文中采用的是google的word2vec的word embedding,将单词转化为维度固定的向量表达。
在卷积层当中,这里与图像识别中的CNN不同的是:这里的卷积核的宽度是一定的(即词向量的维数),而高度代表了词语的个数。例如h=3,即代表了3-gram的上下词信息,h=4,就代表4-gram的信息,h=n表示n-gram。每一个卷积核(Filter)的参数是共享的,代表着一个卷积核只能识别同一类特征。依次顺序往下扫描生成
,卷积后生成的feature map不再是一个矩阵,而是一个宽度只有1的列向量(图中的一竖列)。
然后在池化层的pooling采用max pooling,即将每一个Filter卷积得到列向量中的最大值ci取出来,其他的丢弃,因此能得到一个维度为X(X为Filter的数目,例如设置了h=3,4,5三个Filter,X就等于3)。这样做有一个好处,即文中原本只对单词进行了embedding,生成了维度固定的编码,但没有对文本进行这样的操作,因此没一段文本当中包含的单词数也是不同的,如果不进行maxpooling池化的话,会造成维度不一样的情况(实际上也可以对文本进行同维度编码,但是这样做有些复杂,又是一个研究方向了;另外也可以对文本进行padding,即设定一个固定的长度,多了就截掉,少了就补上,我在另外一篇字符级CNN的论文中看到这样的操作,就把长度设置为1014,认为能表达大部分的含义),在进行了maxpooling操作之后,从池化层出来的向量的维度统一变成了X。
经过一个池化层之后有一个全连接层,即通常的三层神经网络结构中隐层连接输出层的操作,采用softmax函数输出从属于不同类的分布概率,同时还加了一个dropout操作来防止过拟合,即对全连接层上的权值参数给予L2正则化的限制。
还要提到的一点就是前文所说的“两种通道”,实际上第一种通道就是static的,利用word2vec将单词统一编码,而另外一种通道就是non-static,这种方法中所有的单词向量并不是产生后就不发生变化的,而是在训练的过程中会被微调。
实际上本文的模型比较简单,但是实际效果非常好。在实验结果中可以看到non-static的方法大多数时候都是要比static方法稍好的,而static方法比rand的方法要好(rand是指word embedding过程中词的编码随机给出)。而结合static和non-static的multichannel方法相较于单纯的static和non-static方法,在较小的数据集上表现比他们都要好(因为这种混合的方法体现了一种折衷的想法,即不希望被微调的单词向量与原始产生的单词向量差距太大,也希望保持一定的动态变化空间)。
卷积神经网络用语句子分类---Convolutional Neural Networks for Sentence Classification 学习笔记的更多相关文章
- pytorch -- CNN 文本分类 -- 《 Convolutional Neural Networks for Sentence Classification》
论文 < Convolutional Neural Networks for Sentence Classification>通过CNN实现了文本分类. 论文地址: 666666 模型图 ...
- 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)
一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...
- 《Convolutional Neural Networks for Sentence Classification》 文本分类
文本分类任务中可以利用CNN来提取句子中类似 n-gram 的关键信息. TextCNN的详细过程原理图见下: keras 代码: def convs_block(data, convs=[3, 3, ...
- [NLP-CNN] Convolutional Neural Networks for Sentence Classification -2014-EMNLP
1. Overview 本文将CNN用于句子分类任务 (1) 使用静态vector + CNN即可取得很好的效果:=> 这表明预训练的vector是universal的特征提取器,可以被用于多种 ...
- 树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning
树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning 2018-04-17 08:32:39 看_这是一 ...
- 斯坦福大学卷积神经网络教程UFLDL Tutorial - Convolutional Neural Network
Convolutional Neural Network Overview A Convolutional Neural Network (CNN) is comprised of one or mo ...
- Neural Networks and Deep Learning学习笔记ch1 - 神经网络
近期開始看一些深度学习的资料.想学习一下深度学习的基础知识.找到了一个比較好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是非常多的. ...
- cs231n spring 2017 lecture1 Introduction to Convolutional Neural Networks for Visual Recognition 听课笔记
1. 生物学家做实验发现脑皮层对简单的结构比如角.边有反应,而通过复杂的神经元传递,这些简单的结构最终帮助生物体有了更复杂的视觉系统.1970年David Marr提出的视觉处理流程遵循这样的原则,拿 ...
- [C4W1] Convolutional Neural Networks - Foundations of Convolutional Neural Networks
第一周 卷积神经网络(Foundations of Convolutional Neural Networks) 计算机视觉(Computer vision) 计算机视觉是一个飞速发展的一个领域,这多 ...
随机推荐
- Activiti学习记录(五)
1.排他网关 说明: 1) 一个排他网关对应一个以上的顺序流 2) 由排他网关流出的顺序流都有个conditionExpression元素,在内部维护返回boolean类型的决策结果. 3) 决策网关 ...
- ArrayList集合例题,商品库存管理(集合)
创建车库集合,存进车 public class demo1 { String pinpai; String c; int s; } import java.util.ArrayList; class ...
- 魅族MX3 Flyme3.0找回手机功能支持远程拍照密码错两次自动拍照
进入Flyme页面(http://app.meizu.com/),选择“查找手机”即可进行查找自己登记的魅族系列手机. 如果您在一个账号下登记过N多魅族系列手机,那么都是可以进行查找的,参见下图 魅族 ...
- 2018.11.3 Nescafe18 T2 太鼓达人
题目 背景 七夕祭上,Vani 牵着 cl 的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员 XLk.Poet_shy 和 ly ...
- 【思维题 最大权闭合子图】loj#6045. 「雅礼集训 2017 Day8」价
又是经典模型的好题目 题目描述 人类智慧之神 zhangzj 最近有点胖,所以要减肥,他买了 NN 种减肥药,发现每种减肥药使用了若干种药材,总共正好有 NN 种不同的药材. 经过他的人脑实验,他发现 ...
- django+xadmin在线教育平台(一)
大家好,此教程为在慕学网的实战教程Python升级3.6 强力Django+杀手级Xadmin打造在线教育平台的学习笔记,不对望指正! 使用Django+Xadmin打造在线教育平台(Python2, ...
- Windows CMD命令 查看无线密码
netsh wlan show profiles netsh wlan show profiles name='无线网络名称' key=clear
- C盘扩容 更改C盘大小
最近对xamarin有点兴趣,虽然网上的评论嘘声一片, 对于只想试一试的心态来说,对于网上所说的什么开发后的程序卡顿,可以用的三方库很少等, 我只想说,你们说的我不信,我要试一试看 我本来已经安装了v ...
- [转载]win10(64bit)上安装MySQL-python
https://blog.csdn.net/builder_taoge/article/details/78292302 https://blog.csdn.net/qq_26808915/artic ...
- JZOJ 5809. 【NOIP2008模拟】数羊
5809. [NOIP2008模拟]数羊 (File IO): input:sheep.in output:sheep.out Time Limits: 1000 ms Memory Limits: ...