在多层感知器中,每层输入的各个元素都需要乘一个独立的参数(权重),这一层又叫全连接层/稠密层
在自然语言处理任务中,如对于情感分类任务,句子的情感极性往往由个别词或短语决定,而这些决定性的词或短语在句子中的位置并不固定,使用全连接层很难捕捉这种关键的局部信息。
为了解决以上问题,一个非常直接的想法是使用一个小的稠密层提取这些局部特征。为了解决关键信息位置不固定的问题,可以依次扫描输入的每个区域,该操作又被称为卷积操作。其中,每个小的、用于提取局部特征的稠密层又被称为卷积核或者滤波器。
卷积操作输出的结果还可以进行进一步聚合,这一过程被称为池化操作。常用的池化操作有最大池化(仅保留最有意义的局部特征)、平均池化和加和池化等。池化解决样本输入大小不一致的问题。
在进行卷积操作时,可以使用多个卷积核提取不同种类的局部特征。
卷积核的构造方式大致有两种,一种是使用不同组的参数,并且使用不同的初始化参数,获得不同的卷积核;另一种是提取不同尺度的局部特征,如在情感分类中提取不同大小的N-gram。
多个卷积核输出多个特征,再经过一个全连接的分类层做出最后的决策。
最后,可以将多个卷积层加池化层堆叠起来,形成更深层的网络,这些网络统称为卷积神经网络CNN。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zoBQeoCM-1661613321436)(%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86.assets/b1cb4d26977d4059b11c679a0c6a5b95.png)]
输入“我 喜欢 自然 语言 处理”6个词,首先每个词映射为一个词向量(dim=5)
使用4个卷积核对输入进行局部特征提取:
其中前两个卷积核的宽度(N-gram中N的大小)为4(黄,蓝)
后两个卷积核宽度为3(绿,红)
卷积操作**沿单一方向(一维卷积,适用于自然语言等序列)**每次滑动1个词,每个卷积核输出长度为L-N+1,其中L为单词个数,N卷积核宽度;(图像等序列适用于二维卷积:横向和纵向滑动)
经过全序列的最大池化操作,将不同卷积核输出分别聚合为1个输出,再拼接为一个特征向量
最后经过全连接层分类
卷积神经网络:输入层->隐含层->输出层(单向流动——前馈神经网络Feed-Forward Network,FFN)
自然语言处理中常用一维卷积Conv1d(in_channels,out_channels,kernel_size)
[CNN.ipynb](http://localhost:8888/notebooks/pre-trained model approach NLP/CNN.ipynb)