前言
Deep L-layer neural network
shallow 与 Deep 是相对的。
一般对某些问题进行分类,可以先从逻辑回归(最简单的单个神经元),逐步增加网络层数,并把层数做为一个超参数,使用交叉验证来判定多少层的网络适合我们的分类问题。
符号申明:
-
W[l]是用来计算Z[l]的参数,W[l]∗A[l−1]+b[l]=Z[l]
-
n[l]表示第l层的神经元个数,n[0]是输入层特征的个数
-
a[l]表示第l层输出的激活值,a[0]=x是输入层的x1,x2...xnx。a[L]是输出层
Forward Propagation in a Deep Network
在上图这样一个3×5×5×3×1的5层网络中,Forward propagation的vecteration表达如下:
第0层是输入层,L=4层,第L层是输出层。
n[0]=nx=3,n[1]=5,n[2]=5,n[3]=3,n[4]=1
x=A[0]=(3,1)
W[1]=(5,3),b[1]=(5,1),Z[1]=W[1]∗A[0]+b[1]=(5,1)
W(5,3)的形可以这样看,第一个数字5是本层神经元个数,第二个数字是上一层的神经元个数。
W[l]:(n[l],n[l−1])
b(5,1)的形可以这样看,第一个数字5是本层神经元个数,第二个数字是1,因为每个神经元共享一个偏置量b。
Forward:Input A^{[l-1]},output A^{[l]}
A[1]=g[1](Z[1])=(5,1);g()可以是sigmoid、relu等等的激活函数
W[2]=(5,5),b[2]=(5,1),Z[2]=W[2]∗A[1]+b[2]=(5,1)
⟹矩阵乘
A[2]=g[2](Z[2])=(5,1)
W[3]=(3,5),b=(3,1),Z[3]=W[3]∗A[2]+b[3]=(3,1)
⟹矩阵乘
A[3]=g[3](Z[3])=(3,1)
W[4]=(1,3),b[4]=(1,1),Z[4]=W[4]∗A[3]+b[4]=(1,1)
⟹矩阵乘
输出层:y^=A[4]=g[4](Z[4])=(1,1)
使用for-loop来从1到L层的计算。
以上是以单条样本为例,如果有m进行运算,用m替换上面列表中的1.
Getting your matrix dimensions right
好吧,我在上一小节就把这章的笔记给总结了。
w,b,z,a的梯度的shape跟W,B,Z,A是一样的。
Why deep representations?
为什么深层神经网络对很多分类问题有效?
图像识别
随着网络深入,从总结图像的边缘开始,逐步组合出复杂的特征用以识别图片。
音频识别
也一样,第一层可能去识别一小片段的音调是升高还是降低,随着网络层数增加,组合出复杂的音调类型,用以识别音频的总体特征。
同样,这个道理适用于文章的识别。
电路原理与深度学习
非正式说法:浅层网络需要的神经元个数是深度网络的指数倍数。
上图左:可以使用更多的隐藏层,神经元的个数是O(logn)
上图右:只允许一个隐藏层,神经元个数是
2n个
这个例子可以从一个方面说明深度网络的价值。
Building blocks of deep neural networks
Forward:Input A^{[l-1]},output A^{[l]}
Backward:
Inputda[l],outputda[l−1]
如上,一张图说明了前向传播与反向传播的过程变量与输出值。注意:
Z[l]
是正向传播的过程值,同时是反向传播梯度计算中的输入,所以必须进行cache。
有时间真应该把这草图画成一个正式图。不过markdown的流程图好像没法画这种图,只能用ppt来实现了。
Forward and Backward Propagation
前向传播
参考前面小节“Forward Propagation in a Deep Network”
反向传播
input:
da[l]
output:
da[l−1],dW[l],db[l]
Vecteraztion representation:
dZ[l]=dA[l]∗g[l]′(Z[l])
,不同激活函数g‘()不一样啊。
dW[l]=1mdZ[l]⋅(A[l−1].T)
db[l]=1mnp.sum(dZ[l],axis=1,keepdims=True)
dA[l−1]=(W[l].T)⋅dZ[l]
前向传播后得出
Lost(y^,y)
的数值,对Lost函数进行求导得出
dA[L]=−yA[L]+1−y1−A[L]
Parameters vs Hyperparameters
Parameters:
W[1],b[1],W[2],b[2]....W[L],b[L]
Hyperparameters:
- Learning rate
α
- iterations
- hidden layers L
- hidden units
n[1],n[2]...[L]
- choice of activation:Relu,tanh,sigmoid….
- momentum 动量
- minibatch size
- regularizations
超参数是无法在深度学习过程中进行学习的参数,它由人工设定并影响了参数的取值与模型的效果。深度学习是一个重实验的过程。需要不断实验(交叉验证法)去对比发现最适当的超参数。如前表所列,需要处理的超参数十分的多,以后的课程会教授如何去探索超参数空间。
What does this have to do with the brain?
把深度学习与大脑做类比,吴恩达大师认为,这个领域已经进步到可以打破这个类比的阶段。他倾向于不再运用这个类比。
【注:现在很多文章都有提出,人脑的处理过程不是这么简单的激活输出的方式。深度学习跟大脑的学习并没有什么相似之处。】
Practic Questions
对于L的定义是:隐藏层数+1。输入层与输出层不是隐藏层。本题中隐藏层数=3,所以L=4。 第一层l=0,第二层l=1,第三层l=2,第四层l=3,第五层l=4=L