TextCNN模型原理

TextCNN模型

简介

CNN,卷积神经网络,最初主要应用于图像识别领域,以局部权值共享的特殊结构隐式地学习大量的输入与输出之间的映射关系,而不用显式地进行特征抽取,在CV与NLP的任务中取得很好的效果。

图像领域中,相关指滤波器模板移过图像并计算每个位置乘积之和的处理,卷积的机理相似,但滤波器首先要旋转180度。由于旋转对参数求解没有帮助,因此在神经网络中用相关代替卷积操作。

基本架构

CNN做NLP任务时,基本模型架构如下:

  • 输入:句子的矩阵表示,若句子长度为 n n ,词向量为 x i x_i ,长度为 k k ,则为一个 n k n * k 的矩阵,表示为:
    x 1 : n = x 1 x 2 . . . x n x_{1:n}=x_1 \oplus x_2 \oplus ... \oplus x_n,\oplus是连接运算

词向量:把对词的高维、稀疏的1-of-V表示通过一个隐藏层映射为低维、稠密的向量,使得相似的词欧式距离或余弦距离更近。

  • 卷积层:使用多个卷积核(feature extractor) w R h k w \in R^{hk} h k h、k 分别为卷积核的高度与宽度,即作用于 h h 个单词上,得到新特征 c i c_i ,有:
    c i = f ( w x i : i + h 1 + b ) c_i = f(w \cdot x_{i:i+h-1}+b)
    卷积核作用到任意可能的窗口(任意连续的h个单词),即对 x 1 : n x_{1:n} 来说:
    w R h k [ x 1 : h , x 2 : h + 1 , . . . , x n h + 1 : n ] c = [ c 1 , c 2 , . . . , c n h + 1 ] , c R n h + 1 卷积核w \in R^{hk}作用于[x_{1:h}, x_{2:h+1},...,x_{n-h+1:n}]\\得到特征映射c=[c_1,c_2,...,c_{n-h+1}],c\in R^{n-h+1}
    卷积核只在高度上滑动,在宽度上和word vector的维度一致,也就是说每次窗口滑动过的位置都是完整的单词,不会将几个单词的一部分“vector”进行卷积,这也保证了word作为语言中最小粒度的合理性

    卷积层之后一般会增加BN层和激活层ReLU

  • 池化层:使用Max-pooling,只取特征向量中最大的值作为最终的特征,即
    c ^ = m a x ( c ) 令\hat c=max(c)作为相应过滤器得到的特征
    这样,我们从每个过滤器中得到一个特征,拼接得到固定维度的特征,作为下一层的输入

  • 全连接层:对前一层的输出, z = [ c ^ 1 , c ^ 2 , . . . , c ^ m ] z=[\hat c_1, \hat c_2, ..., \hat c_m] ,随机丢弃掉一些特征后,再进行运算,即
    y = w ( z r ) + b , e l e m e n t w i s e r R m 1 p y=w\cdot (z \circ r)+b, 其中\circ是element-wise的乘法运算,r \in R^m是每个元素取1的概率为p的向量

  • 输出层:softmax等操作得到最终结果

例子

如下图,假设使用3个window size,每个window size有两个filter,则卷积过程包括:

  • 每个filter与句子矩阵进行卷积(滑动)得到一个向量(称为feature map),如下得到6个向量
  • 每个向量进入池化层(Pooling layer),此处为最大池化,抽取每个向量的特征信息并保持输出维度相同
  • 抽取的特征组合送入softmax层,做dropout、正则化、softmax预测等

特点

  • 平移不变性?

对于图像或句子进行平移后,相同的卷积核进行卷积与池化操作后仍然得到相同的结果。

  • 参数共享机制?

卷积核在遍历图像或句子的每个区域时,权值不变,可以把每个卷积核看成一种特征,则卷积后的结果相当于时整个对象的特征提取。

  • 池化层的作用?

特征降维、防止过拟合、固定输出维度。

  • 待续。。

Reference

[1] https://www.cnblogs.com/skyfsm/p/6790245.html

[2] Convolutional Neural Networks for Sentence Classification

猜你喜欢

转载自blog.csdn.net/qq_36153312/article/details/87936886