CS224n笔记13 卷积神经网络

本文转自:http://www.hankcs.com/nlp/cs224n-convolutional-neural-networks.html

补充了NLP中相对冷门的CNN,谈了谈调参与发论文的潜规则。

从RNN到CNN

  • RNN无法利用未来的特征预测当前单词,就算是bi-RNN,也不过是双向重蹈覆辙而已。

  • 经常把过多注意力放到最后一个单词上。

    hankcs.com 2017-07-03 下午5.11.18.png

  比如,如果只想得到my birth的向量,RNN就无能为力了,因为它捕捉的是从左到右的“上文”。

  • 与此对应,softmax也是加在最后一个单词上的

  CNN的解决思路说来也很简单粗暴,那就计算相邻的ngram,不管它到底是不是真正的短语,眉毛胡子一把抓地为它们计算向量。

什么是卷积

  定义在两个矩阵上的函数,生成另一个矩阵(也许称作tensor会更好)。对一维矩阵(向量来讲),可以形式化地描述如下

 

     这里2M是过滤器的大小。

     在计算机视觉中,卷积可以提取诸如物体边缘之类的特征。一个很棒的可视化:

Convolution_schematic.gif

   更多入门知识参考《理解深度学习中的卷积》

单层CNN

single-conv.png

single-conv-complete.png

hankcs.com 2017-07-04 上午10.11.32.png

双通道词向量=>多个卷积核得到的feature map(红色是bigram,橙色是trigram)=>池化得到最终特征=>softmax分类输出。

dropout

试验结果

hankcs.com 2017-07-04 下午1.57.27.png

  双通道不显著地带来了一点提升。这张对比表也暴露了深度学习学术界公开的“黑幕”,没有人把每个训练trick单独拎出来报告提升比;2014年之前几乎没人用Dropout,可最新发表的论文就是要跟它们比Dropout,却不愿把它们加入Dropout重新实现一遍(可能费时费力还不讨好吧,万一被baseline反杀不就完蛋啦)。事实上,这个结果只能说明Dropout比不Dropout有2-4%的提升,不能说明CNN多有效。

CNN花样

  可以变换很多花样,比如每个feature map是变大了还是变小了,池化技巧等等。

hankcs.com 2017-07-04 下午2.09.13.png

CNN应用:机器翻译

第一个神经网络机器翻译模型吧,用CNN做encoder,RNN做decoder:

hankcs.com 2017-07-04 下午2.10.23.png

到这里就快下课了,Richard草草讲了几句。

模型比较

Bag of Vectors:对分类问题来讲非常棒的基线模型,接几层ReLU甚至可能打败CNN。

Window Model:对单个单词的分类来讲挺好,但不适用于需要更多上下文的任务。

CNN:适合分类,不清楚如何做短语级别的标注,对短文本需要padding,难以用NLP的视角解释,容易GPU并行化

RNN:从左读到右,最符合认知。不是分类任务的最佳选择,比CNN慢,但可以做序列标注。

Quasi-RNN

CNN和RNN的混血儿,在时序数据上做卷积:

hankcs.com 2017-07-04 下午2.17.04.png

比LSTM速度要快,效果要好:

hankcs.com 2017-07-04 下午2.18.46.png

Life is short, but I have a cat.
原文地址:https://www.cnblogs.com/koocn/p/7701699.html