读了一篇文章,用到卷积神经网络的方法来进行文本分类,故写下一点自己的学习笔记:

  

  本文在事先进行单词向量的学习的基础上,利用卷积神经网络(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 学习笔记的更多相关文章

  1. pytorch -- CNN 文本分类 -- 《 Convolutional Neural Networks for Sentence Classification》

    论文  < Convolutional Neural Networks for Sentence Classification>通过CNN实现了文本分类. 论文地址: 666666 模型图 ...

  2. 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)

    一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...

  3. 《Convolutional Neural Networks for Sentence Classification》 文本分类

    文本分类任务中可以利用CNN来提取句子中类似 n-gram 的关键信息. TextCNN的详细过程原理图见下: keras 代码: def convs_block(data, convs=[3, 3, ...

  4. [NLP-CNN] Convolutional Neural Networks for Sentence Classification -2014-EMNLP

    1. Overview 本文将CNN用于句子分类任务 (1) 使用静态vector + CNN即可取得很好的效果:=> 这表明预训练的vector是universal的特征提取器,可以被用于多种 ...

  5. 树卷积神经网络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 看_这是一 ...

  6. 斯坦福大学卷积神经网络教程UFLDL Tutorial - Convolutional Neural Network

    Convolutional Neural Network Overview A Convolutional Neural Network (CNN) is comprised of one or mo ...

  7. Neural Networks and Deep Learning学习笔记ch1 - 神经网络

    近期開始看一些深度学习的资料.想学习一下深度学习的基础知识.找到了一个比較好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是非常多的. ...

  8. cs231n spring 2017 lecture1 Introduction to Convolutional Neural Networks for Visual Recognition 听课笔记

    1. 生物学家做实验发现脑皮层对简单的结构比如角.边有反应,而通过复杂的神经元传递,这些简单的结构最终帮助生物体有了更复杂的视觉系统.1970年David Marr提出的视觉处理流程遵循这样的原则,拿 ...

  9. [C4W1] Convolutional Neural Networks - Foundations of Convolutional Neural Networks

    第一周 卷积神经网络(Foundations of Convolutional Neural Networks) 计算机视觉(Computer vision) 计算机视觉是一个飞速发展的一个领域,这多 ...

随机推荐

  1. 后台调用前台js

    WEB后台代码调用前台JS(两种方式). 1   这种方式只能调用简单的JS代码.不能调用自定义的函数. string jss = "<script language='javascr ...

  2. JMeter接口压力测试课程入门到高级实战

    章节一压力测试课程介绍 1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介: 讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分 ...

  3. struts+hibernate+spring整合过程常见问题收集

    1.java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor缺少asm-3.3.jar2.java.lang.NoClassDefF ...

  4. jquery淡入淡出轮播图

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. 二 python并发编程之多进程-重点

    一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...

  6. python 爬虫豆瓣top250

    网页api:https://movie.douban.com/top250?start=0&filter= 用到的模块:urllib,re,csv 捣鼓一上午终于好了,有些小问题 (top21 ...

  7. Linux常见的系統进程

    前言 在日常运维工作中,经常会看到一些奇怪的系统进程占用资源比较高.而且总是会听到业务线同学询问“xxx这个是啥进程啊?咋开启了这么多?” 而这些系统级的内核进程都是会用中括号括起来的,它们会执行一些 ...

  8. sql:where中多种状况简便写法

    字段名:Bran,block,are ,store 四个字段中存在值等于0或者不等于0,两种情况.where中如果用if等条件判断会有16中组合,如果采用where中的条件就避免了这个情况. decl ...

  9. 13,scrapy框架的日志等级和请求传参

    今日概要 日志等级 请求传参 如何提高scrapy的爬取效率 一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy ...

  10. git---gui使用

    1.登陆的命令: git config –global user.email "1455971532@qq.com" git config –global user.name &q ...