ReID中PCB模型输出维度_CS224N笔记(十一):NLP中的CNN

828115618d2e22c437a4c4eee7d75b3c.png

CNN(Convolutional Neural Network)卷积神经网络在图像处理方面应用很多,这一讲来看看CNN在NLP中的应用。

之前的RNN系统中(不利用Attention的情况下),通常我们用最后的hidden vector来表示整个句子的所有信息,这就造成了信息的瓶颈。而CNN处理的思路是对于所有的子短语,都计算一个特征向量,最后再根据具体的任务将它们结合在一起。

那么,什么是卷积操作呢?对于一维向量

,它们在位置i的卷积为
。其中
被称作filter或kernel即卷积核,而
是卷积核的大小。而二维的情况就是对于矩阵
,在位置i,j的卷积
。多维向量的情况以此类推。

对于NLP,可以看做是二维向量的情况。假设我们输入的每个word vector

即word embedding空间维度为k,而包含n个单词的句子则是
的二维向量
,卷积核为二维向量
,h是一个超参数,可以看做是卷积窗口的大小。而每个未知的卷积的输出就是
,所有的输出可以组合成输出向量
。例如对于如下的例子,word embedding space维度为k=4,输入句子包含n=7个单词。

5b441f6a2f4addadb77cf5d16967b4a4.png

所选取的卷积核维度为3x4,窗口大小为h=3。

dad3e2a6d648c7971fd3d148bc7a35d5.png

卷积操作的输出为n-h+1=5的向量。

f53d87ab02debb90a11aeef0237aec83.png

可以看到,输出相较于输入少了h-1的大小,如果想要维持其原大小(这样可以使我们建立更深的神经网络,否则经过若干层CNN后维度就变为1无法继续加深了),我们需要对输入进行padding,即补上h-1个零向量,如下图所示。

e7692c51b55c46e694c605d153dbe9f2.png

经过padding后,输出向量大小仍为7:

020cf017a2ba9f87c76221026d27f901.png

当然,我们也可以有多个不同的卷积核,分别代表不同特征的提取,它们的维度也可以不同,分别代表unigram, bigram,trigram, 4-gram等的提取。

CNN中还有常用的操作是pooling,其作用是利用附近元素的统计信息来代替其原有的值,其目的是可以使结果在对于输入的小量改变的干扰下保持稳定,常用的有max pooling(选择最大值), average pooling(平均值),k-max pooling(与max pooling类似,但是选择k个最大的值)等。

另外值得一提的是,对于较深的CNN,通常用Batch Normalization来进行优化,关于Batch Normalization,可参考这篇总结:

川陀学者:Batch Normalization深度学习第八章(二)​zhuanlan.zhihu.com
f7c611abec18eb18ad5b5001eb701703.png

当我们用CNN提取出特征向量后,就可以将其输入到其他与任务相对应的函数中,例如对于分类问题,就可以将特征向量到softmax layer 中。

至此,我们可以总结一下之前的各种模型与适用场景:

  1. Bag of words:对于分类问题可以提供一个很好的基础模型,可以在其后添加若干层deep layer进一步改善效果。
  2. Window model:对于不需要有很长的上下文的分类问题适用,如POS(Part of speech), NER(Named Entity Recognition)等问题。
  3. CNN:对于分类问题效果较好,且适合并行计算。
  4. RNN:由于仅利用最后一个特征向量,对于分类问题不一定效果很好,且无法并行计算。但是对于语言模型更为适用,因为包含更多的顺序信息,而且与Attention机制结合效果会更好。

我们能够将RNN的对上下文信息的利用与CNN的并行计算快速的优点结合起来呢?一个这方面的研究是QRNN(Quasi RNN)。

其基本思路是在RNN中,特征提取用LSTM,t时刻的计算需要依赖于t-1时刻的值所以无法并行计算,在QRNN中,我们将特征提取用convolution操作代替,即candidate vector, forget gate, output gate均用卷积来代替:

4ceb4ff6bd226406fd9775b3ae3d2328.png

为了利用上下文信息,QRNN将CNN中的pooling layer用dynamic average pooling来替换:

d54e6816f756361ca77028e54f6cadf8.png

这样,大部分的特征提取发生在convolution layer,而顺序计算仅发生在较为简单的pooling layer中,可以极大的提高计算效率,其整体结构可由下图简要表示:

117022ef6900951185101505bda6bd3f.png

之后的讲座中,我们还会看到仅依赖于Attention机制的Transformer模型,也是希望于解决RNN中的顺序计算瓶颈而采用并行计算的方法。

参考资料

第十一讲讲义http://web.stanford.edu/class/cs224n/slides/cs224n-2019-lecture11-convnets.pdf

补充材料http://web.stanford.edu/class/cs224n/readings/cs224n-2019-notes08-CNN.pdf

第十一讲视频https://youtu.be/EAJoRA0KX7I

QRNN论文 https://arxiv.org/abs/1611.01576

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值