本文总结的是课程一《神经网络和深度学习》的第四周《深层神经网络》,共7小节,本文涵盖其中的6小节。视频请访问deeplearning.ai或者网易云课堂。
4.1 深度神经网络
如图是一个4层的神经网络,包括3个隐藏层。用L表示层数,这里L=4。用带上标l的n表示结点的数量,或者说是l层上的单元数量,这里有n[0]=3,n[1]=5,n[2]=5,n[3]=3,n[4]= n[L] = 1。a[l]表示激活函数,易得a[0]=X,a[L] =y^。
4.2 深度神经网络的前向传播和反向传播
前向传播:
假设输入是a[l-1],输出是a[l],缓存是z[l]。l层的前向传播更新的方程如图所示,右侧是向量化的方程。
Z[l]=W[l] A[1-1]+b[l]
A[l]=g[l](Z[l])
反向传播:
假设输入是da[l],输出是da[l-1]、dW[l]和db[l],l层的反向传播更新的方程如图所示,右侧是向量化的方程。
dZ[l]= dA[l]*g[l]’(Z[l]) (element-wise product是逐个元素乘积,g[1]’是激活函数的导数)
dW[l]=1/m* dZ[l]A[l-1]T
db[l]= 1/m*np.sum(dZ[l] ,axis=1,keepdim=True)
dA[l-1] = W[l] T dZ[l]
前向传播和反向传播的计算总结如上图所示。前向传播从X开始,利用两个方程,逐步求出预测值y^以及损失函数。根据损失函数,可以得到dA[l]。反向传播dA[l]从开始,利用四个方程,逐步求出dW[l] 和db[l] 。
机器学习算法的复杂性并不来源于代码,而是来源于数据。通常不需要写几千行的代码。
4.3 核对矩阵的维度
方程Z[l]=W[l] A[1-1]+b[l]中,Z[l]的维度是(n[l],m) ,A[1-1]的维度是(n[l-1],m) ,因此可以推导出W[l]的维度是(n[l],n[l-1]),b[l]的维度是(n[l],1)。
反向传播时,dW的维度和W相同,因此,dW[l]的维度是(n[l],n[l-1]),db[l]的维度是(n[l],1)。
由正向传播的方程A[l]=g[l](Z[l])知,A和Z的维度相同,同时dA的维度和A相同, dZ的维度和Z相同,因此A [l] 、dA [l] 和dZ [l]的维度都是(n[l],m)。X就是A [0],它的维度是(n[0],m)。
4.4 深度网络好用的原因
以图像识别人脸为例,这里构建了一个四层的神经网络。神经网络的第一层相当于边缘检测器,用于检测边缘。第二层把第一层输出的边缘结合起来,用于检测人脸的不同部分,比如鼻子、眼睛。第三层把第二层输出的人脸不同部分结合起来,用于检测不同的脸。网络从细节开始,逐步扩大检测区域,直到可以判别整张图像的内容。
语音识别也是同样的道理,浅层网络识别一些低层次的特征,深层网络在此基础上将特征不断组合,从而识别复杂的内容。
4.5 搭建深层神经网络块
正向和反向传播计算结构方块图如图所示,绿色线表示正向传播,红色线表示反向传播。正向传播时,会缓存z[l]的值。实际编程中,也会缓存w[l]和b[l]的值。反向传播时,根据缓存的值计算da[l],同时也计算出dw[l] 和db[l],用于更新w和b。
正向和反向传播计算公式如下图所示,左边方块内是正向传播的公式,右边方块内是反向传播的公式。
4.6 参数和超参数
深度神经网络中,参数为w和b,超参数包括学习率、迭代次数、隐藏层的数量、各隐藏层的结点数量、激活函数的种类等,他们可以控制参数w和b。
超参数的选择有很多种不同的可能性。如今的深度学习过程仍然是一个实验性的过程。一般的过程是,先给超参数赋值,看最终work的效果如何,再根据效果调整超参数的值,直到得到最优值。
从业者需要经常尝试多种不同的超参数数值,因为最优的超参数数值是可能随着硬件、数据等的变化而不断变化的。
4.7 神经网络和大脑的关系(略,结论是没有关系)
本文总结的是课程一《神经网络和深度学习》的第四周《深层神经网络》,共7小节,本文涵盖其中的6小节。阿蒙将自以为重要的知识点整理成笔记,并不是逐句翻译,不足之处请大家斧正。视频请访问deeplearning.ai或者网易云课堂。
更多课程笔记请戳
4.1 深度神经网络
如图是一个4层的神经网络,包括3个隐藏层。用L表示层数,这里L=4。用带上标l的n表示结点的数量,或者说是l层上的单元数量,这里有n[0]=3,n[1]=5,n[2]=5,n[3]=3,n[4]= n[L] = 1。a[l]表示激活函数,易得a[0]=X,a[L] =y^。
4.2 深度神经网络的前向传播和反向传播
前向传播:
假设输入是a[l-1],输出是a[l],缓存是z[l]。l层的前向传播更新的方程如图所示,右侧是向量化的方程。
Z[l]=W[l] A[1-1]+b[l]
A[l]=g[l](Z[l])
反向传播:
假设输入是da[l],输出是da[l-1]、dW[l]和db[l],l层的反向传播更新的方程如图所示,右侧是向量化的方程。
dZ[l]= dA[l]*g[l]’(Z[l]) (element-wise product是逐个元素乘积,g[1]’是激活函数的导数)
dW[l]=1/m* dZ[l]A[l-1]T
db[l]= 1/m*np.sum(dZ[l] ,axis=1,keepdim=True)
dA[l-1] = W[l] T dZ[l]
前向传播和反向传播的计算总结如上图所示。前向传播从X开始,利用两个方程,逐步求出预测值y^以及损失函数。根据损失函数,可以得到dA[l]。反向传播dA[l]从开始,利用四个方程,逐步求出dW[l] 和db[l] 。
机器学习算法的复杂性并不来源于代码,而是来源于数据。通常不需要写几千行的代码。
4.3 核对矩阵的维度
方程Z[l]=W[l] A[1-1]+b[l]中,Z[l]的维度是(n[l],m) ,A[1-1]的维度是(n[l-1],m) ,因此可以推导出W[l]的维度是(n[l],n[l-1]),b[l]的维度是(n[l],1)。
反向传播时,dW的维度和W相同,因此,dW[l]的维度是(n[l],n[l-1]),db[l]的维度是(n[l],1)。
由正向传播的方程A[l]=g[l](Z[l])知,A和Z的维度相同,同时dA的维度和A相同, dZ的维度和Z相同,因此A [l] 、dA [l] 和dZ [l]的维度都是(n[l],m)。X就是A [0],它的维度是(n[0],m)。
4.4 深度网络好用的原因
以图像识别人脸为例,这里构建了一个四层的神经网络。神经网络的第一层相当于边缘检测器,用于检测边缘。第二层把第一层输出的边缘结合起来,用于检测人脸的不同部分,比如鼻子、眼睛。第三层把第二层输出的人脸不同部分结合起来,用于检测不同的脸。网络从细节开始,逐步扩大检测区域,直到可以判别整张图像的内容。
语音识别也是同样的道理,浅层网络识别一些低层次的特征,深层网络在此基础上将特征不断组合,从而识别复杂的内容。
4.5 搭建深层神经网络块
正向和反向传播计算结构方块图如图所示,绿色线表示正向传播,红色线表示反向传播。正向传播时,会缓存z[l]的值。实际编程中,也会缓存w[l]和b[l]的值。反向传播时,根据缓存的值计算da[l],同时也计算出dw[l] 和db[l],用于更新w和b。
正向和反向传播计算公式如下图所示,左边方块内是正向传播的公式,右边方块内是反向传播的公式。
4.6 参数和超参数
深度神经网络中,参数为w和b,超参数包括学习率、迭代次数、隐藏层的数量、各隐藏层的结点数量、激活函数的种类等,他们可以控制参数w和b。
超参数的选择有很多种不同的可能性。如今的深度学习过程仍然是一个实验性的过程。一般的过程是,先给超参数赋值,看最终work的效果如何,再根据效果调整超参数的值,直到得到最优值。
从业者需要经常尝试多种不同的超参数数值,因为最优的超参数数值是可能随着硬件、数据等的变化而不断变化的。
4.7 神经网络和大脑的关系(略,结论是没有关系)