吴恩达深度学习课程第四课 — 卷积神经网络
第四课第一周卷积神经网络基础
1.1 计算机视觉
应用计算机视觉时要面临一个挑战,就是数据的输入可能会非常大。举个例子,在过去的课程中,你们一般操作的都是64×64的小图片,实际上,它的数据量是64×64×3,因为每张图片都有3个颜色通道。如果计算一下的话,可得知数据量为12288,所以我们的特征向量x维度为12288。
如果你要操作更大的图片,比如一张1000×1000的图片,它足有1兆那么大,但是特征向量的维度达到了1000×1000×3,因为有3个RGB通道,所以数字将会是300万。在第一隐藏层中,你也许会有1000个隐藏单元,而所有的权值组成了矩阵 W[1]。这意味着矩阵会有30亿个参数,这是个非常巨大的数字。
在参数如此大量的情况下,难以获得足够的数据来防止神经网络发生过拟合和竞争需求,要处理包含30亿参数的神经网络,巨大的内存需求让人不太能接受。
为此,你需要进行卷积计算,它是卷积神经网络中非常重要的一块。
1.2 边缘检测示例
在进行图像识别时,首先要进行边缘检测。
如上图,分别是垂直边缘检测和水平边缘检测。
上图是一个示例,这是一个6×6的灰度图像。因为是灰度图像,所以它是6×6×1的矩阵,而不是6×6×3的,因为没有RGB三通道。为了检测图像中的垂直边缘,你可以构造一个3×3矩阵。它被称为过滤器或者核。如下图就是一个垂直边缘过滤器
按照运算规则进行卷积操作得到一个4×4的矩阵。*代表卷积操作。
为了方便理解,这里将举一个更极端的栗子。
10是比较亮的像素值,右边像素值比较暗,我使用灰色来表示0。就得到了下面的灰度图像。可以看到,这样操作检测出了白灰之间的那条垂直的线段。在第4×4图片中,中间有段亮一点的区域,对应检查到这个6×6图像中间的垂直边缘。这里的维数似乎有点不正确,检测到的边缘太粗了。因为在这个例子中,图片太小了。如果你用一个1000×1000的图像,而不是6×6的图片,你会发现其会很好地检测出图像中的垂直边缘。
1.3 更多边缘检测的内容
我们还可以通过边缘检测来区分正边负边。
由亮变暗,则检测出的边缘为亮色;由暗变亮,则检测出的边缘为暗色。
水平检测就是将垂直过滤器翻转90°
垂直过滤器也有很多不同的数字组合。
当你真正想去检测出复杂图像的边缘,你不一定要去使用那些研究者们所选择的这九个数字,可以把这矩阵中的9个数字当成9个参数,并且在之后你可以学习使用反向传播算法,其目标就是去理解这9个参数。当你得到左边这个6×6的图片,将其与这个3×3的过滤器进行卷积,将会得到一个出色的边缘检测。如下图