0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自然语言处理中的卷积神经网络的详细资料介绍和应用

Dbwd_Imgtec 来源:未知 作者:易水寒 2018-08-04 11:26 次阅读

1、传统的自然语言处理模型

1)传统的词袋模型或者连续词袋模型(CBOW)都可以通过构建一个全连接的神经网络对句子进行情感标签的分类,但是这样存在一个问题,我们通过激活函数可以让某些结点激活(例如一个句子里”not”,”hate”这样的较强的特征词),但是由于在这样网络构建里,句子中词语的顺序被忽略,也许同样两个句子都出现了not和hate但是一个句子(I do not hate this movie)表示的是good的情感,另一个句子(I hate this movie and will not choose it)表示的是bad的情感。其实很重要的一点是在刚才上述模型中我们无法捕获像not hate这样由连续两个词所构成的关键特征的词的含义。

2)在语言模型里n-gram模型是可以用来解决上面的问题的,想法其实就是将连续的两个词作为一个整体纳入到模型中,这样确实能够解决我们刚才提出的问题,加入bi-gram,tri-gram可以让我们捕捉到例如“don’t love”,“not the best”。但是新的问题又来了,如果我们使用多元模型,实际训练时的参数是一个非常大的问题,因为假设你有20000个词,加入bi-gram实际上你就要有400000000个词,这样参数训练显然是爆炸的。另外一点,相似的词语在这样的模型中不能共享例如参数权重等,这样就会导致相似词无法获得交互信息

2、自然语言处理中的卷积神经网络

在图像中卷积核通常是对图像的一小块区域进行计算,而在文本中,一句话所构成的词向量作为输入。每一行代表一个词的词向量,所以在处理文本时,卷积核通常覆盖上下几行的词,所以此时卷积核的宽度与输入的宽度相同,通过这样的方式,我们就能够捕捉到多个连续词之间的特征(只要通过设置卷积核的尺寸,卷积核的宽度一般和词向量的长度一致,长度可以去1,2,3这类的值,当取3时就会将3个连续词的特征表示出来),并且能够在同一类特征计算时中共享权重。如下图所示

如上图所示,不同长度的卷积核,会获得不同长度的输出值,但在之后的池化中又会得到相同的长度(比如上面的深红色的卷积核是4 × 5,对于输入值为7 × 5的输入值,卷积之后的输出值就是4 × 1,最大池化之后就是1 × 1;深绿色的卷积核是3 × 5,卷积之后的输出值是5 × 1,最大池化之后就是1 × 1),最后将所有池化后的值组合在一起,这样有一点好处,无论输入值的大小是否相同(输入值行一般不相等,对于输入值列是词向量的长度,一般都是相等,但是行是和文本中词的数量相关的),要用相同数量的卷积核进行卷积,之后再池化就会获得相同长度的向量(向量的长度和卷积核的数量相等),这样再之后就可以用全连接层了(全连接层的输入值的向量大小必须是一致的)。

3、卷积层的最大池化问题

MaxPooling Over Time是NLP中CNN模型中最常见的一种下采样操作。意思是对于某个Filter抽取到若干特征值,只取其中得分最大的那个值作为Pooling层保留值,其它特征值全部抛弃,值最大代表只保留这些特征中最强的,而抛弃其它弱的此类特征(正如上图所示的那样)。

CNN中采用Max Pooling操作有几个好处:

1)这个操作可以保证特征的位置与旋转不变性,因为不论这个强特征在哪个位置出现,都会不考虑其出现位置而能把它提出来。对于图像处理来说这种位置与旋转不变性是很好的特性,但是对于NLP来说,这个特性其实并不一定是好事,因为在很多NLP的应用场合,特征的出现位置信息是很重要的,比如主语出现位置一般在句子头,宾语一般出现在句子尾等等,这些位置信息其实有时候对于分类任务来说还是很重要的,但是Max Pooling 基本把这些信息抛掉了。

2)MaxPooling能减少模型参数数量,有利于减少模型过拟合问题。因为经过Pooling操作后,往往把2D(图像中)或者1D(自然语言中)的数组转换为单一数值,这样对于后续的Convolution层或者全联接隐层来说无疑单个Filter的参数或者隐层神经元个数就减少了。

