深度学习入门~为什么使用深层表示

为什么使用深层表示

深度学习入门~为什么使用深层表示_第1张图片
如上图所示,上图是一个简化的进行人脸识别的神经网路,我们可以将它看作:

  • 在前几层进行简单的探测。
  • 在后几层进行复杂的操作和分析。
  • 生理学上认为,人类的貌似也是从简单的试探入手,再逐渐组合成复杂的信息。因此更深层的神经网络更能对人类的进行模拟。

另一种理解:如果要将x1 ~ xn进行异或XOR运算,如果使用深层神经网络,可以将时间复杂度降低到O(logn),但是如果使用浅层神经网络,隐藏层中神经元的数量会大幅度上升,使时间复杂度变为O(2n)。

搭建深层神经网络块

这是一个较浅的神经网络,我们随机选择一层,曾这一层的计算着手。
深度学习入门~为什么使用深层表示_第2张图片

  • 在第l层,我们有参数W^[l],b^[l],正向传播里有输入的激活函数,输入是前一层的激活函数值a^[l-1],输出是a^[l]。即:Z^[l] = W^[l]*a^[l-1] + b^[l];a^[l] = g^[l](z^[l])。这两个算式是每一层神经网络要做的,它们使用向量化实现。之后将z^[l]放入缓存中,这对正向传播和之后的反向传播都有好处。
  • 之后是反向传播。输入是da^[l],输出是da^[l-1]。注意,此处的输入实际是da^[l]以及缓存中的z^[l],而输出除了da^[l-1]还有dW^[l],db^[l]以用于实现梯度下降。
  • 正向传播和反向传播所做的事情和二者之间的关联如图:
    深度学习入门~为什么使用深层表示_第3张图片
    因此,如果我们能够实现方框中所描述功能的函数,那么我们就能成功实现神经网络。
    深度学习入门~为什么使用深层表示_第4张图片

实现前向传播和反向传播

  • 从前向传播说起:
    深度学习入门~为什么使用深层表示_第5张图片
    在缓存z^[l]的同时,同时缓存w^[l]和b^[l]也可使后续的反向传播更便捷。
    有了这些参数,我们就可以得到每一步正向传播的输出:z^[l] = w^[l]*a^[l-1] + b^[l];a^[l] = g^[l](z^[l]),向量化的版本为:Z^[l] = W^[l]*A^[l-1] + b^[l];A^[l] = g^[l](Z^[l])
  • 之后是反向传播:
    深度学习入门~为什么使用深层表示_第6张图片
    输入为da^[l],输出为da^[l-1],dW^[l],db^[l]
    计算的过程为:dz^[l] = da^[l]*g^[l]'(z^[l]),注意,此处是g^[l]的导数g^[l]'。而dW^[l] = dz^[l]*a^[l-1];db^[l] = dz^[l];da^[l-1] = w^[l]T * dz^[l],注意此处是w^[l]的转置w^[l]T。向量化的版本为把这些向量都换成对应的矩阵,注意对于dW和db都需要乘以1/m,因为训练集的容量为m。

你可能感兴趣的:(深度学习)