均为个人学习理解笔记,不当之处欢迎指正。
史上最小白之CNN 以及 TextCNN详解
https://blog.csdn.net/Tink1995/article/details/104528624?spm=1001.2014.3001.5502
CNN卷积神经网络:输入层、卷积层、激活层、池化层、全连接层
1、输入层
需要对原始数据进行预处理:
去均值:减去维度的均值。减下参数,增大精度,避免错过最优点。
归一化:除以标准差。增加均衡度,加快查找最优点速度。
原因:加快梯度下降训练迭代速度,加速达到收敛。
2、卷积层
含有卷积核和滑动窗口。可以通过增加padding,增加局部计算次数,获取更多有效信息。
注:filter也就是过滤器,在一些文档中filter就等于卷积核,两者没有区别,但是在TensorFlow中filter还包含了卷积核的个数,即上面图中2个卷积核表示1个filter
3、ReLU激活层
将原本的线性函数转换成非线性函数,从而解决一些非线性问题。
如果需要输出的是二分类可以尝试sigmoid,因为在神经网络的反向传播中,使用sigmoid函数会出现梯度消散的问题,所以一般不使用。而是使用相当于是输出为2类的特殊的softmax。
CNN一般都是采用ReLU激活函数
4、池化层
用于压缩数据和参数的量,降噪,减小过拟合。
主要使用两种方法:Max pooling每个范围块内取最大值 和 average pooling每个范围块内取平均值。
5、全连接层
与传统神经网络一样
——*******************************************************************************************************************
TextCNN结构:嵌入层embedding layer、卷积层CONV layer、激励层ReLU layer、池化层 Pooling layer、全连接层 FNN layer
1、嵌入层
不需要对词向量进行预处理,可以使用word2vec或者Golve
2、卷积层
二维数据,相当于CNN中的一个feature map。
由于词向量只表征他对应的一个词,被切割之后是没有意义地,所以feature map中在同一行的数据是不能被滑动窗口给切割地,所以卷积核的维度,长可以自己设置,宽为词向量的维度,可以设置多个卷积核,采用不同长,同一宽。相当于,Language Model中的N-gram模式,这样能够表达词语的上下文信息。
3、池化层
对生成的每一个output feature map 取max最大值 ,然后把所有的outputs feature map 池化后的数据进行级联,得到最后的特征表达。
4、激励层,同上
4、全连接层,同上