3)对于NLP任务来说,Max Pooling有个额外的好处;在此处,可以把变长的输入X整理成固定长度的输入。因为CNN最后往往会接全联接层,而其神经元个数是需要事先定好的,如果输入是不定长的那么很难设计网络结构。

但是,CNN模型采取MaxPooling Over Time也有一些值得注意的缺点:首先就如上所述,特征的位置信息在这一步骤完全丢失。在卷积层其实是保留了特征的位置信息的,但是通过取唯一的最大值,现在在Pooling层只知道这个最大值是多少,但是其出现位置信息并没有保留;另外一个明显的缺点是:有时候有些强特征会出现多次,比如我们常见的TF.IDF公式,TF就是指某个特征出现的次数,出现次数越多说明这个特征越强,但是因为Max Pooling只保留一个最大值,所以即使某个特征出现多次,现在也只能看到一次,就是说同一特征的强度信息丢失了。这是Max Pooling Over Time典型的两个缺点。

针对上面提出的两个缺点,通常的解决办法是下面两种池化方法

K-Max Pooling

K-MaxPooling的核心思想是:原先的Max Pooling Over Time从Convolution层一系列特征值中只取最强的那个值,K-Max Pooling可以取所有特征值中得分在Top –K的值,并保留这些特征值原始的先后顺序,就是说通过多保留一些特征信息供后续阶段使用。如下图所示

很明显,K-Max Pooling可以表达同一类特征出现多次的情形,即可以表达某类特征的强度;另外,因为这些Top K特征值的相对顺序得以保留,所以应该说其保留了部分位置信息,但是这种位置信息只是特征间的相对顺序,而非绝对位置信息。

Chunk-Max Pooling

Chunk-MaxPooling的核心思想是:把某个Filter对应的Convolution层的所有特征向量进行分段,切割成若干段后,在每个分段里面各自取得一个最大特征值,比如将某个Filter的特征向量切成3个Chunk,那么就在每个Chunk里面取一个最大值,于是获得3个特征值。如下图所示,不同颜色代表不同段

Chunk-Max Pooling思路类似于K-Max Pooling,因为它也是从Convolution层取出了K个特征值,但是两者的主要区别是:K-Max Pooling是一种全局取Top K特征的操作方式,而Chunk-Max Pooling则是先分段,在分段内包含特征数据里面取最大值,所以其实是一种局部Top K的特征抽取方式。

至于这个Chunk怎么划分,可以有不同的做法,比如可以事先设定好段落个数,这是一种静态划分Chunk的思路;也可以根据输入的不同动态地划分Chunk间的边界位置,可以称之为动态Chunk-Max方法。事实上对于K-Max Pooling也有动态的去获取K的值的方法,表达式如下

s代表的是句子长度,L代表总的卷积层的个数,l代表的是当前是在几个卷积层,所以可以看出这里的k是随着句子的长度和网络深度而改变。

Chunk-Max Pooling很明显也是保留了多个局部Max特征值的相对顺序信息,尽管并没有保留绝对位置信息,但是因为是先划分Chunk再分别取Max值的,所以保留了比较粗粒度的模糊的位置信息;当然,如果多次出现强特征,则也可以捕获特征强度。

如果分类所需要的关键特征的位置信息很重要,那么类似Chunk-Max Pooling这种能够粗粒度保留位置信息的机制应该能够对分类性能有一定程度的提升作用;但是对于很多分类问题,估计Max-Pooling over time就足够了。

4、卷积神经网络在自然语言处理中的应用

最适合CNNs的莫过于分类任务,如语义分析、垃圾邮件检测话题分类。卷积运算和池化会丢失局部区域某些单词的顺序信息,因此纯CNN的结构框架不太适用于PoS Tagging和Entity Extraction等顺序标签任务。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4574

    浏览量

    98753
  • cnn
    cnn
    +关注

    关注

    3

    文章

    327

    浏览量

    21301
  • 自然语言处理

    关注

    1

    文章

    509

    浏览量

    13103

