斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)

课程概要

1、卷积神经网络(CNN)

  • 为什么需要在自然语言处理中引入卷积神经网络?
  • 什么是卷积?
  • 单层的卷积
  • 多通道(Multi-channel)
  • 在完成卷积之后,如何进行分类任务?

2、训练技巧
3、CNN的一些变体应用
4、模型比较

一、卷积神经网络(CNN)

1 为什么需要在自然语言处理中引入卷积神经网络?

因为在RNN无法再忽视前文的情况下,获得词组的信息。
卷积神经网络的一个观点是:尝试为每一个词组计算向量。比如““the country of my birth”,我们可以为下面这些词组计算向量the country, country of, of my, my birth, the country of, country of my, of my birth, the country of my, country of my birth。这些词组往往没有什么语言和认知上的合理性。

2 什么是卷积?

一维的离散卷积可以表示为:
斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第1张图片

卷积非常适合从图像中抽取特征,下面的图就是在图像中进行卷积的例子,黄色的部分和红色的数字展示的是卷积的权重,通过对图像上每个像素点进行卷积的计算,可以得到粉色部分的结果,这样就进行了特向信息的提取。

斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第2张图片

3 单层的卷积

单层卷积一般是由卷积层和池化层(pooling) 组成的。
一些符号设定:
斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第3张图片
CNN层的计算:对于一个输入序列,以h长度为窗口,计算ci,计算公式如下:W是前面定义的卷积过滤参数矩阵(需要模型进行训练),b表示偏移量,f表示激活函数。
斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第4张图片
斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第5张图片
池化:对向量C进行池化,取最大的那个数字作为特征。
斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第6张图片
所以一个卷积过滤层就可以得到一个数字作为特征,为了获得更多的特征,我们需要加入更多的卷积过滤层(使用不一样的过滤矩阵W和不一样的窗口长度h)。

4 多通道(Multi-channel)

在模型中单词的向量是预先在word2vec或者是Glove中训练好的,直接放入卷积模型中,会使得这些向量变化破坏之前有的单词之间的相似性,所以单词向量会有一个备份,这部分的备份是静态的,也就是随着训练也不会改变的。

5 在完成卷积之后,如何进行分类任务?

假设一共有m个卷积过滤层,那么分别就会得到m个数字,将其拼接起来作为向量,输入一个softmax层进行预测。
斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第7张图片

最后,卷积整体的过程可以用下面的图表示:

斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第8张图片

二、训练技巧

1 dropout

  • 主要的思想:随机的将特征的一些权重设定为0。可以一定程度上控制过拟合。

  • 实现方法:构建以p为概率的伯努利随机变量向量r,在训练的时候,将r放入计算中。在测试的时候不加入dropout。

  • 效果:根据Kim(2014)的研究,可以使得大型的神经网络有2-4%的准确率提升。
    斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第9张图片斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第10张图片

2 正则(regularization)

一种不怎么常见的正则方法:对softmax权重W的每一行,将其来l2范数限制在s之内。如果其大于s,则重新进行调整。

三、CNN的一些变体应用

斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第11张图片
和RNN结合的机器翻译斯坦福大学-自然语言处理与深度学习(CS224n)笔记 第十三课 NLP中的卷积神经网络(CNN)_第12张图片

四、模型比较

  • Bag of Vectors:对于分类问题而言非常好的基线(baseline)模型,特别是在几层神经网络之后
  • Window Model:对于单个单词分类这种不需要上下文信息的任务比较好
  • CNN:对于分类模型比较好,容易在GPU上并行,很难解释,对于短语计算的时候需要补0以补足长度,不清楚如何进行短语的标注
  • RNN:在认知上是最合理的(从左边读到右边),在分类任务上,比CNN慢,可以进行序列标注和分类

你可能感兴趣的:(CS224,Natural,Language,Processing,w)