CNN
follow this video
层的类型
在每一层中,都是利用上一层的神经元得到下一层神经元的值。
令
再进行非线性变换:
g是非线性函数,常见的有:
- ReLU(Rectified Linear Unit)函数:
,是神经网络中最常用的激活函数之一。 - Sigmoid 函数:
,它将输入映射到 0 到 1 之间的值,常用于输出层的二分类问题。
- Tanh 函数:
,它将输入映射到 -1 到 1 之间的值,具有零中心化的特性。
卷积层 convolution
二维卷积
n*n image + f*f filter + padding p + stride s
三维卷积
卷积核的通道数需要与图像的通道数相等
池化层 pooling
池化层不用训练参数。
max pooling
选取一个子区域的最大值作为新矩阵的元素
average pooling
取一个区域的平均值,不常用。
全连接层 fully connected
一个卷积网络的实例
一般层越深,图像的高度和深度逐渐减小,通道数会增加。
CNN优势
相较于只用全连接层的神经网络,CNN的参数更少有参数共享和连接的稀疏性
参数共享
特征与特定的位置无关。
A feature detector (such as a vertical edge detector) that is useful in
one part of the image is probably useful in another part of the
image.
对于一个39*39*3的图片,共享一个3*3*3的卷积核,产生37*37*10的输出,参数相较于全连接层大大减小。
连接的稀疏性
In each layer, each output value depends only on a small number of inputs.
经典网络
LeNet-5
特征:
- 一至多个卷积层后跟一个池化层,再是一至多个卷积层,一个池化层。最后是几个全连接层。
- 图片的高和宽不断缩小,通道数增加。
AlexNet

- 与LeNet相似,但规模更大(参数、训练集)
- 使用了ReLU激活函数,效果更好
VGG

特征是简单,规整
Residual Network
在训练神经网络时,梯度消失和梯度爆炸是两个常见的问题。
梯度消失:指的是在反向传播过程中,神经网络的较低层(靠近输入层)往往会受到较小的梯度更新,导致权重更新缓慢,甚至无法更新,从而影响了网络的收敛速度和性能。这种情况通常发生在使用具有小导数的激活函数(如sigmoid、tanh)和较深层次的网络时。
梯度爆炸:相反地,梯度爆炸是指在反向传播过程中某些权重的梯度变得非常大,导致权重更新变得非常大,甚至发散,这通常发生在网络的层数比较多,而且网络结构比较复杂时。
所以使用残差网络,将l层的值越过l+1层,传到l+2层非线性过程中。
为什么ResNet有效?
使用ReLU激活函数的话,有
W和b均为0时,
A demo:
1*1卷积
对某一维的所有通道数进行加权,可以减少通道数,或者增加非线性性。
Inception Network
将1*1、3*3、5*5和池化层糅合到一层里训练
一个问题是计算复杂度高,所以中间引入一次1*1卷积操作,将计算量降低至1/10。
A demo:
U-net
反卷积
卷积减少了图像的长宽,反卷积会增加图像的长宽。
重叠部分值相加即可
结构
先进行普通卷积,压缩输入图像,同时使通道数增加。由于卷积的特性(位置无关),这一步会丧失很多空间信息。
对神经网络的后半部分进行反卷积,将压缩图像恢复到原始输入图像的大小。
同时,由于正常的流程中丧失了空间信息,所以需要增加一个skip-connects,将早期计算层的结果直接复制到后期计算层中。
在最后的过程中,一部分是从上一层获得的高层次的、空间的、复杂背景信息,另一部分是来自skip-connects的高分辨率、底层次的特征信息。
完整的流程图如下:
图中,灰色箭头是将早期卷积结果与上一层反卷积的结果拼一起产生新的结果。