痴情的煎饼 · WEBP 转 PDF 转换器 - 免费在线转换工具· 2 月前 · |
大鼻子的大熊猫 · SCENIC+ motif ...· 3 月前 · |
单身的斑马 · wpf中datagrid数据绑定很慢如何处理 ...· 3 月前 · |
谈吐大方的楼房 · ASP.NET Core ...· 5 月前 · |
爱旅游的保温杯 · MySql空间数据,多边形区域是否包含点_m ...· 6 月前 · |
卷积神经网络是一种前馈型神经网络, 受生物自然视觉认知机制启发而来的. 现在, CNN 已经成为众多科学领域的研究热点之一, 特别是在模式分类领域, 由于该网络避免了对图像的复杂前期预处理, 可以直接输入原始图像, 因而得到了更为广泛的应用. 可应用于图像分类, 目标识别, 目标检测, 语义分割等等. 本文介绍可用于图像分类的卷积神经网络的基本结构.
深度学习是一种特殊的机器学习,通过学习将世界使用嵌套的概念层次来表示并实现巨大的功能和灵活性,其中每个概念都定义为与简单概念相关联,而更为抽象的表示则以较不抽象的方式来计算。
上面是一个简单的 CNN 结构图, 第一层输入图片, 进行卷积(Convolution)操作, 得到第二层深度为 3 的特征图(Feature Map). 对第二层的特征图进行池化(Pooling)操作, 得到第三层深度为 3 的特征图. 重复上述操作得到第五层深度为 5 的特征图, 最后将这 5 个特征图, 也就是 5 个矩阵, 按行展开连接成向量, 传入全连接(Fully Connected)层, 全连接层就是一个 BP 神经网络. 图中的每个特征图都可以看成是排列成矩阵形式的神经元, 与 BP神经网络中的神经元大同小异. 下面是卷积和池化的计算过程.
对于一张输入图片, 将其转化为矩阵, 矩阵的元素为对应的像素值. 假设有一个
3
×
3
的特征图. 卷积核也称为滤波器(Filter).
具体的操作过程如下图所示:
黄色的区域表示卷积核在输入矩阵中滑动, 每滑动到一个位置, 将对应数字相乘并求和, 得到一个特征图矩阵的元素. 注意到, 动图中卷积核每次滑动了一个单位, 实际上滑动的幅度可以根据需要进行调整. 如果滑动步幅大于 1, 则卷积核有可能无法恰好滑到边缘, 针对这种情况, 可在矩阵最外层补零, 补一层零后的矩阵如下图所示:
可根据需要设定补零的层数. 补零层称为 Zero Padding, 是一个可以设置的超参数, 但要根据卷积核的大小, 步幅, 输入矩阵的大小进行调整, 以使得卷积核恰好滑动到边缘.
一般情况下, 输入的图片矩阵以及后面的卷积核, 特征图矩阵都是方阵, 这里设输入矩阵大小为 w ′ = s ( w + 2 p − k ) + 1
上图是对一个特征图采用一个卷积核卷积的过程, 为了提取更多的特征, 可以采用多个卷积核分别进行卷积, 这样便可以得到多个特征图. 有时, 对于一张三通道彩色图片, 或者如第三层特征图所示, 输入的是一组矩阵, 这时卷积核也不再是一层的, 而要变成相应的深度.
上图中, 最左边是输入的特征图矩阵, 深度为 3, 补零(Zero Padding)层数为 1, 每次滑动的步幅为 2. 中间两列粉色的矩阵分别是两组卷积核, 一组有三个, 三个矩阵分别对应着卷积左侧三个输入矩阵, 每一次滑动卷积会得到三个数, 这三个数的和作为卷积的输出. 最右侧两个绿色的矩阵分别是两组卷积核得到的特征图.
池化又叫下采样(Dwon sampling), 与之相对的是上采样(Up sampling). 卷积得到的特征图一般需要一个池化层以降低数据量. 池化的操作如下图所示:
和卷积一样, 池化也有一个滑动的核, 可以称之为滑动窗口, 上图中滑动窗口的大小为
2
, 每滑动到一个区域, 则取最大值作为输出, 这样的操作称为 Max Pooling. 还可以采用输出均值的方式, 称为 Mean Pooling.
经过若干层的卷积, 池化操作后, 将得到的特征图依次按行展开, 连接成向量, 输入全连接网络.
现在的目标是求出 \delta^{l-1}=\text{conv2}(\text{rot180}(W^l),\delta^l,\text{'full'})\varphi^{\prime}(v^{l-1}) δ l − 1 = conv2 ( rot180 ( W l ) , δ l , ’full’ ) φ ′ ( v l − 1 )
这是一个递归公式. \delta^{l-1}=\sum_{i=0}^N \text{conv2}(\text{rot180}(W_i^l),\delta_i^l, \text{'full'}) \varphi^{\prime}(v^{l-1}) δ l − 1 = i = 0 ∑ N conv2 ( rot180 ( W i l ) , δ i l , ’full’ ) φ ′ ( v l − 1 )
(4)
对于池化层的梯度传递, 情况就简单了一些, 下面以 Max Pooling 为例
图中滑动窗口大小为
\begin{aligned} y_{11}^{l} &=w_{11}^{l} x_{11}^{l-1}+w_{12}^{l} x_{12}^{l-1}+w_{21}^{l} x_{21}^{l-1}+w_{22}^{l} x_{22}^{l-1} \\ y_{12}^{l} &=w_{11}^{l} x_{12}^{l-1}+w_{12}^{l} x_{13}^{l-1}+w_{21}^{l} x_{22}^{l-1}+w_{22}^{l} x_{23}^{l-1} \\ y_{21}^{l} &=w_{11}^{l} x_{21}^{l-1}+w_{12}^{l} x_{22}^{l-1}+w_{21}^{l} x_{31}^{l-1}+w_{22}^{l} x_{32}^{l-1} \\ y_{22}^{l} &=w_{11}^{l} x_{22}^{l-1}+w_{12}^{l} x_{23}^{l-1}+w_{21}^{l} x_{32}^{l-1}+w_{22}^{l} x_{33}^{l-1} \end{aligned}
y
1
1
l
y
1
2
l
y
2
1
l
y
2
2
l
=
w
1
1
l
x
1
1
l
−
1
+
w
1
2
l
x
1
2
l
−
1
+
w
2
1
l
x
2
1
l
−
1
+
w
2
2
l
x
2
2
l
−
1
=
w
1
1
l
x
1
2
l
−
1
+
w
1
2
l
x
1
3
l
−
1
+
w
2
1
l
x
2
2
l
−
1
+
w
2
2
l
x
2
3
l
−
1
=
w
1
1
l
x
2
1
l
−
1
+
w
1
2
l
x
2
2
l
−
1
+
w
2
1
l
x
3
1
l
−
1
+
w
2
2
l
x
3
2
l
−
1
=
w
1
1
l
x
2
2
l
−
1
+
w
1
2
l
x
2
3
l
−
1
+
w
2
1
l
x
3
2
l
−
1
+
w
2
2
l
x
3
3
l
−
1
可以发现, 由于共享权重, 一个权重 \begin{array}{l}{\frac{\partial E}{\partial w_{11}^{l}}=\frac{\partial E}{\partial y_{11}^{l}} \frac{\partial y_{11}^{l}}{\partial w_{11}^{l}}+\frac{\partial E}{\partial y_{12}^{l}} \frac{\partial y_{12}^{l}}{\partial w_{12}^{l}}+\frac{\partial E}{\partial y_{21}^{l}} \frac{\partial y_{21}^{l}}{\partial w_{21}^{l}}+\frac{\partial E}{\partial y_{22}^{l}} \frac{\partial y_{22}^{l}}{\partial w_{22}^{l}}} \\ {=\delta_{11}^{l} x_{11}^{l-1}+\delta_{12}^{l} x_{12}^{l-1}+\delta_{21}^{l} x_{21}^{l-1}+\delta_{22}^{l} x_{22}^{l-1}}\end{array} ∂ w 1 1 l ∂ E = ∂ y 1 1 l ∂ E ∂ w 1 1 l ∂ y 1 1 l + ∂ y 1 2 l ∂ E ∂ w 1 2 l ∂ y 1 2 l + ∂ y 2 1 l ∂ E ∂ w 2 1 l ∂ y 2 1 l + ∂ y 2 2 l ∂ E ∂ w 2 2 l ∂ y 2 2 l = δ 1 1 l x 1 1 l − 1 + δ 1 2 l x 1 2 l − 1 + δ 2 1 l x 2 1 l − 1 + δ 2 2 l x 2 2 l − 1
\begin{array}{l}{\frac{\partial E}{\partial w_{12}^{\prime}}=\delta_{11}^{l} x_{12}^{l-1}+\delta_{12}^{l} x_{13}^{l-1}+\delta_{21}^{l} x_{22}^{l-1}+\delta_{22}^{l} x_{23}^{l-1}} \\ {\frac{\partial E}{\partial w_{21}^{l}}=\delta_{11}^{l} x_{21}^{l-1}+\delta_{12}^{l} x_{22}^{l-1}+\delta_{21}^{l} x_{31}^{l-1}+\delta_{22}^{l} x_{32}^{l-1}} \\ {\frac{\partial E}{\partial u_{2}^{l}}=\delta_{11}^{l} x_{22}^{l-1}+\delta_{12}^{l} x_{23}^{l-1}+\delta_{21}^{l} x_{32}^{l-1}+\delta_{22}^{l} x_{33}^{l-1}}\end{array} ∂ w 1 2 ′ ∂ E = δ 1 1 l x 1 2 l − 1 + δ 1 2 l x 1 3 l − 1 + δ 2 1 l x 2 2 l − 1 + δ 2 2 l x 2 3 l − 1 ∂ w 2 1 l ∂ E = δ 1 1 l x 2 1 l − 1 + δ 1 2 l x 2 2 l − 1 + δ 2 1 l x 3 1 l − 1 + δ 2 2 l x 3 2 l − 1 ∂ u 2 l ∂ E = δ 1 1 l x 2 2 l − 1 + δ 1 2 l x 2 3 l − 1 + δ 2 1 l x 3 2 l − 1 + δ 2 2 l x 3 3 l − 1
根据得到的结果, 可以发现计算 \begin{array}{l}{\frac{\partial E}{\partial b^{l}}=\frac{\partial E}{\partial v_{11}^{l}} \frac{\partial v_{11}^{l}}{\partial b^{l}}+\frac{\partial E}{\partial v_{12}^{l}} \frac{\partial v_{12}^{l}}{\partial b^{l}}+\frac{\partial E}{\partial v_{21}^{l}} \frac{\partial v_{21}^{l}}{\partial b^{l}}+\frac{\partial E}{\partial v_{22}^{l}} \frac{\partial v_{22}^{l}}{\partial b^{l}}} \\ {=\delta_{11}^{l}+\delta_{12}^{l}+\delta_{21}^{l}+\delta_{22}^{l}} \\ {=\sum_{i} \sum_{j} \delta_{i j}^{l}}\end{array} ∂ b l ∂ E = ∂ v 1 1 l ∂ E ∂ b l ∂ v 1 1 l + ∂ v 1 2 l ∂ E ∂ b