【笔记】Understanding Convolutional Neural Networks for NLP

链接敬上:http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/。如侵权请联系我删文。
感谢作者Denny Britz,带领我走进了自然语言处理和卷积神经网络的大门~这篇blog的翻译全网随便搜了,我只是把我的学习记录进行一下总结。(以下基本上是全文的缩减版,无个人添加)

卷积

卷积(kernel、filter、feature detector):应用于矩阵的滑动窗口函数。下图是卷积简单的示意图(具体动图请参看原文)。


卷积示意图.png

举两个很直观的例子。一是用相邻值对每个像素进行平均,可以模糊图像;二是取像素与其邻居之间的差异检测边缘。

卷积神经网络

卷积神经网络基本上是具有非线性激活函数的卷积。可以概括为下面几个部分。

  1. 不完全连接输入层和输出层:将卷积运用在输入层上去计算输出层;
  2. 训练过程中,CNN会根据您要执行的任务自动学习过滤器的值。
  3. 直观来说,可以从像素、边缘形状和形状中更复杂的对象构建边缘。

怎样将CNN运用于NLP?

  1. NLP任务的输入:以矩阵表示的句子或文档,矩阵的每一行都是表示单词的向量。比如,对于使用100维气嵌入的10个字的句子,我们将有一个10×100的矩阵作为我们的输入。
  2. 使用滑过整行矩阵(一个单词)滤波。滤波器的“宽度”通常与输入矩阵宽度相同,高度与区域大小可能有所不同,但一次只能滑动2-5个字以上的窗口。
  3. RNN 似乎比CNN 更适合做NLP。但是,简单的词袋模型虽然明显简化,但常用并且效果不错。

CNN 超参数

宽卷积和窄卷积

这个文本的出现,是为了解决 n*n滤波应用用途矩阵中心效果很好时,边缘的问题。
——>wide convolution:将落在矩阵之外的元素均视为0,获得大小相同或更大的输出;
——>narrow convolution:不使用零填充

步幅大小

步幅是指每一步移动滤波器的距离。通常,步幅越大,输出尺寸越小。通常文献中的步长均为1,但更大的步幅可能允许创建一个与递归神经网络有点相似的模型。

池化层

  1. 应用于卷积层之后 ,合并层对其输入进行二次抽样。二次抽样,即:将它合并到每个过滤器的结果中,并将最大操作应用于此。
  2. 池化的特性:
    a. 提供一个固定大小的输出矩阵(在分类任务中常用)
    b.降低输出维度,但(希望)保留最显著的信息。可以将过滤器
    视为监测特定特征的功能
    c.提供了移位和旋转的不变性。

channels

channels,输入数据的不同“视角”。比如,你可以用不同的词嵌入channels,可以对同一个句子用不同的语言或将其用不同的方式分段。(这一块没太懂……)

将CNN应用于NLP

tips:

  1. 最适合CNN的是分类任务。比如常见的情感分析,垃圾邮件监测,主题分类等。
  2. 但是,卷积和池化操作会丢失本地字词顺序的信息。

很有名案例举几个(部分)

  1. 论文【1】使用各类语言类库来验证一个CNN框架。使用相当简单的网络:输入层-多重filter的卷积层-最大池化层-softmax分类器。还对比了静态词向量和动态词向量。
  2. 从论文【2】【3】得知:直观来看,预训练的词向量在短文本中使用的收获要大于在长文本中使用的收获。
  3. CNN框架需要有许多参数选择。输入表示(word2vec,Glove,one-hot),卷积层的滤波窗口(filter size,filter number),池化的策略(max,average),激活函数(ReLU,Tanh,……)。
  4. 论文【4】对初学者有很好的建议:一是max-pooling的效果比average-pooling的效果好;二是过滤器的大小很重要,依赖于所要完成的任务;三是正则的作用可能有限;四是数据集的语料长度最好相似。

reference

  1. 【1】Kim , Y. (2014). Convolutional Neural Networks for Sentence Classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP 2014), 1746–1751.【http://arxiv.org/abs/1408.5882】
  2. 【2】Johnson, R., & Zhang, T. (2015). Effective Use of Word Order for Text Categorization with Convolutional Neural Networks. To Appear: NAACL-2015, (2011).【http://arxiv.org/abs/1412.1058v1】 & 【3】Johnson, R., & Zhang, T. (2015). Semi-supervised Convolutional Neural Networks for Text Categorization via Region Embedding.【http://arxiv.org/abs/1504.01255】
  3. 【4】Zhang, Y., & Wallace, B. (2015). A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification,【http://arxiv.org/abs/1510.03820】

你可能感兴趣的:(【笔记】Understanding Convolutional Neural Networks for NLP)