CNN介绍&dropout cs224n

RNN无法做到的事情:

  • can’t capture phrases without prefix context
  • often capture too much of last words in final vector

所以引入了CNN:

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

举个例子:
sentence:the country of my birth
2-ngram:the country/country of/of my/my birth
3-ngram:the country of/country of my/of my birth
这通常会导致:

  • 不符合语法规范噶
  • 不符合阅读的一般认知

卷积

1维卷积/1d 卷积:
( f ∗ g ) [ n ] = ∑ m = − M M f [ n − m ] g [ m ] (f*g)[n] = \sum\limits_{m=-M}^Mf[n-m]g[m] (fg)[n]=m=MMf[nm]g[m]
这里过滤器的大小是2M,其中f是源目标,g是过滤器,移动过滤器2M的距离去想成,计算得分。

2维卷积/2d卷积:
在这里插入图片描述
得 分 = ∑ f i l t e r n u m ∗ 图 像 n u m 得分=\sum filter_{num}*图像_{num} =filternumnum

理解深度学习中的卷积(值得一看)
卷积的形式化描述: 它是一种混合信息的手段,两个装满信息的桶,将一个桶倒入另一个桶中并且通过某种规则搅拌搅拌。也就是说卷积是一种混合两种信息的流程。

卷积的意义: 它就是一种数学运算,跟减加乘除没有本质的区别。虽然这种运算本身很复杂,但它非常有助于简化更复杂的表达式。

卷积核: 卷积是一种操作,卷积核是滤波矩阵。

feature map: 对于输入矩阵,经过滤波器后得到的新的矩阵。

图像卷积意义: 图像中可能含有很多我们不关心的噪音,如果你想要区分衣服的式样,那么衣服的颜色就不那么重要了;另外像商标之类的细节也不那么重要。最重要的可能是衣服的外形。卷积应用经常被称作滤波而卷积核经常被称作滤波器。

卷积神经网络/特征学习: 卷积神经网络,我们赋予参数给这些卷积核,参数将在数据上得到训练。随着卷积神经网络的训练,这些卷积核为了得到有用信息,在图像或feature map上的过滤工作会变得越来越好。
快速傅里叶变换: 一种将时域和空域中的数据转换到频域上去的算法。(一种映射的方法)

NLP中CNN示例

定义:

word vector: x i ∈ R k x_i \in R^k xiRk
sentence vector: x 1 : n = x 1 ⊕ x 2 . . . ⊕ x n x_{1:n}=x_1\oplus x_2...\oplus x_n x1:n=x1x2...xn(向量串联,1-n个词组成的句子向量)
convolution filter: w ∈ R h k w \in R^{hk} wRhk
feature: c i = f ( w T x i : i + h − 1 + b ) c_i=f(w^Tx_{i:i+h-1}+b) ci=f(wTxi:i+h1+b)
feature map: c = [ c 1 , c 2 . . . c n − h + 1 ] c=[c_1,c_2...c_{n-h+1}] c=[c1,c2...cnh+1]

取k=2, n=5, h=3,则如下:
在这里插入图片描述
narrow convolution: 对于前后边缘的词,为了保证其次数的公平性,会在句子的前后补0,这时候得到的就不再是 R n − h + 1 R^{n−h+1} Rnh+1的向量了

池化:

卷积不是最终目的,最终目的是将卷积结果输入到其他网络中去。在不补零的情况下,卷积结果c中有n−h+1个数,与n有关;而我们想要一个定长的输入。
max-pooling:
c ^ = m a x c \hat c=max{c} c^=maxc

其中 c ^ ∈ R \hat c\in R c^R,当然也可以用min,不过ReLU时经常结果是0,所以没什么意义。max的意义是,这个过滤器就是要过滤出最强烈的那个ngram,作为整段话的中心意思。

为了得到多个卷积特征,简单地使用多个卷积核(不需要大小一致),然后把池化结果拼接起来。

分类

最终m个卷积核输出的特征向量是:z=[c1,⋯,cm]
喂给最终的softmax层:y=softmax(W(S)z+b)

图示
一个漂亮的图示:

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

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

dropout()

一种丢弃的方法:randomly mask/drop out/set to 0 for some of the feature。也相当于在数据上采样子集训练模型,然后平均起来(ensemble),通常可以带来2-4%的效果提升。
这些训练trick都相当于给GD引入噪声,让其不再肯定地瞄准一个局部最优,而是尽可能地探索尽可能多的landscape。以前挺有希望的高斯过程调参也不流行了,人们觉得随机采样超参数空间就已经惊人地好用了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值