卷积神经网络CNN
CNN的应用
什么是卷积(特征提取)
CNN通过“局部连接”和“参数共享”可以更高效地完成图像识别任务
- 局部连接:每个神经元不再和上一层的所有神经元连接,而只和上一层相邻的局部区域内的神经元连接。
- 参数共享:在卷积的过程中,一个卷积核内的参数是共享的。
从数学的角度来看,卷积可以理解为一种类似于加权运算的操作。
在进行卷积操作之前,需要定义一个过滤器(卷积核),其中的每一格都有一个权重值。
卷积的过程是将每个格子中的权重值与图片对应的像素值相乘并累加,所得到的值就是特征图FeatureMap(经过卷积运算后的神经元集合)中的一个值。
注意:
**> - 卷积核的通道数与输入数据的通道数相同
- 卷积核的个数与输出的通道数相同**
Padding的作用
由于过滤器(卷积核)在移动到边缘的时候就结束了,中间的像素点比边缘的像素点参与计算的次数要多。因此越是边缘的点,对输出的影响就越小,我们就有可能丢失边缘信息。
为了解决这个问题,可以进行填充(padding),即在图片外围补充一些像素点,并将这些像素点的值初始化为0。
特征图尺度计算与参数共享
一个卷积核内的参数是共享的
池化的理解
什么是池化
池化相当于对输入数据的高度和宽度进行缩小,通过对数据进行分区采样,把一个大的矩阵降采样成一个小的矩阵,减少计算量,同时可以防止过拟合。
池化的方式
常用的池化方法有最大值池化(max pooling)和平均值池化(average pooling)两种
- 最大值池化(max pooling):在样本中取各区域数据的最大值作为采样后的样本值
- 平均值池化(average pooling): 在样本中取各区域数据的平均值作为采样后的样本值
整体网络架构
经典网络模型
Alexnet
VGG
VGGNet采用了多次堆叠3x3的卷积核,这样做的目的是减少参数的数量。
例如,2个3x3的卷积核效果相当于1个5x5的卷积核效果,因为它们的感受野(输入图像上映射区域的大小)相同。但2个3x3卷积核的参数个数(18个)却比1个5x5(25个)
感受野
ResNet
为了解决深度神经网络存在的问题
· 层数越多,训练效果一定越好吗?
· 如何优化过深的神经网络?
· 如何避免梯度消失和梯度爆炸?
-
ResNet 即深度残差网络,由何恺明及其团队提出
-
ResNet使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思
-
ResNet模型引入残差网络结构,在两层或两层以上的节点两端添加了一条“捷径”,这样一来,原来的输出F(x)就变成了F(x)+x
-
ResNet通过引入残差结构,我们就可以直接使用传统的反向传播对很深的神经网络进行训练,并且收敛速度快,误差小
-
网络越深,梯度消失的现象就越来越明显,网络的训练效果也不好,这样的问题就称为“退化”
-
ResNet通过引入残差结构,很好地解决了"退化"问题
-
退化与过拟合都会使网络预测准确率降低,但两者并不是一回事
RNN
RNN(Recurrent Neural Network),即"循环神经网络",是在基础神经网络模型中增加了循环机制。具体的表现形式为网络会对前面的信息进行记忆并应用于当前的计算中,即当前时刻利用了上一时刻的信息
LSTM
LSTM是Long-Short Term Memory的缩写,中文名叫长短期记忆网络,它是RNN的改进版本
传统的RNN网络来说它的Memory记忆的时间序列会比较短,比如说当你去翻译一句话的时候,你可能一次只能记住3个语境相关的单词,虽然我们设计的时候是有一个语境的buffer在里边,即使我们的Memory会记住你的整个句子的语境,但是实际上做的时候就会发现它只能记住最近的那部分相关的语境
解决梯度离散的问题
解决传统RNN的记忆长度的问题
LSTM的关键就是记忆细胞(在最上面的贯穿水平线上)。记忆细胞提供了记忆的功能,使得记忆信息在网络各层之间很容易保持下去