CNN通常是用于图像处理,因为CNN的结构与图像处理领域的卷积核很相似,在处理二维的图像数据时可以有效提取图像特征。为什么也可以用到自然语言处理当中呢?
自然语言处理当中,有n-gram模型,用于统计某几个连续的词语序列出现的概率。当观察到前几个单词依次出现时,可以返回在训练语料库中接着出现最多,概率最大的单词。这里的n表示连续的单词数量,通常取2到4个,更多的训练起来就很稀疏了。
如果我们使用一维的卷积核对词语序列进行训练,也可以类似的捕捉到词语序列的特征。比如:狼来了,分别用2, 1, 3的实数向量表示狼,来,了。当卷积核m是[1, 2, 3]的时候就比[-3, -2, 1]与词向量相乘得到更高的分数。
一个句子依次包含词语,形成一个向量。当把m与句子进行卷积的时候,可以提取是否含有该卷机核所包含的语言特征。
这里还是一维的情况,会有无法用实数一一表示词语,因为词语的数量太庞大了。在神经网络模型当中,通常会使用word embedding对词语进行表示。一个单词也会被用一个向量来表示。这时,句子中的单词依次使用词向量表示,一个句子就扩展成一个二维向量。对应的,卷机核要对词向量进行处理,也进行了扩展。
也就成为跟图像卷积相类似的处理形式。
Ref: