1.深层神经网络
深层神经网络其实就是包含更多的隐藏层神经网络。下图分别列举了逻辑回归、1个隐藏层的神经网络、2个隐藏层的神经网络和5个隐藏层的神经网络它们的模型结构。
命名规则上,一般只参考隐藏层个数和输出层。例如,上图中的逻辑回归又叫1 layer NN,1个隐藏层的神经网络叫做2 layer NN,2个隐藏层的神经网络叫做3 layer NN,以此类推。如果是L-layer NN,则包含了L-1个隐藏层,最后的L层是输出层。
2.深层网络中的前向传播
对于第
层 ,其正向传播过程的和可以表示为(此处是m个样本向量化的形式): 也就是X。向量化也就是将所有训练样本写成列向量,从左到右叠起来。对上式采用for循环计算每层的激活函数等,并且层间计算无法避免使用for循环进行计算。3.核对矩阵的维数
对于单个训练样本,输入x的维度是
,神经网络的参数和的维度分别是:
其中,
和分别是第层和第层的神经元个数。,表示输入层特征个数。反向传播过程中,
和的维度分别与和相同。正向传播过程中,
和的维度均为,且和的维度分别与和相同。对于m个样本,输入矩阵X的维度是
。需要注意的是和的维度与只有单个样本是相同的。但在运算中,由于python的广播性质且的每一列都是一样的,会被当作矩阵进行运算。 和的维度分别与和相同。和的维度均为,且和的维度分别与和相同。4.为什么使用深层表示
下图为人脸识别的例子。经过训练,神经网络第一层从原始图片中提取出人脸的轮廓与边缘,即边缘检测。每个神经元得到一些边缘信息。第二层将前一层的边缘进行组合,组合成人脸的一些局部特征,比如眼睛、鼻子、嘴巴等。再往后面,将这些局部特征组合起来,融合成人脸的模样。随着层数由浅到深,神经网络提取的特征也是从边缘到局部特征再到整体,由简单到复杂。可见,如果隐藏层足够多,那么能够提取的特征就越丰富、越复杂,模型的准确率就会越高。
语音识别模型也是这个道理。浅层的神经元能够检测一些简单的音调,然后较深的神经元能够检测出基本的音素,更深的神经元就能够检测出单词信息。如果网络够深,还能对短语、句子进行检测。神经网络从左到右,神经元提取的特征从简单到复杂。特征复杂度与神经网络层数成正相关。特征越来越复杂,功能也越来越强大。
下面的例子是使用电路理论,计算逻辑输出:
如果不用深层网络,仅仅使用单个隐藏层,那么需要的神经元个数将是指数级别那么大。需要
个神经元。处理同一逻辑问题,深层网络所需的神经元个数比浅层网络要少很多。这也是深层神经网络的优点之一。但是,对实际问题进行建模时,尽量先选择层数少的神经网络模型,对于比较复杂的问题,再使用较深的神经网络模型。
5.搭建深层神经网络块
第
层的流程块图如下:对于正向传播来说,输入是
,输出是,参数是、,缓存变量是;对于反向传播来说,输入是
,输出是、、,参数是、。神经网络所有层,整体的流程块图正向传播过程和反向传播过程如下所示:
6.前向和反向传播
首先是正向传播过程,令层数为第
层,输入是,输出是,缓存变量是。其表达式如下:
m个训练样本,向量化形式为:
反向传播过程,输入是
,输出是、、。其表达式如下:
由上述四个公式可以推出:
该式反映了
与的递推关系。m个训练样本,向量化形式为:
最后一点细节:
7.参数VS超参数
该部分介绍神经网络中的参数(parameters)和超参数(hyperparameters)的概念。
神经网络中的参数就是
、。而超参数则是例如学习速率,训练迭代次数N,神经网络层数L,各层神经元个数,激活函数等。之所以叫做超参数的原因是它们决定了参数和的值。如何设置最优的超参数是一个比较困难的、需要经验知识的问题。通常的做法是选择超参数一定范围内的值,分别代入神经网络进行训练,测试cost function随着迭代次数增加的变化,根据结果选择cost function最小时对应的超参数值。这类似于validation的方法。
8.这和大脑有什么关系?
神经网络实际上可以分成两个部分:正向传播过程和反向传播过程。神经网络的每个神经元采用激活函数的方式,类似于感知机模型。这种模型与人脑神经元是类似的,可以说是一种非常简化的人脑神经元模型。如下图所示,人脑神经元可分为树突、细胞体、轴突三部分。树突接收外界电刺激信号(类比神经网络中神经元输入),传递给细胞体进行处理(类比神经网络中神经元激活函数运算),最后由轴突传递给下一个神经元(类比神经网络中神经元输出)。
但人脑学习的机理至今尚未弄清楚,如今我们尽量减少人脑和深度学习工具的对比。
来源:CSDN
作者:Laura2017
链接:https://blog.csdn.net/zhao2018/article/details/83051060