终其一生,我们只不过在寻找自己

0%

CS224n-11 CNN在nlp的应用

这一节主要讲cnn在nlp中的应用,然后讲了几篇paper的思路。站在现在看CNN其实对于nlp并没有爆发性的突破,但是CNN也算是提取局部特征的思路,可以学习2017年以前那些人的尝试过程,也蛮有意思吧。

CNN介绍

这些定义和CV里一模一样,简单介绍一下怎么操作的。

  • 为什么要引入CNN?
    因为语言(文本数据)是依托于“短语”组成的“句子”,而对于短语的划分难度较大,倒不如直接暴力的枚举出所有的连续词组当做“短语”。
  • 举个例子:“tentative deal reached to keep government open” 用长度是3的卷积来,就得到了:
    tentative deal reached, deal reached to, reached to keep, to keep government, keep government open这样的新局部组合。
    (最简单的2维卷积)

Filter (Kernel)

文本都是一维K (embedding 长度),所以卷积核也是 C K。C是卷积核长度。

Padding

边缘用0向外扩充,和图像一样。

多个Channel并行

多个卷积核一起工作,和图像一样。

Pooling 池化

最大池化,平均池化等操作。没什么好讲的。

Stride 步长

默认的步长是1,设置了就可以跳跃。

局部池化

例:local max pool

k-max pooling

Dilation 跨越卷积

就是跳着一层,去提取特征。CV也常用吧。

Paper: Single Layer CNN for Sentence Classification 2014

这篇文章上学期我还用过哈哈哈哈哈哈。https://arxiv.org/pdf/1408.5882.pdf

输入是一句话,输出是二分类(正负态度)。下面这张图包含了整个过程。太简单,不解释了。

他也使用了其他技巧比如 Dropout。

L2 constraint s for rows of softmax, s = 3 。 softmax的参数限制到3? 这里是为什么,没懂。

其他技巧

起飞飞飞飞飞:残差网络

另外参考:https://zhuanlan.zhihu.com/p/42706477
其实之前也提到过了,lstm有效就是跨层链接。而对于cell外面,也可以使用这种方法ResNet。应该是在16年左右?当时听到这些名词感觉很神奇,好像作者何凯明还是广州人。 思路如图,就是跨越链接,避免网络太深。

这种思路被验证是有效的。左边没有门控,右边有门控。

这里我有个疑问,为何没有门控的还晚一年。

BatchNorm

另外参考:https://blog.csdn.net/wzy_zju/article/details/81262453
https://www.jianshu.com/p/86530a0a3935
原理就是对于每一个batch正则,保持batch都在相同的分布上,这样会避免internal covariate shift的现象。

具体的原因之后遇到了再深究吧。

1*1 Convolutions

看起来11好像没有任何改变,但是实际上可以控制厚度(filter的数量)。
1、降维( dimension reductionality )。比如,一张500
500且厚度depth为100 的图片在20个filter上做11的卷积,那么结果的大小为500500*20。

2、加入非线性。卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力;

应用举例

seq2seq de enocoder y用cnn

更深,更大,更强: VC-CNN

这个网络是参考的VGGnet,所以就很大,当然表现也有所提升。具体就不细讲了。

QRNN

RNN速度慢必须串行,所以就有了QRNN,来结合CNN提高速度。
参考:https://blog.csdn.net/u011961856/article/details/77431869

具体思路是,把LSTM的三个门控放到CNN的pooling层,做成类似与LSTM的效果。

这节课讲的都是一些high-level的思路,具体的细节还有待揣摩。

-------------    你的留言  是我更新的动力😊    -------------