Convolutional Neural Networks for Sentence Classification 阅读笔记

原文链接: http://chenhao.space/post/b62604a1.html

Introduction

题目:Convolutional Neural Networks for Sentence Classification

来源:EMNLP 2014

本论文提出将CNN用在NLP的句子分类任务上,进行了一系列的对比实验。


Model

假设一个句子的长度为n,可以表示为(词向量 x x x k k k维):
x 1 : n = x 1 ⊕ x 2 ⊕ . . . ⊕ x n x_{1:n}=x_1⊕x_2⊕...⊕x_n x1:n=x1x2...xn
其中 ⊕ ⊕ 表示concatenation operator,例如, x i : i + j x_{i:i+j} xi:i+j 等于 x i , x i + 1 , . . . , x i + j x_i,x_{i+1},...,x_{i+j} xi,xi+1,...,xi+j 的concatenation。

设过滤器filter的窗口的size为 ( h , k ) (h,k) (h,k),一个feature c i c_i ci 的计算公式为:
c i = f ( w ⋅ x i : i + h − 1 + b ) c_i=f(w·x_{i:i+h-1}+b) ci=f(wxi:i+h1+b)
其中 w w w 是filter, b b b 是bias, f f f 是一个非线性函数。

This filteris applied to each possible window of words in thesentence { x 1 : h , x 2 : h + 1 , . . . , x n − h + 1 : n } \{x_{1:h},x_{2:h+1}, . . . ,x_{n−h+1:n}\} {x1:h,x2:h+1,...,xnh+1:n} to produceafeature map.
c = [ c 1 , c 2 , . . . , c n − h + 1 ] c=[c_1,c_2,...,c_{n-h+1}] c=[c1,c2,...,cnh+1]
然后经过max pooling操作,concate每个最大值,之后再经过一个全连接层和softmax,全连接层是为了改变维度变换,softmax实现二分类。


Regularization

在全连接层使用dropout,并对权重向量使用L2范数约束。dropout就是将max pooling后的结果随机mask一部分值。

假设我们有 m m m个filters,令 z = [ c 1 , . . . , c m ] z=[c_1,...,c_m] z=[c1,...,cm] y y y为forward propagation的输出结果:
y = w ⋅ z + b y=w·z+b y=wz+b
使用dropout:
y = w ⋅ ( z ◦ r ) + b y=w·(z◦r)+b y=w(zr)+b
其中 r r r 为masking向量。Gradients are backpropagated only through the unmasked units.

L2范数的作用是:L2会让 w w w的每个元素都很小,接近于0,但是不会等于0。而越小的参数模型越简单,越不容易产生过拟合,能防止模型overfit到某个feature上。


Model Variations

  • CNN-rand: 所有单词的词向量都是随机初始化的,然后在训练过程中进行训练。
  • CNN-static: 使用word2vec预先训练好的词向量模型。所有的词 (包括随机初始化的未出现的词 ) 保持静态,即使用静态词向量。只有模型的其他参数被训练。
  • CNN-non-static: 与上面相同,但是预训练的词向量针对每个不同任务进行微调(fine-tune)(也就是训练)。
  • CNN-multichannel: 两套词向量构造出的句子矩阵作为两个通道,在误差反向传播时,只更新一组词向量,保持另外一组不变。

Resultes


Others

why multichannel

We had initially hoped that the multichannel architecture would **prevent overfitting **( by ensuring that the learned vectors do not deviate too far from the original values ) and thus work better than the single channel model, especially on smaller datasets.

sampling

对于一些不在预训练词向量中的词,论文中给出了一种sampling的方法:

这里将这些初始化的词向量每一维度的数值在服从 U [ − a , a ] U[-a,a] U[a,a] 均匀分布中sampling,让其方差和预训练词向量的方差一致,实验效果得到一定的提升。

均匀分布的期望方差计算公式:

X X X 服从 U [ a , b ] U[a,b] U[a,b] 分布,则 E ( X ) = a + b 2 E(X)=\frac{a+b}{2} E(X)=2a+b D ( X ) = ( b − a ) 2 12 D(X)=\frac{(b-a)^2}{12} D(X)=12(ba)2

textCNN一般的结构图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 卷积神经网络 (Convolutional Neural Networks, CNN) 是一种常用于文本分类的深度学习模型。它通过卷积和池化层来提取文本中的特征,并使用全连接层来进行分类。 CNN 的一个优点是能够处理变长的输入,并且不需要对文本进行预处理。 ### 回答2: 卷积神经网络是一种深度学习方法,用于对文本进行分类。在训练过程中,这种网络可以自动学习输入数据的特征表示。卷积神经网络中的卷积层可以识别输入中的局部模式,这些局部模式组合起来形成更高级别的特征,最终帮助分类器确定类别。对于文本分类问题,卷积神经网络的输入是文本的词嵌入向量,可以从先验知识中自动学习特征。 在一些文本分类任务中,卷积神经网络已经取得了很好的表现。文本分类任务通常被分为两种类型:二元分类和多分类。二元分类任务是指将数据分为两类,例如垃圾邮件和非垃圾邮件。多类分类任务是指将数据分为多类,例如新闻分类。在这两种任务中,卷积神经网络都能够进行有效的分类。 对于二元分类任务,卷积神经网络可以使用一个输出节点,并使用 sigmoid 激活函数将输入映射到 0 到 1 之间的概率。对于多分类任务,卷积神经网络可以使用多个输出节点,每个节点对应一个类别,并使用 softmax 激活函数将输入映射到 0 到 1 之间,并且所有输出节点的和为 1。 要训练卷积神经网络进行文本分类,需要对模型进行三个主要的训练步骤。首先,需要构建词嵌入矩阵,该矩阵将文本中的每个词都映射到一个向量。然后,需要将文本数据转换为卷积神经网络所需的格式。最后,需要对模型进行训练,并根据测试数据进行评估。 总之,卷积神经网络已经被证明是一种强大的工具,可以用于文本分类等任务。在处理文本数据时,卷积神经网络可以自动学习输入数据的特征表示,并使用这些特征来确定文本的类别。 ### 回答3: 卷积神经网络(CNN)是一种深度学习模型,它在图像识别、计算机视觉和自然语言处理中表现出色。最近几年,CNN 在句子分类中也获得了很大的成功。 CNN 句子分类模型的输入是一个序列,输出是类别标签。与传统的 RNN 模型不同之处在于,CNN 可以使每个神经元只能捕获一个固定大小的区域的特征,从而加快模型的训练和降低了模型的复杂度。 CNN 句子分类模型的基本架构包括词嵌入层、卷积层、池化层和全连接层。词嵌入层将输入的文本转化为向量表示。卷积层通过滑动窗口对输入的序列进行卷积操作,提取出局部特征。池化层在每个滑动窗口上提取出一个最大值或平均值,进一步降低维度。最后,全连接层将提取出的特征传递到输出层进行分类。 CNN 句子分类模型的优点在于它可以处理不定长的文本序列,并在仅有少量特征的情况下表现出色。但是,CNN 模型的缺点在于不善于处理长期依赖关系,例如情感分析中的Irony识别。为了解决这个问题,可以引入 RNN 或 Transformer 等模型。 总的来说,CNN 模型为句子分类问题提供了一个简单有效的解决方案。在实践中,需要根据具体的任务选择合适的模型结构和参数设置,才能取得最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值