深度学习之卷积神经网络教程(2)

上页

  现在我们看看卷积神经网络是如何识别位于图片不同位置的数字8是同一个数字8的?

我们人类初始认识一个图片是通过层次和概念结构去认识的。当我们抽象中概念以后,无论这个概念位于图片什么背景上面,我们都能识别出来,但是神经网络并不懂得这些,这意味着它可能需要对每个概念对象位于图片不同位置进行重新学习,这很糟糕。

我们需要让我们的神经网络理解平移的不变性,不管数字8放在图片哪里都能够识别。

使得卷积算法时,我们不再将整个图片作为数字网格喂给神经网络,而是采取聪明办法,以让对象无论出现图片什么地方都是同一个对象。分下面步骤:

第一步,分割大图片变成小图片块。

类似我们前面介绍的sliding窗口搜索,我们将图片划分成一个个小图片(窗口)。比如切分为77个大小一样的小图片。

第二步,将每个小图片喂给小的神经网络。

早期我们是将单个大图片喂给神经网络。这次我们将77个小图片单独喂给神经网络,这里有一个大注意点,对于每个小图片我们都使用相同的权重值,也就是说,我们对待平等对待每个图片,如果任何一个图片中有感兴趣的东西出现,就标记这个小图片为有趣。

第三步,保存每个图片的结果到新的数组

需要保持原来的大图片组织,因此将每个小图片处理结果保存到同样网格中。

第四步,步骤3的数组结果是原始图片中最有趣的,但是这样的数组还是会很大。为了降低数组大小,我们采取max pooling 算法进行采样,每个2x2平方数组留下最大数字:

每个2x2平方中四个元素中留下最有趣的,这样能保持最重要特征从而降低大小。

最后一步,进行预测。

我们降低为一串小数字的数组,我们能够使用这个数组作为另外一个神经网络的输入,最后的神经网络会决定这个图片是否匹配,为了和卷积步骤区分,称之为完全连接网络。

 

现在我们的处理管道是一系列步骤:卷积,max-pooling,和最后充分连接网络。在真实现实中,这些步骤会结合在一起,被应用许多次,可以有两个 三个或十个卷积层,只要你想降低大小,都可以扔进max polling。

基本想法就是,开始于一个大图片,持续一步步向下分析直至得到单一结果,你的卷积步骤越多,你的网络越复杂,学习识别能力越强。

比如,第一个卷积步骤也许学习尖边,第二个卷积步骤也许使用尖边知识识别了鸟嘴,第三个步骤则是利用了鸟嘴知识辨识了整只鸟。

下面是现实中深度卷积网络:

卷积网络

上图这个案例是开始于224x224像素图片,使用卷积网络和max pooling两次,应用卷积3次,应用mx pooling和再有两个充分连接层,最终结果是被分类进1000类别中一个。

 

卷积神经网络入门理解

大数据专题