美文网首页
2019-05-29(卷积单元—更新中)

2019-05-29(卷积单元—更新中)

作者: 雨住多一横 | 来源:发表于2019-05-29 15:13 被阅读0次

卷积神经网络的基本模块

视觉基本问题:图像分类、目标识别、目标检测、图像分割、目标分割。

卷积层

  • 卷积运算:对应位置相乘结果在相加
  • 如果不考虑反卷积(转置卷积)的话,常用的卷积方式有两种,一种是Valid,一种是SAME,下面将分情况讨论这个问题(下面特征图大小的计算场景为:n * n的图片经过f * f的卷积核以步长为s、padding为p卷积运算后特征图的大小)
  • Valid方式:这种方式的话,待处理图片不做padding处理,卷积过程中,如果图像剩余的像素数量不能够覆盖卷积核的大小,则放弃这部分像素
    特征图大小的计算:
    width = \left ( (n - f ) + 1\right ) /s
    height = \left ( (n - f ) + 1\right ) /s
  • SAME方式:
    这种方式卷积的卷积过程中,对图像进行了padding操作(在图像周围补一圈0),这样做是为了保证所有的像素都参与卷积,如何保证你呢?设置p(padding的圈数)为(f - 1) / 2
    特征图大小的计算方式:
    width = \left ( (n - f + 2*p) + 1\right ) /s
    height = \left ( (n - f * 2*p) + 1\right ) /s
    需要注意的是,SAME并不能保证卷积的输出和源图片大小相同,只有stride为1且卷积方式为SAME时卷积输出才和原图等大。SAME方式卷积特征图大小的计算方式还有一个更加通用的公式:
    width = W/S
    height = H/S
  • 卷积间隔(dilation):卷积对于输入数据体的空间间隔表示隔几个数据体做一次卷积
  • 分组卷积(groups):表示输出数据体深度和输入数据体深度上的联系,group = 1表示输出和输入是全链接的,group = n表示出入和输出被分为n组,每组的输入和输出是全链接的。

池化层

池化层的输入一般是圈基层,其作用是试特征具有鲁棒性,同时减少参数的数量,进而防止过拟合的发生。池化层没有参数,所以反向传播时只需对输入参数求导,不需要进行权值更新

  • 池化层的反向传播:
    • max-pooling:
      这种情况下,只有最大值对下一层有贡献,所以应该将残差传递到对应的位置,其他的位置置0,所以在进行前向计算时就应该记录下最大值在pooling窗口中的位置。
    • mean-pooling:
      这种情况下,所有值对下一层有贡献,反向传播时需要将残差分成n * n份(n为pooling的边长),分别传递到上一层即可。

激活函数

  • sigmoid函数:
    表达式:
    \sigma \left ( x \right )=\frac{1}{1 + e^{-x}}
    导数:
    \sigma \left ( x \right )' = \sigma \left ( x \right )\left ( 1 - \sigma \left ( x \right ) \right )
    总结:
    • 优点
      1、最大的优势是容易求导
      2、将值映射到0~1之间,很像概率
    • 缺点
      1、指数运算拖慢了运算速度
      2、函数输出不以0为中心,这导致了权重更新速率下降
      3、sigmoid有一个梯度饱和区,这是深度学习中梯度弥散的基本原因
  • tanh函数:
    表达式:
    tanh(x) = \frac{sinh(x)}{conh(x)}=\frac{e^x - e^{-x}}{e^x + e^{-x}}
    导数
    tanh(x)' = 1 - (tanh(x))^2
    总结:
    tanh是双正切函数,tanh函数和sigmoid函数比较相近的,一般在二分类问题中,隐藏层用tanh函数激活,输出层用sigmoid函数激活,不过这也不是一成不变,仍需具体问题具体分析。
    • 优点:
      1、易求导
      2、将值映射到-1~1之间
    • 缺点:
      1、和sigmoid一样,存在梯度饱和区,也会引起梯度弥散
  • ReLU函数:修正线性单元
    表达式:
    f(x) = max(0, x)
    求导:
    x > 0:导数为1
    x <= 0 : 导数为0
    总结:
    • 优点:
      1、易求导
      2、输入为正数时,不存在梯度饱和区
      3、运算速度快
    • 缺点:
      1、输入小于等于0时,ReLU完全不被激活,这在前向传播时无伤大雅,甚至会降低过拟合,但是反向传播时,就会出现和sigmoid和tanh一样的问题,即:梯度弥散
      2、ReLU的输出要么是0,要么大于0,可见它也不是以0为中心,会拖慢参数更新速率
  • ELU函数
    表达式:
    f(x) = \left\{\begin{matrix} x & , x > 0\\ \alpha \left (e^x - 1 \right ) &, x \leq 0 \end{matrix}\right.
    图像:
    来源

总结:
ELU是针对ReLU的改进,从图像可以看出,为负的情况ELU仍会被激活,不过仍会有梯度饱和的问题,并带来了指数运算。

  • PReLU(Leaky ReLU)函数
    表达式
    f(x) = max(ax, x)
    总结:
    PReLU也是针对ReLU的一个改进,避免了ReLU在负数区死掉的问题,和ELU相比也具有一定的优势
  • softmax函数

以上所有激活函数各有优缺点,需要我们在实际中通过实验决定具体运用。

卷积层和全连接层

  • 卷积层变为全连接层,只需要把权重变化为一个巨大的矩阵,其中大部分都是0除了一些特定的区块(局部感知)很多区块的权值还相同(权值共享)
  • 全连接层变为卷积层,k=4096的全连接层,输入层大小为7 * 7 * 512,它等效为一个F = 7,P = 0, S = 1, K = 4096的卷积层,此时filter size正好为输入层的大小。

相关文章

网友评论

      本文标题:2019-05-29(卷积单元—更新中)

      本文链接:https://www.haomeiwen.com/subject/eqrytctx.html