0 补课:语义分割——卷积神经网络基础

B站指路:1.1 卷积神经网络基础_哔哩哔哩_bilibili

  • 卷积的特性:

    • 局部感知机制
    • 权值共享
  • 一个普通卷积层示例如下:

    • 卷积核的channel与输入的特征层的channel(比如原图像的RGB三个通道,表示有3个channel)相同
    • 输出的特征矩阵的channel与卷积核的个数相同,如图所示,两个卷积核都有3个通道,输出矩阵的特征是2层,即通道为2。
      0 补课:语义分割——卷积神经网络基础_第1张图片
  • 使用非线性因素——激活函数,使得神经网络可以模拟非线性问题的模型

    • sigmoid激活函数:梯度消失问题严重,当变量取很大的负数或者正数的时候,sigmoid函数接近饱和,函数的导数接近于0,如下图所示,权重基本无法更新,所以当网络层数较深时,靠近输入层的隐藏层权值更新缓慢或停滞更新。

    0 补课:语义分割——卷积神经网络基础_第2张图片

    • relu激活函数:神经元坏死现象,当x<0时,梯度为0,如下图所示,这意味着这个神经元及其之后的神经元的梯度都为0,并且将永远坏死,不能复活。(避免使用很大的学习率,可能会导致很多神经元失活)

      0 补课:语义分割——卷积神经网络基础_第3张图片

      详解参考:温故知新——激活函数及其各自的优缺点 - 知乎 (zhihu.com)

  • 卷积层的矩阵大小

    • 计算公式为: N = ( W − F + 2 P ) / S + 1 N=(W-F+2P)/S+1 N=(WF+2P)/S+1

      输入图像为 W × W W×W W×W,卷积核Filter大小为 F × F F×F F×F,步长为S,padding的像素为P,一般是填充2P。

  • 池化层

    • 没有训练参数
    • 不改变特征层的个数,即channel,只改变特征矩阵的宽和高
    • 一般将池化核大小与步长设置相同
  • 反向传播的过程

    • 文字描述:输入x乘以权重w加上偏置值再经过激活函数处理得到一个网络层的输出yy再经过类似的处理直到最后一层,得到最终的输出z,然后使用zz的真实标签计算出损失Loss(比如说交叉熵),然后对损失函数求导,进行反向传播,要更新的参数是每个隐藏层的权重,也就是要使w是沿着损失下降最快的方向进行更新,那就是损失函数对w求偏导(因为不止一个权重(矩阵)),然后依次求出每一层的的损失对应权重的导数。接下来就是按照怎样的策略来更新这些权重,最简单的方法就是直接 w 新 = w 旧 − l e × 导 数 w_新 =w_旧-le×导数 w=wle×,le是学习率,此表达式表示权重在沿着损失下降最快的方向进行更新,也就是导数为负的方向。

    • 优化:上述更新权重的策略可能会导致进入局部最优,因为使用bach批次训练的损失是沿着当前批次下降最快的方向,并不是全局最优方向。所以使用优化器来更新权重,可以使网络更快地收敛。

      • SGD(Stochastic gradient descent)随机梯度下降: W 新 = W 旧 − α ⋅ 损 失 梯 度 W_新=W_旧-α·损失梯度 W=Wα。易受样本噪声影响;可能陷入局部最优解。收敛慢

      • SGD+Momentum优化器: v t = η ⋅ v t − 1 + α ⋅ g ( w t ) v_t=\eta \cdot v_{t-1}+\alpha \cdot g\left(w_t\right) vt=ηvt1+αg(wt) w t + 1 = w t − v t w_{t+1}=w_t-v_t wt+1=wtvt. η \eta η表示动量系数, g ( w t ) g\left(w_t\right) g(wt),表示损失梯度(t时刻对参数 w t w_t wt的损失梯度), α \alpha α表示学习率。加上动量部分即既考虑当前的梯度,还会将上一次的梯度也加入进来,后可以理解成是在纠正上一次梯度的错误,抑制样本噪声的干扰,如下图所示:
        0 补课:语义分割——卷积神经网络基础_第4张图片

      • Adagrad优化器(自适应学习率):学习率下降太快可能还没收敛就停止训练了。

      • RmSprop(自适应学习率)

      • Adam(自适应学习率):一阶动量;二阶动量一起控制学习率衰减。

你可能感兴趣的:(语义分割,cnn,深度学习,神经网络)