卷积神经网络5:直观感受

直观感受

让我们对卷积神经网络如何工作有一个直观的理解。我们先看下人怎样识别图片,然后再看CNNs如何用一个近似的方法。

比如说,我们想把下面这张图片识别为金毛巡回犬。

aa96d6e5-db9d-44eb-ac45-111fe3b9c105

一个需要被识别为金毛巡回犬的图片

 

人类是怎么做的呢?

一种做法是我们识别狗的特定部位,例如鼻子,眼睛,毛发。我们把图片分成小片,识别小片,然后把这些和在一起,得到一个狗的概念。

这种情况下,我们可以把图片分成下列组合

  • 一个鼻子
  • 两只眼睛
  • 金色毛发

如下图所示:

c0726277-4ce5-439b-9002-09b3afa237b1

狗的眼睛

c51c102b-d377-456e-8c09-edb54c70634c

狗的鼻子

d851a50d-b7d2-4802-92f7-4f95e39206f8

狗的毛

再进一步

再进一步来说,我们如何确定鼻子在哪呢?一个金毛巡回犬的鼻子可以看出是一个椭圆形,有两个黑洞在里面。因此,一种辨别巡回犬鼻子的方法是把它分割更小的区域,寻找黑洞(鼻孔)和椭圆的曲线。如下所示:

b86fec5d-77f1-4f93-9e5d-7a1044cd0be6

一个可以用来确定鼻子的曲线

 

b58e8f01-af9c-4dbe-8a51-43b49d41fbde

用来分类狗鼻子的鼻孔

广义上来说,这就是CNN学着做的。它学习识别基本的直线,曲线,然后是形状,点块,然后是图片中更复杂的物体。最终CNN分类器把这些大的,复杂的物体综合起来识别图片

在我们的例子中,层级关系是:

  • 简单的形状,如椭圆,暗色圆圈
  • 复杂的物体(简单形状的组合),例如眼睛,鼻子,毛发
  • 狗的整体(复杂物体的组合)

有了深度学习,我们不需要设定CNN来识别特定的特征。相反,CNN通过正向和反向传播自己学习识别上述物体。

尽管我们从来没有给CNN特定的特征来寻找,但是它级别图片的能力却好的惊人!

277d41f9-189d-4b45-9453-d7c6f903f89b

对狗图片每一层CNN可能识别物体的示意图

CNN可能有几层网络,每个层可能捕获对象层次结构中的不同级别。第一层是层级结构的最底级,CNN一般来把图片中的小部分识别成简单的形状,例如水平、竖直的直线,简单色色块。紧接着一层是层级结构的上级,一般来说识别更复杂的形状(线的组合),最终识别整个物体,例如狗。

再次强调,CNN 是自主学习。我们不需要告诉CNN去寻找任何直线、曲线、鼻子、毛发等等。CNN 从训练集中学习并发现金毛巡回犬值得寻找的特征。

通过这样一个开始,希望你对CNNs如何工作有了一个很直观的了解。

接下来我们看看实现上地一些细节。