之前一章讲了 浅层神经网络,这一章讲的是深层神经网络
深层神经网络与浅层神经网络的区别是:隐藏层比浅层神经网络多,从命名规则上来说,有1,2,5个隐藏层的神经网络可以称为1 hidden layer,2 hidden layers,5 hidden layers
深层神经网络中的正向传播与之前举例的浅层神经网络一样,只是层数变得更多了,如下所示:
对于每一层的正向传播我们可以用一个公式表示:
其中L表示层数,g表示激活函数,其中所涉及到的Z,W,A,b的维度为:
其中n[l]表示第l层的隐藏单元个数,m表示样本数
为什么要使用深层神经网络,以人脸识别与语音识别为例:
假设有一个人脸识别为4层的神经网络,神经网络第一层所做的事就是从原始图片中提取出人脸的轮廓与边缘,即边缘检测。这样每个神经元得到的是一些边缘信息。神经网络第二层所做的事情就是将前一层的边缘进行组合,组合成人脸一些局部特征,比如眼睛、鼻子、嘴巴等。再往后面,就将这些局部特征组合起来,融合成人脸的模样。可以看出,随着层数由浅到深,神经网络提取的特征也是从边缘到局部特征到整体,由简单到复杂。可见,如果隐藏层足够多,那么能够提取的特征就越丰富、越复杂,模型的准确率就会越高。
语音识别模型也是这个道理。浅层的神经元能够检测一些简单的音调,然后较深的神经元能够检测出基本的音素,更深的神经元就能够检测出单词信息。如果网络够深,还能对短语、句子进行检测。记住一点,神经网络从左到右,神经元提取的特征从简单到复杂。特征复杂度与神经网络层数成正相关。特征越来越复杂,功能也越来越强大。
除了从提取特征复杂度的角度来说明深层网络的优势之外,深层网络还有另外一个优点,就是能够减少神经元个数,从而减少计算量,以下面这个例子为例:
要求使用电路理论计算逻辑输出:
其中,⊕ 表示异或操作。如果使用深层神经网络,那么神经网络有log2(n)层,隐藏神经单元的总个数为
如果使用浅层神经网络,那么隐藏神经单元的个数会呈指数形式增加,为2^(n-1)个 (这里不懂为什么.......==)
Building blocks of deep neural networks
构建深层神经网络块,先来看他的流程图:
正向传播过程:
输入:a [l−1]
输出:a [l]
参数:W [l] ,b [l]
缓存变量:z [l]
反向传播过程中:
输入:da [l]
输出:da [l−1] ,dW [l] ,db [l]
参数:W [l] ,b [l]
正向传播和反向传播的流程图:
关于深层网络中的正向传播与反向传播,如下:
下面开始讲参数和超参数:
Parameters vs Hyperparameters
参数和超参数如下所示:
为什么叫超参数(Hyperparameter),因为它们决定了参数W [l] 和b [l] 的值
超参数的设置:
设置最优的超参数是一个比较困难的、需要经验知识的问题。通常的做法是选择超参数一定范围内的值,分别代入神经网络进行训练,测试cost function随着迭代次数增加的变化,根据结果选择cost function最小时对应的超参数值。这类似于validation的方法。
神经网络与人脑的关系:
神经网络实际上可以分成两个部分:正向传播过程和反向传播过程。
人脑神经元可分为树突、细胞体、轴突三部分。树突接收外界电刺激信号(类比神经网络中神经元输入),传递给细胞体进行处理(类比神经网络中神经元激活函数运算),最后由轴突传递给下一个神经元(类比神经网络中神经元输出)。
人脑神经元的结构和处理方式要复杂的多,神经网络模型只是非常简化的模型。人脑如何进行学习?是否也是通过反向传播和梯度下降算法现在还不清楚,可能会更加复杂