原文标题:自然语言处理之卷积神经网络应用

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于赛灵思FPGA的卷积神经网络实现设计

    ,看一下 FPGA 是否适用于解决大规模机器学习问题。卷积神经网络是一种深度神经网络 (DNN),工程师最近开始将该技术用于各种识别任务。图像识别、语音识别和自然语言
    发表于 06-19 07:24

    卷积神经网络一维卷积处理过程

    。本文就以一维卷积神经网络为例谈谈怎么来进一步优化卷积神经网络使用的memory。文章(卷积神经网络
    发表于 12-23 06:16

    卷积神经网络模型发展及应用

    网络 GhostNet。由于卷积神经网络的一系列突破性研究成果, 并根据不同的任务需求不断改进,使其在目标检测、 语义分割、自然语言处理等不
    发表于 08-02 10:39

    卷积神经网络为什么适合图像处理

    卷积神经网络为什么适合图像处理
    发表于 09-08 10:23

    浅谈图神经网络自然语言处理中的应用简述

    近几年,神经网络因其强大的表征能力逐渐取代传统的机器学习成为自然语言处理任务的基本模型。然而经典的神经网络模型只能处理欧氏空间中的数据,
    的头像 发表于 04-26 14:57 3016次阅读
    浅谈图<b class='flag-5'>神经网络</b>在<b class='flag-5'>自然语言</b><b class='flag-5'>处理</b>中的应用简述

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法

    一。其主要应用领域在计算机视觉和自然语言处理中,最初是由Yann LeCun等人在20世纪80年代末和90年代初提出的。随着近年来计算机硬件性能的提升和深度学习技术的发展,CNN在很多领域取得了重大的进展和应用。 一、卷积
    的头像 发表于 08-17 16:30 923次阅读

    卷积神经网络结构

    卷积神经网络结构 卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,常用于图像
    的头像 发表于 08-17 16:30 883次阅读

    卷积神经网络的应用 卷积神经网络通常用来处理什么

    的前馈神经网络卷积神经网络广泛用于图像识别、自然语言处理、视频处理等方面。本文将对
    的头像 发表于 08-21 16:41 4006次阅读

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点

    和高效的处理方式,CNN已经成为图像识别、语音识别和自然语言处理等领域中的优选技术。CNN对于处理基于网格结构的数据具有天然的优势,因此在处理
    的头像 发表于 08-21 16:41 1945次阅读

    卷积神经网络模型原理 卷积神经网络模型结构

    数据的不同方面,从而获得预测和最终的表​​现。本文将提供有关卷积神经网络模型的工作原理和结构的详细信息,包括其在图像、语音和自然语言处理等不
    的头像 发表于 08-21 16:41 667次阅读

    卷积神经网络的工作原理 卷积神经网络通俗解释

    。CNN可以帮助人们实现许多有趣的任务,如图像分类、物体检测、语音识别、自然语言处理和视频分析等。本文将详细介绍卷积
    的头像 发表于 08-21 16:49 2754次阅读

    卷积神经网络算法原理

    取特征,并且表现出非常出色的性能,在计算机视觉、自然语言处理等领域都有广泛的应用。在本文中,我们将详细介绍卷积
    的头像 发表于 08-21 16:49 776次阅读

    卷积神经网络算法有哪些?

    算法。它在图像识别、语音识别和自然语言处理等领域有着广泛的应用,成为近年来最为热门的人工智能算法之一。CNN基于卷积运算和池化操作,可以对图像进行有损压缩、提取特征,有效降低输入数据的维度,从而实现对大量数据的
    的头像 发表于 08-21 16:50 1167次阅读

    卷积神经网络模型搭建

    卷积神经网络模型搭建 卷积神经网络模型是一种深度学习算法。它已经成为了计算机视觉和自然语言处理
    的头像 发表于 08-21 17:11 622次阅读

    卷积神经网络主要包括哪些 卷积神经网络组成部分

    卷积神经网络主要包括哪些 卷积神经网络组成部分 卷积神经网络(CNN)是一类广泛应用于计算机视觉
    的头像 发表于 08-21 17:15 1115次阅读