第九讲_Convolutional neural networks
写在前面
记录一下非常好的博客讲解:
[1] CNN 卷积神经网络 https://dorianzi.github.io/2019/04/25/CNN/
卷积神经网络
上述图片引自:https://dorianzi.github.io/2019/04/25/CNN/
卷积神经网络是为了处理图片而生的分类任务
全连接神经网络与卷积神经网络
从卷积的角度理解全连接,从全连接的角度理解卷积
为什么选择 卷积层神经网络 而不用 全连接神经网络
卷积核的作用(优点):①减少了计算量;②减少参数
对于卷积神经网络来说,计算一个输出涉及到的输入数量只与卷积核的大小有关; 对于全连接神经网络来说,计算一个输出需要所有的输出参与计算,大大增大了计算量
卷积神经网络一般使用的激活函数为 Relu,为什么?
卷积神经网络使用的激活函数为 relu,前面学过的神经网络使用的激活函数为 sigmoid,最后一层使用了sotfmax
ReLU(Rectified Linear Unit)函数的数学表达式非常简单,定义如下:
1 |
|
这个表达式的含义是:
当输入 ( x ) 大于0时,输出就是 ( x ) 本身;
当输入 ( x ) 小于或等于0时,输出为0。
计算效率:
- ReLU函数计算非常高效,因为它仅仅是将所有负值设为零,保留正值不变。这种操作在硬件上实现起来非常快,不需要复杂的数学运算如指数或除法,这对于训练深层网络尤其重要,因为可以显著减少训练时间和资源消耗。
缓解梯度消失问题:
- 在深度网络中,当使用像Sigmoid或tanh这样的激活函数时,容易遇到梯度消失的问题,即随着网络层数增加,反向传播时梯度逐渐减小到接近于零,导致底层权重难以有效更新。ReLU函数由于其导数在正区间内恒等于1,可以有效地缓解这一问题,促进梯度的有效传播。
稀疏激活:
- ReLU可以使一部分神经元输出为零,这意味着模型会自动忽略一些不重要的特征,从而实现一种形式的内部特征选择,有助于提高模型的泛化能力,并且使模型更加紧凑。
生物学合理性:
- 从生物学的角度来看,神经元要么活跃要么不活跃,这种二元行为与ReLU函数的行为相似,因此ReLU也符合大脑神经元工作的某些假设。
从全连接的角度理解卷积神经网络:稀疏的全连接神经网络:
不管是全连接神经网络还是卷积神经网络,本质上都是多元复合函数!
根据卷积核以及输入图片的大小判断输出图片大小的公式:
Padding 操作:
卷积操作会导致输出图片的大小发生变化,所以需要padding操作:让输入尺寸与输出尺寸保持一致
计算量的大小比较:
利用卷积神经网络实现边缘检测
有点类似在ROS2实验课上做的边缘检测算法,原理都差不多
卷积是能够提取特征的
为了丢掉不必要的信息,引入池化层的概念:
经验:最大池化比平均池化效果会好一点
卷积神经网络帮助我们提取特征,进行分类工作,可以理解为特征提取器
卷积神经网络的损失函数同前面学过的交叉熵损失函数
卷积神经网络反向传播
先后经过:softmax、池化层、relu、卷积层:
(1)softmax
(2)池化层
(3)relu
(4)卷积层,卷积层的反向传播有点复杂
卷积层反向传播的规律
多层CNN的卷积结构
卷积核的通道数需要与输入的通道数相匹配,输出的通道数与卷积核的个数相匹配
这里的偏置结构有点问题,应该是有三层的结构,与输出的结构一模一样,与输出对应
当遇到多通道卷积网络时,需要考虑稍微多一点点内容
img2col
第一种结构的优化相对会更好一点,各有优劣