《神经网络和深度学习》第六章——深度学习

CNN

充分利用空间特征。

  • 局部感受野
    隐藏层中每个神经元链接到输入神经元的一个小区域。

  • 共享权重和偏置
    即是应用相同的特征检测器。因此也可以很好的适应图像的平移不变性。
    我们有时候把从输入层到隐藏层的映射称为一个特征映射。我们把定义特征映射的权重称为共享权重。我们把以这种方式定义特征映射的偏置称为共享偏置。
    共享权重和偏置经常被称为一个卷积核或者滤波器。

  • 混合层(pooling layers)
    混合层通常紧接着在卷积层之后使用。用于简化从卷积层输出的信息。

一些常用的混合程序:

  • 最大值混合(max-pooling):取最大值
  • L2混合(L2-pooling):取激活值平方和的平方根

一个使用5×5局部感受野和3个特征映射,以及应用于2×2区域的最大值混合层如下所示:

[TBC]卷积网络中的反向传播?

CNN实践

  • 加入第二个卷积-混合层
    地一个卷积-混合层的输出是经过抽象和凝缩过的版本,但仍然有大量的空间结构。因此使用第二个卷积-混合层是有意义的。
    以上例来说,输出是3×12×12,那么第二个卷积层的局部感受野应该是3×k×k。也就是说使用前面所有混合层数据。这是一个需要注意的地方。

  • 切换激活函数
    tanh,relu等。

  • 扩展训练数据

  • 插入额外的全连接层

  • 使用组合网络
    训练多个网络进行投票

  • 对全连接层进行dropout
    卷积层先天可以抵抗过拟合。原因是共享权重意味着卷积滤波器被强制从整个图像中学习。这使他们不太可能去选择在训练数据中的局部特质。于是就很少有必要来应用其他规范化,例如弃权。

为什么我们能够训练

我们是如何克服不稳定的梯度问题的?

  • 使用卷积层极大的减少了这些层中的参数的数目,使学习的问题更容易
  • 使用更多强有力的规范化技术(尤其是弃权和卷积层)来减少过度拟合
  • 使用修正线性单元而不是S型神经元,来加速训练 [TBC]?
  • 使用GPU并愿意长时间训练

以及其他技巧:

  • 使用充分大的数据集(避免过拟合)
  • 使用正确的代价函数(避免学习减速)
  • 使用好的权重初始化(避免神经元饱和和其引起的学习减速)

[TBC]一些问题

  • 对relu使用sigmoid函数的初始化方法会怎么样?

  • 前面不稳定的梯度问题是针对sigmoid函数讨论的,对relu,会有什么差异?