pos机cnn怎么看(cmu nlp 2019 第4课 -- cnn)

快鱼网 15 0

涉及13章和第4节课

问题引入

问题:我们想对一个句子做情感分类,判断这个语句表达了什么情绪。

最后一层是一个softxmax的多分类,在这之前我们就需要先对每个句子进行表示,下面是一些表示方法。

Bag of Words (BOW)

Continuous Bag of Words (CBOW)

Deep CBOW

上面这三种方法对句子的表示都是认为单词之间是独立的,没有考虑单词之间的组合关系。

我们可以知道句子中有hate,not,但是not hate组合起来就是完全另一种一种意思了,所有我们需要去学习这种单词之间组合的关系。

Bag of n-grams

上面的解决方案是:我们对2-gram和3-gram都分别进行embedding,这种简单的方法能够捕捉 not the best 和 don’t love 这些词组合,但是问题是:

导致词典巨大相似n-gram之间没有共享

因此为了解决找寻n-gram之间的关系,于是引入了 convolution ,下面来理解下卷积。

基本卷积操作+pooling

上面操作的用公式来描述就是:

其中?就是向量concat操作。

下面再来介绍 Narrow vs. Wide Convolutions

narrow对于n个单词,窗口大小是k的,会产生 n-k+1 个向量

wide对于n个单词,窗口大小是k的,两边补上k-1个单词,会产生n+k-1向量。

channels

在图像领域有channel的概念,在nlp中,我们可以这么理解,单词本身的词embedding是一个channel,单词的pos tag组成另一个channel,此时我们可以将这两个向量concat起来作为一个新的向量。

Pooling

在对句子使用卷积操作产生向量后,我们下一步需要对这些向量进行pooling操作得到一个向量,常见的pooling方法有:

Max-pooling

Average Pooling

K-max Pooling

Dynamic Pooling

我们针对一个句子,可能句子中不同位置的单词需要单独分组,然后进行pooling,然后在组成一个新向量。

对上面4种pooling方法的一个解释:

ALTERNATIVE: FEATURE HASHING

针对n-gram组合太多的问题,我们可以对n-gram使用hash,然后hash_value % VOCAB_SIZE 的方法得到embedding向量,具体的使用方法可以看 Bag of tricks for e?cient text classi?cation 。

Stacked Convolution

我们在一层卷积之后再接一层卷积,这样能捕捉更远词之间的深层次联系,示意图:

一层一层加卷积的目的是捕获更大窗口中单词的联系,为了能够更快的加大窗口,我们可以不断加大stride,一个方案如下:

具体的文章看:Kalchbrenner et al. 2016

标签: 向量

抱歉,评论功能暂时关闭!