自然语言处理中的卷积神经网络 - 自然语言处理与深度学习 7

卷积神经网络(Convolutional Neural Network,简称)是一种在图像中常用的深度学习网络架构。然而,CNN也可以应用在自然语言处理的任务中。本讲座的内容包括:自然语言处理中的CNN的特点、CNN的工作原理以及自然语言处理中的CNN模型变种和改进

讲师:   李嫣然

本讲座的内容包括:


  • 自然语言处理中的CNN的特点:相对于RNN来说,CNN可以提炼语言中的多层次信息,可以考虑多个词汇的各种可能组合,还可以应用于字符甚至像素级别的操作。

  • CNN的工作原理:包括卷积操作、池化操作如何进行,以及什么是特征图(feature map)等问题。

  • 自然语言处理中的CNN模型变种和改进:包括动态池化、可变窗口大小、字符级别的CNN模型、高速公路网络等



Convolutional neural network in NLP 在自然语言处理中的卷积神经网络

 



  • 笔记作者:李丽京


在前面的课程中,我们讲过了如何用RNN——循环神经网络(Recurrent Neural Networks)来做自然语言处理。面对一个句子,RNN的使用不需要考虑语法,对长度也没有要求,因此相对比较容易可以实现:读入-计算-更新权值,不断地计算隐含模式的过程。同时,面对句子按顺序进行计算的过程中,RNN另一个优点就是可以对句子进行长期的信息保留,也就是如果句子头的单词是‘A’,那么当RNN处理到了句子尾部的时候,‘A’依然会被记住。这也是RNN的两个最大的优点。


这节课,我们则介绍用CNN——卷积神经网络(Convolutional Neural Networks)来进行处理。本来,CNN大多用于对图像信息的处理中,它可以提取包含在图像中的多尺度信息,并进行分层处理。然而,我们可以将一句话看作是一个一维的图像,同时我们注意到自然语言中也存在着层级特性。比如任何一句话都是有短语组成,而短语是由单词组成,单词又是由字符组成。CNN擅长的恰恰就是发现这样的层级特性。


CNN和RNN的使用场景是相似的,都是在文本分类中最常用的深度神经网络,并且都是建模在句子级别的表达上,CNN首先是一个自下而上的层级结构,一下子读完固定长度的句子,然后将读入的语句按照一种静态的方式来处理,而不像RNN那样顺序地读入信息动态地完成计算。这两者的区别可以由下图看出来。

左侧为RNN模型,右侧为CNN模型。

 

一、Convolution + Pooling


1、Convolution:

如上图右侧所示,CNN最终把底下的两个或者多个输入汇总变为一个输出,也就是越来越少的过程,这就是卷积Convolutional操作。另一个巨大的区别就是,RNN面对句子的解析是必须按照顺序来的,而CNN不用,它可以对组合进行控制,比如挨着组合,或者跳着组合。比如:“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


上图表示的是一维的convolution的情况。


首先最底下深蓝色的X0,X1代表的是input(输入)放到句子里就是各个词语,中间的绿色的A表示的是convolution的过程,最上面灰蓝色Y0,Y1表示的是output(输出)也就是得到了一个feature或者pattern。


这样,CNN也因此可以得到更多词组的信息,可以考虑到所有可能的组合形式。这也就是Convlutional(卷积)的过程,是CNN的一个非常重要的操作。


由于在输入CNN词语之前,我们通常会先把每个单词表达成词向量。假设词向量是128维,这样我们便可以用一个128个格点,每个格点都有不同大小的数值来形象地表达一个单词。如果一句话的单词个数为10,这样输入给CNN的数据就是一个128*10的二维矩阵。于是,CNN只要对这样的二维信息做处理就好了。在NLP(自然语言处理)中使用的更多都是这样二维的操作,在图像领域都是三维操作,因为是三个RGB通道。


更多内容,请购买课程……

讲师介绍
李嫣然

香港理工大学在读博士生,集智科学家,著名公众号:程序媛的日常 的运营者之一,人称小S。研究方向为自然语言处理中的语义表达和语言生成,致力于利用深度学习、认知科学等相关领域的方法和成果探究人类语言习得和语言表达的奥秘。