卷积神经网络比较直观地解释是什么?
0 828
1
该提问暂无详细描述
收藏
2021-01-20 16:58 更新 阿托 •  17009
共 1 个回答
高赞 时间
0

可以讨论一个简单的程序,这个程序可以给名片拍照,并且该联系人会自动保存在手机上。也就是说,该程序查看了名片上手机号码的图片,并通过检测各个数字来弄清楚手机号码的实际含义。

我们来看一个更简单的任务:识别数字,区分图像“1”和图像“0”,即给定图像“1”或“0”,弄清楚它是两者中的哪一个。

现在必须解释垂直线和水平线的1和0的外观,1看起来像一条垂直线。 0看起来像两条垂直线和两条水平线形成一个高矩形。

现在可以将任务改写为:检测给定图像(0或1,假设未知)中的所有垂直和水平线,然后基于垂直和水平线的数量和位置,就可以预测出结果。

接下来,只给定的图像像素值的网格(0是黑色,255是白色)。则黑色背景上的白色“1”图像如下所示:

0 0 0 0  0  0 0 0 0
0 0 0 0 255 0 0 0 0
0 0 0 0 255 0 0 0 0
0 0 0 0 255 0 0 0 0
0 0 0 0 255 0 0 0 0
0 0 0 0 255 0 0 0 0
0 0 0 0 255 0 0 0 0
0 0 0 0 255 0 0 0 0
0 0 0 0  0  0 0 0 0

黑色背景上的白色“ 0”看起来像这样:

0 0 0  0   0   0  0 0 0
0 0 0 255 255 255 0 0 0
0 0 0 255  0  255 0 0 0
0 0 0 255  0  255 0 0 0
0 0 0 255  0  255 0 0 0
0 0 0 255  0  255 0 0 0
0 0 0 255  0  255 0 0 0
0 0 0 255 255 255 0 0 0
0 0 0  0   0   0  0 0 0

然后给定像上面一样的9x9的网格,检测其中的线。CNN不能在整个网格上一次运行。它首先要查看每3x3的网格(其中有9个网格),检测每个网格中是否有垂直线。它使用“滤波器”(或内核)来执行此操作。用于检测垂直线的这个过滤器是一个单独的3x3网格的特定值,将其乘以我们正在处理的3×3网格,如果其中有一条垂直线,则给出一个高值,否则给出一个低值。另外还有一个用于检测水平线的滤波器。

通过这两个过滤器,我们知道给定图像中有多少垂直线和水平线以及它们的位置,并由此确定它是1还是0。

这就是卷积神经网络的本质——边缘检测,在上述例子中,边缘只是垂直和水平线。

实际上,我们并不需要指定要使用哪些滤波器以及如何处理滤波器输出,可以通过反向传播为网络提供数千张带标签的1和0的图像,从而学习这些值,所获得的过滤器可以检测垂直线,水平线,对角线等任何特征。

使用CNN的任何其他图像分类问题都与此类似,除了检测边缘,还要检测形状,组成部分以及最终对象,例如猫/狗分类。

考虑边缘和形状,我们该如何区分它们? 狗的鼻子较长或者说脸部轮廓通常较长,耳朵更长,鼻子是黑色的(即像素值的浓度接近于0),长腿。加上成千上万张带有标签的狗和猫图像,CNN可以通过滤波器在内部学习和计算其他十几种图像。

简而言之,CNN输出的只不过是输入图像像素值的复杂函数,其中检测边缘是最低层次的,然后是检测形状和检测对象。

如果两组图像之间低层次的“边缘”没有直接的区别,这时就出现问题了,所以神经网络对某些狗和松饼进行分类时会遇到困难。

收藏
2021-01-20 17:43 更新 正直的烤面包 •  3992