以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏
文章目录
- [回顾------密集层 Dense Layer](#回顾——密集层 Dense Layer)
- [卷积层 Convolutional Neural Network](#卷积层 Convolutional Neural Network)
到目前为止,你使用的所有神经网络层都是密集层类型,这意味着该层的每一个神经元都从上层获得所有激活的输入。事实证明,仅仅使用密集层类型就可以构建一些非常强大的学习算法。但为了能够帮助你进一步了解神经网络的功能,其实还有一些其它的图层以及属性。在这里我想简单介绍并例举一个不同的神经网络层的示例。
回顾------密集层 Dense Layer
在密集层中,每个神经元接收了来自上层的每个激活值,公式如下:
a ⃗ 1 [ 2 ] = g ( w ⃗ 1 [ 2 ] ⋅ a ⃗ [ 1 ] + b 1 [ 2 ] ) \vec{a}_1^{[2]}=g(\vec{w}_1^{[2]}\cdot\vec{a}^{[1]}+b^{[2]}_1) a 1[2]=g(w 1[2]⋅a [1]+b1[2])
但是事实上,设计神经网络的人可能会选择不同类型的层,今天我们介绍的是卷积层。
卷积层 Convolutional Neural Network
定义
为了解释卷积层,先看下图:
在左边,我将输入设置为一个手写数字9,与以往的密集层不同,在第一层这里,每个神经元并不读取输入的全部像素。如图,第一个蓝色的神经元仅仅读取图中蓝色矩形处的像素,红色神经元仅仅读取右上角矩形处的像素,以此类推,一直到最后一个神经元。我们把这种神经元只读取前一层一部分值的层叫做卷积层。
优势
但问题是,为什么要这样做呢?为什么不让神经元查看所有的像素?
第一点,显而易见,由于传入神经元的像素少了,那么神经网络的运算速度就加快了。
第二点,使用卷积层的这种神经网络训练所需的数据量更少。
第三点,它也不容易过度拟合。
具体说明
心电图
让我们更详细地说明一个卷积层。如果你的神经网络拥有多个卷积层的话,这个神经网络就称作卷积神经网络。为了更好地说明,我们将原本的二维输入替换为一维输入,可以找到的例子有EKG(Electrocardiogram)信号或叫做心电图信号。这个信号只有高度这一个信息,从而可以判断心脏病的风险情况:
为了能够将高度转化为特征向量,我们将高度作为横轴,旋转九十度,记录每一个高度x1,x2...x100:
从而我们就拥有了特征向量 x ⃗ \vec{x} x 。
卷积层搭建
我们让卷积层的第一个神经元只接收 x 1 x_1 x1到 x 20 x_{20} x20,这就相当于特征向量的一个小窗口,第二个蓝色的神经元接收 x 11 x_{11} x11到 x 30 x_{30} x30,第三个接收 x 21 x_{21} x21到 x 40 x_{40} x40以此类推,直到最后一个神经元接收 x 81 x_{81} x81到 x 100 x_{100} x100:
很明显,结合上面的定义,这是一个拥有9个神经元的卷积层。
下一层也可以是个卷积层;在第二个隐藏层中,我让第一个神经元只接收上一层的五个激活值,例如a1到a5,第二个也只接收五个,例如a3到a7,第三个也是,例如a5到a9。因此,第二层就具有三个神经元,它也是个卷积层:
最后,假设第三层就是最终输入层,那么第二层的激活值全部传入第三层,假设激活函数为sigmoid,从而进行二分类判断是否有心脏病:
这样,一个具有两个卷积层的神经网络就构建好了:
事实上,对于卷积层你有很多的架构可以选择,例如每个神经元接收的范围有多大,以及每层应该有多少个神经元。通过有效地选择这些架构,你就可以构建更加高效的神经网络了,在某些情况下,它会比密集层更加有效。
在这门课程中不会更加深入地讨论卷积层,更加深入的可以自己学习。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。