CNN在NLP中的应用

CNN最初是用于图像分类。因为图像的分类信息往往只是体现在图像的某个局部特征上,而CNN能通过训练,去寻找这个局部特征。CNN在图像里,采用的是2D的卷积,如图所示。
在这里插入图片描述
NLP中,对一段文字进行分类(比如情感分析)时,和图像一样,往往是局部的几个词会体现出要表达文字的情感,因此也可以用CNN进行处理。

和RNN不同,RNN适用于要根据整段话,提炼出相应的信息。因此RNN需要将这段文字进行encoder-decoder处理。CNN则适用于要抓取某几个词判断“情感”的场合。
此外,RNN实际上是“串行处理”,其运行速度较慢。而CNN可以采用并行处理的方式,运行速度比RNN快。

而在NLP中,同样可以把要处理的一句话看成图像。可以将一句话中的多个词排成一列,每一行代表着对应的这个词的词向量。这样,也就把NLP的问题也变成了图像问题,NLP的分类问题也就可以应用图像分类所采用的CNN了。
在这里插入图片描述

关于卷积

当然在NLP的CNN中,采用2D卷积,“横向”挪动卷积核其实是没有意义的。因为词向量本身就是一个完整的向量,不能再“拆”。因此卷积核只能“竖”着移动,这样在NLP中,实际上使用的是1D的卷积。卷积核的“宽度”必须和词向量的长度保持一致。
在图像分类中,输入到CNN的每幅图长宽的像素是一定的,所以同理在NLP中,输入到CNN的句子的长度也必须是定长的,不够长的只能补<pad>。
以下就是采用三个卷积核,采用了padding,并取max_pooling的计算过程。
在这里插入图片描述

max也可以换成avg,但目前并没有证据证明avg的性能比max更好。
max也能换成k-max,但同样也没有证据证明这种方式比max更好。

和图像分类相同,NLP也可以设置卷积时的stride, local-maxpooling等。

CNN数学表述

假设只有一个卷积核。对于由 n n n个单词组成的一句话, x 1 : n = x 1 ⊕ x 2 ⊕ . . . ⊕ x n \mathbf x_{1:n}=\mathbf x_1 \oplus \mathbf x_2 \oplus ... \oplus \mathbf x_n x1:n=x1x2...xn,其中词向量 x i ∈ R k \mathbf x_i \in \mathbb R^k xiRk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值