cnn:卷积神经网络是深度学习技术中极具代表的网络结构之一。cnn相较于传统的算法避免了对图像复杂的前期预处理过程(提取人工特征等),可以直接输入原始图像。
cnn中具有局部连接和权值共享方法,可以降低权值参数数量级。

卷积层:卷积核在上一级输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和(通常还要加上一个偏置参数),得到卷积层上的结果。

池化层:在池化层中,进行压缩减少特征数量的时候一般采用
两种策略:
max pooling:最大池化,一般采用该方式
average pooling:平均池化

正则化和dropout:
Regularization:正则化,通过降低模型的复杂度,通过1cost函数上添加一个正则项的方式来降低overfitting,主要有L1和L2两种方式。
L1:取绝对值 L2:取平方
Dropout:通过随机删除神经网络中的神经元来解决overfitting问题,在每次迭代的时候,只使用部分神经元训练模型获取w和b的值
正则化通过给cost函数添加正则项的方式来解决过拟合,dropout1通过直接修改神经网络的结构来解决过拟合。

池化层误差反向传播:maxpool池化层反向传播,除最大值处继承上层梯度外,其他位置置零。

zero padding:
feature_map尺寸=(width+2*padding_size-filter_size) / stride+1

flatten层&fully connected layer
把数据“拍平”,放到flatten层,然后把flatten层的output放到full connected layer里,采用softmax对其进行分类。

NLP
cnn在nlp领域的论文
《Convolutional Neural Networks for Sentence Classification》
《Character-level Convolutional Networks for Text Classification》
《Very Deep Convolutional Networdk for Text Classification》
《Quasi-Recurrent Neural Networks》

单词——卷积提取特征——池化——全连接(dropout和softmax)
输入层channel可以有static和non-static
nonstatic即使用的词向量是否随训练发生变化。好处是词向量可以根据数据集做适当调整,但数据集较小时不推荐,容易产生过拟合。
static就是直接使用word2vec训练好的词向量。
卷积层:每个卷积核的大小为filter_size*embedding_size,filter_size代表卷积核纵向上包含的单词个数,即认为相邻几个词之间有词序关系。embedding_size是词向量的维数。每个卷积核计算完成后得到一个列向量,代表该卷积核从句子中提取出来的特征。有多少和卷积核就能提取出多少种特征,即纵深方向上channel的数量。
窗口大小就是n-gram,因为参数共享,所以一个filter只能识别同一类特征。
池化层:pooling操作就是将卷积得到的列向量的最大值提取出来,这样pooling后会获得一个num+filters维的行向量,即将每个卷积核的最大值连接起来。如果之前没有对句子进行padding,句子长度不同,卷积后的列向量维度也不同,可以通过pooling来消除句子之间长度不同的差异。一般对每个filter向量都是取最大值,特征跟出现位置无关,只取最强的那个。有多少个filter就决定了池化层的维度。放入softmax的维度必须一样。
全连接层:将poolign层输出的向量转化为想要的预测结果,加上一个softmax层即可,引入dropout或L2正则化以降低过拟合现象