我是靠谱客的博主 鲜艳小蝴蝶,最近开发中收集的这篇文章主要介绍CNN知识基础以及模型构建,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

卷积神经网络的特性:

  • 局部感知机制:卷积是一个滑动的窗口(卷积核)在图像(image)上根据给定的步距进行移动,每次移动都将窗口内的数值乘以卷积核对应的权重并且相加记录到一个新的矩阵中。局部感知说明其每次对图像的一部分进行压缩。
  • 权值共享:在图像的每一个局部中卷积核的权重不变。
  •  
  • 当图片具有多个维度(通道)时,压缩图片需要对应数量的卷积核,不同纬度的卷积核权值设计可以不同,并且也可以设计多套卷积核。
  • 每个通道的卷积核最终会对应叠加为一个输出特征矩阵,所以卷积输出矩阵的维度取决于用了几套卷积核
  • 偏移量(bias):偏移量实际就是对一套卷积核得到的特征矩阵的数值全部加或减一个数值
  • 激活函数:使得引入非线性函数使得模型有解决非线性问题的能力,例如sigmoid和ReLu。
  • 越界问题:当步长不为1时卷积核在移动时可能会越界,这时可以采用padding(添加一行一列0值像素)来解决

 池化层:对特征图进行稀疏处理,减少运算量(进一步压缩)

  • 与卷积的不同之处在于进行下采样的池化层是以固定大小的卷积核,用平均值或最大值来代替卷积核范围内的图像特征。下采样层无训练参数(权重)、只改变特征矩阵的宽与高,不改变深度(卷积深度与卷积核的个数有关)、池化核大小(poolsize)与步距相同(stride

 反向传播

  •  误差计算:以上图中input=2 output=2的一个三层神经网络为例。其中x为输入参数,w为对应权重;中间为隐藏层,σ代表本层激活函数。在全连接层之前的模型输出y1与y2的值如下表示。

 y1和y2经过softmax激活函数归一化处理,使得o1与o2的和为1(概率)。损失的计算(Cross Entropy Loss 交叉熵损失)一般有两种方式:

 两者的区别可以理解为,前者让所有概率和为1,输出节点之间的概率会互相影响,例如判断是个物品的是(90%)或否(10%);后者节点之间不相互影响,例如判断一个人是男人(50%),是人(100%)。

 以上图为例,计算w11(2)的误差梯度(左下角的公司,Loss对w的偏导即为w的误差梯度)。其中o*代表真实结果,o代表模型预测结果。

 根据左边篮筐内的计算过程(y与w的偏导即是上上图中w11的参数a1)得到结果如上图左侧。

最后根据以上公式,更新w11的梯度,就完成了反向传播。

 注意:

 在实际应用中,由于样本数据库巨大,我们一般分批次(batch)将样本放入求解,此时可能会出现损失梯度指向局部最优解的方向,有可能不向全局最优解方向收敛。此时需要引入优化器(optimazer)的概念,优化器能使得分批训练时损失梯度向全局最优解更快更好的收敛。

  • SGD:增加一个α学习率,缺点是容易被噪声影响,陷入局部最优解
  • SGD+momentum:增加一个动量部分,除了计算当前梯度,还会将之前 的梯度加入进来,使得收敛方向不容易受噪声影响
  • Adagrad:自适应学习率。使得在训练过程中s(分母)越来越大,学习率随着训练次数增加就越来越小。
  • RMSProp:相比上者改进了s的公式,添加了两个系数来控制学习率α的衰减速度。
  • Adam:最复杂,类似以上所有的叠加。包含两个阶的动量,更新权值的计算公式如下图:

转置卷积:

 

 reference:13.1 ConvNeXt网络讲解_哔哩哔哩_bilibili

最后

以上就是鲜艳小蝴蝶为你收集整理的CNN知识基础以及模型构建的全部内容,希望文章能够帮你解决CNN知识基础以及模型构建所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部