您的位置:首页 > 理论基础 > 计算机网络

【论文笔记】Convolutional Neural Networks for Sentence Classification

2017-08-16 21:24 585 查看
paper链接 https://arxiv.org/abs/1408.5882

阅读这篇paper的一些笔记:

Abstract

本文将CNN和NLP结合;

介绍了一系列的对比实验,实验结果说明了:

一个简单的(单层神经网络)的CNN模型

一点超参数的调节(Filter的个数)

static word vector

文本分类的效果很好

non-static就是词向量随着模型训练变化,这样的好处是词向量可以根据数据集做适当调整

static就是直接使用word2vec训练好的词向量即可

卷积之后得到的列向量维度也是不同的,可以通过pooling来消除句子之间长度不同的差异

Introduction

主要是介绍了CNN近年来在NLP领域有一些发展

Model

这是本文的模型,基本也就是CNN的结构

左边是一个n*k的矩阵,表示一句话的n个词语,每个词语是一个k维向量

(这里word2vec)

然后设置一个滑窗的长度h,用这个滑窗滑过整个矩阵,然后通过下面这个公式的计算,算出h对应的一个特征的向量c

w是权重,b是偏移量

f就是一个非线性函数

(卷积核)

形成这个向量,称为feature map

我们可以通过改变h的大小,生成很多feature maps

然后对于每个feature map,采取选出这个向量中的最大值,(意在找到最重要的特征)

同时也解决了每个feature map不等长,统一了维度的问题

然后再将这个传递到 全连接层

这是一个softmax层(因为涉及到句子的分类问题)

输出的就是对于不同的label的概率分布

数据集相对较小,很容易就会发生过拟合现象

所以这里引如dropout来减少过拟合现象。

就是产生一定的概率来mask掉一些点

Regularization

这里用到了dropout和l2正则项,避免过拟合

dropout就是将pooling之后的结果随机mask一部分值

比如,我们在这里pooling之后的结果是z,我们将z处理成y之后向前传递的时候,

然后我们就做一个 and 操作

每一次梯度下降,调整参数的时候,依靠这个阈值s来约束中间的参数

Result

这里是一些数据集

然后作者对比了自己的模型和其他下面很多模型的表现,发现效果很好;

在这里,rand是一个随机的词向量模型

static 就是用pre-trained word2vec词向量

non-static 就是会根据specific task来调整词向量(这里也不太清楚)

multichannel就是两种混合来用

Conclusion

CNN在NLP的一个尝试,并且效果还不错

说明了,pre-trained的word vector 是deep learning在NLP领域重要的组成部分

提特征不同,我纠结于很多中间过程,但是了解的不多,或者思维习惯,

Ref

http://blog.csdn.net/stdcoutzyx/article/details/49022443
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cnn 神经网络
相关文章推荐