十五、卷积神经网络(2):卷积神经网络的结构

本篇博客主要内容参考图书《神经网络与深度学习》,李航博士的《统计学习方法》National Taiwan University (NTU)李宏毅老师的《Machine Learning》的课程,在下文中如果不正确的地方请积极指出。
如果喜欢请点赞,欢迎评论留言 ! o( ̄▽ ̄)ブ

欢迎大家在评论区多多留言互动~~~~

1. 卷积神经网络的结构

  一个在实际使用中具有较好的效果的卷积神经网络的结构应该是如下所描述的。

十五、卷积神经网络(2):卷积神经网络的结构_第1张图片

图1. 卷积神经网络的结构

(1)数据增强(拓展训练数据):这部分作用主要是防止模型过拟合。当然当训练数据足够多的时候可以不使用这一部,因为数据量已经足够了。
(2)输入层:这部分卷积形式所对应的输入层,从图1 中左侧第一个正方形(28×28)所代表的部分,注意这里不是全连接神经网络那种的将图片展开成向量的形式,而是任然保留原有图片的形式。
(3)卷积层:在这里我们将卷积与池化放在一起看作是一个整体,即卷积层。在实际的卷积神经网络中不仅仅有着之前介绍的一个卷积层,可能有着数个,甚至十几个卷积层,这样往往会得到更好的效果。可是这个从实际的意义上应该如何考虑呢?第一个卷积层的输出可以看作是原始输入图像中特定的局部特征的存在(或不存在),因此可以看作是原始输入图像的一个版本。这个版本是经过抽象和凝缩过的,但是仍然有大量的空间结构。所以第二层相当于再这个新版本的图像上考察他是否存在或者不存在某些特征。另外还有一个问题就是,对于第二个卷积层,其输入已经不是像第一个卷积层那样仅仅具有一个输入了,而具有多个输入。所以对于第二个卷积层某一个卷积滤波器,他是使用该滤波器对前面那一层的所有输出运算,不过仍然是限制于他的局部感受野内的。而池化的具体方法,除了最大池化,还有均值池化,L2池化等等。
(4)全连接层:和之前的神经网络一样,可以是一层也可以是两层
(5)Dropout:使用Dropout之后可以使更多的神经元也让可以防止神经网络过拟合,并且可以加快神经网络的训练速度,缩短迭代次数。值得注意的是Dropout仅仅用于全连接层,而不用于卷积层,主要原因在于共享权重意味着卷积滤波器被强制从整个图像中学习,这使他们不太可能去选择在训练数据中的局部特质,即卷积层有相当大的先天的对于过度拟合的抵抗。
(6)输出层:分类问题常用 softmax。

  除了上述部分还有其他需要选择的内容:
(1)激活函数:最开始我们介绍的 S 激活函数,由于使用它会使得使得神经网络的训练速度减慢(即更容易产生输出饱和,进而加剧了梯度消失现象);之后可以采用tanh函数,该函数因为是奇函数,所以具有负值部分,在一定程度上改善了 S 激活函数的缺点;但是在现在的实际使用中往往更多的使用ReLU函数,使用这种函数的好处在于这种函数由于其求导简单,会使得训练的速度加快;同时许多实验也表明其具有更高的正确率。对于这种优点,除了可以归功到求导形式简单之外,有的生物学家认为这种单边信号很符合生物学的特点。
(2)使用一个组合的网络:一个简单的进一步提高性能的方法是创建几个神经网络,然后让它们投票来决定最好的分类。例如,假设我们使用上述的方式训练了 5 个不同的神经网络,每个达到了接近于 99.6% 的准确率。尽管网络都会有相似的准确率,他们很可能因为不同的随机初始化产生不同的错误。在这 5 个网络中进行一次投票来取得一个优于单个网络的分类,似乎是合理的。
(3)使用GPU:相同的神经网络,使用GPU训练和使用CPU训练的速度明显是不同的。使用GPU具有更快的速度,所以我们常常将停止迭代的误差设的要比CPU版本的要低,所以往往会获得更好的效果。
(4)权重初始化。可以使用各种改进的随机高斯分布的初始化方式,但是一般不建议用原始的随机高斯分布。

你可能感兴趣的:(十五、卷积神经网络(2):卷积神经网络的结构)