深度学习(4)CNN

CNN-门控卷积网络

  • https://zhuanlan.zhihu.com/p/59064623
  • 参数估计
  • ** 卷积神经网络中用1*1 卷积有什么作用或者好处呢?** - 初识CV的回答 - 知乎 https://www.zhihu.com/question/56024942/answer/1850649283

一、参数估计

卷积操作的本质是稀疏交互参数共享

稀疏交互:每个输出神经元仅与前一层特定局部区域内的神经元存在连接权重。物理意义:通常图像,文字、语音等现实世界中的数据都具有局部的特征结构

参数共享:卷积核中的每一个元素将作用于每一个局部输入的特定位置上。物理意义:平移等变性

池化操作:针对非重叠区域,均值池化、最大池化。除了能显著降低参数外,还能够保持对平移、伸缩、旋转操作的不变性。

1.1 正向传播

这里用输入为 \(3 * 3\) 矩阵 \(A^{l-1}\), 步长为 1 , 卷积核为 \(2 * 2\) 矩阵 \(W^{l}\), 输出为 \(2 * 2\) 矩阵 \(Z^{l}\) 的卷积层为 例。矩阵 \(A^{l-1}\) 可以是整个神经网络的输入, 也可以是池化层的输出。这个模型简化为输入层 \(A^{l-1}\) 经 过卷积计算得到特征图 \(Z^{l}, Z^{l}\) 经过激活函数 \(\sigma(x)\) 得到输出层 \(A^{l}\) (实际上在现实工程中很多时候不用激 活函数)。对于第 \(l\) 层, 有下列表达式: \[ \left[\begin{array}{lll} a_{1} & a_{2} & a_{3} \\ a_{4} & a_{5} & a_{6} \\ a_{7} & a_{8} & a_{9} \end{array}\right]^{l-1} \Rightarrow\left[\begin{array}{cc} \omega_{1} & \omega_{2} \\ \omega_{3} & \omega_{4} \end{array}\right]^{l} \Rightarrow\left[\begin{array}{ll} z_{1} & z_{2} \\ z_{3} & z_{4} \end{array}\right]^{l} \Rightarrow\left[\begin{array}{ll} a_{1} & a_{2} \\ a_{3} & a_{4} \end{array}\right]^{l} \]

\[ \left\{\begin{aligned} a_{1}^{l} &=\sum\left(\left[\begin{array}{ll} a_{1} & a_{2} \\ a_{4} & a_{5} \end{array}\right]^{l-1} \cdot\left[\begin{array}{ll} \omega_{1} & \omega_{2} \\ \omega_{3} & \omega_{4} \end{array}\right]^{l}\right)=\sigma\left(\omega_{1} a_{1}^{l-1}+\omega_{2} a_{2}^{l-1}+\omega_{3} a_{3}^{l-1}+\omega_{4} a_{4}^{l-1}+b^{l}\right) \\ a_{2}^{l} &=\sum\left(\left[\begin{array}{ll} a_{2} & a_{3} \\ a_{5} & a_{6} \end{array}\right]^{l-1} \cdot\left[\begin{array}{ll} \omega_{1} & \omega_{2} \\ \omega_{3} & \omega_{4} \end{array}\right]^{l}\right)=\sigma\left(\omega_{1} a_{2}^{l-1}+\omega_{2} a_{3}^{l-1}+\omega_{3} a_{5}^{l-1}+\omega_{4} a_{6}^{l-1}+b^{l}\right) \\ a_{3}^{l} &=\sum\left(\left[\begin{array}{ll} a_{4} & a_{5} \\ a_{7} & a_{8} \end{array}\right]^{l-1} \cdot\left[\begin{array}{ll} \omega_{1} & \omega_{2} \\ \omega_{3} & \omega_{4} \end{array}\right]^{l}\right)=\sigma\left(\omega_{1} a_{4}^{l-1}+\omega_{2} a_{5}^{l-1}+\omega_{3} a_{7}^{l-1}+\omega_{4} a_{8}^{l-1}+b^{l}\right) \\ a_{4}^{l} &=\sum\left(\left[\begin{array}{ll} a_{5} & a_{6} \\ a_{8} & a_{9} \end{array}\right]^{l-1} \cdot\left[\begin{array}{ll} \omega_{1} & \omega_{2} \\ \omega_{3} & \omega_{4} \end{array}\right]^{l}\right)=\sigma\left(\omega_{1} a_{5}^{l-1}+\omega_{2} a_{6}^{l-1}+\omega_{3} a_{8}^{l-1}+\omega_{4} a_{9}^{l-1}+b^{l}\right) \end{aligned}\right. \]

简单来说, 卷积过程就是对应的位置代入函数之后相加求和, 不同的函数有不同的参数 \(w\)\(b\), 我们需 要训练的是卷积核参数, 所以这个公式还可以写做 \(Z^{l}=W^{l} * A^{l-1}+b^{l}, \sigma(x)\) 是激活函数, 我们假设是ReLU函数, 求导比较好求, 所以我们接下来的计算忽略了对激活层的求导。 \[ \sigma(x)=\left\{\begin{array}{lc} 0 & , \quad x<0 \\ x & , \quad x>=0 \end{array}\right. \]

1.2 反向传播

二、CNN - 李宏毅

三、CNN Q&A

3.1 卷积神经网络的卷积核大小、个数,卷积层数如何确定呢?

  • https://cloud.tencent.com/developer/article/1462368

每一层卷积有多少channel数,以及一共有多少层卷积,这些暂时没有理论支撑,一般都是靠感觉去设置几组候选值,然后通过实验挑选出其中的最佳值。这也是现在深度卷积神经网络虽然效果拔群,但是一直为人诟病的原因之一。

3.2 卷积神经网络中用1*1 卷积有什么作用或者好处呢?

  • 卷积神经网络中用1*1 卷积有什么作用或者好处呢? - YJango的回答 - 知乎 https://www.zhihu.com/question/56024942/answer/194997553

image-20220627212030158

降维:Inception结构可以看出,这些1X1的卷积的作用是为了让网络根据需要能够更灵活的控制数据的depth的。

加入非线性。卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力;

1 * 1的卷积就是多个feature channels线性叠加,nothing more!只不过这个组合系数恰好可以看成是一个1 * 1的卷积。这种表示的好处是,完全可以回到模型中其他常见N*N的框架下,不用定义新的层。