4 深层神经网络
4.1 深层神经网络概述
正如上图中所示,logisitic regression是一个浅层的模型,当隐藏层的数量足够多的时候,我们就说这是一个深层的神经网络。
4.2 深层神经网络中的前向传播
和前面的浅层神经网络一样,每一层计算z[L] = W[L] * a[L-1] + b[L], a[L] = g[L](z[L]),最终得到y帽。
将其向量化后就变为Z[L] = W[L] * A[L-1] + b[L], A[L] = g[L](Z[L]),具体过程就如上图所示。
4.3 如何核对深层神经网络中矩阵的维数
4.3.1 单个样本中
可以通过z[L] = W[L] * a[L-1] + b[L]这个公式来核对,上面图中我们是一第一层为例,如何判断W[1]和b[1]的维度呢。我们已知x即a[0]的维度为(2,1),z[1]为(3,1),因此逆推可得w[1]的维度为(3,2),b[1]的维度为(3,1)。多推导几个我们发现其中蕴含着规律,即上图中右上角的公式(其中n[L]表示第L层的单元数):
w[L] :(n[L],n[L - 1])
b[L] : (n[L],1)
dw[L] :(n[L],n[L - 1])
db[L] : (n[L],1)
4.3.2 m个样本
在m个样本中w[L] ,b[L],dw[L] ,db[L]符合单个样本中的规律,但是Z[L],A[L],dZ[L],dA[L]就由(n[L],1)变为(n[L],m),即:
Z[L] :(n[L],m)
A[L] :(n[L],m)
dZ[L] :(n[L],m)
dA[L] :(n[L],m)
4.4 深层神经网络中的前向和后向函数的构建
选取其中第L层,在前向传播中,我们输入a[L - 1],输出a[L],并得到z[L],w[L],b[L],将z[L]存到缓存cache中,留待后向传播中使用。
在后向传播中,我们通过da[L] 和cache中的z[L],得到da[L - 1],dw[L],db[L]。
具体图示就是上图中右边显示的那样。这是第L层的构建,将之推广,就得到了整个深层神经网络的构建,即下图所示:
4.5 深层神经网络中前后向传播的向量化实现
4.5.1 前向传播的向量化
公式如下图右边所示:
4.5.2 后向传播的向量化
公式如下图右边所示:
4.6 总结
如上图所示,这就是整个深层神经网络的运作过程。每个神经元里面具体用什么激活函数,这个由你自己决定。这里假设是求logistic regression的二元分类,那么整个流程就是:输入X,经过每一层的计算得到相应的a[L],z[L],最终的a[L]即y帽,然后计算出损失函数,然后计算出da[L],开始由后往前一步步推导出相应的da[L - 1],dw[L],db[L],最终不断更新w,b,得到最优的参数。
那么,为什么要用到深层神经网络呢,是因为在某些情况下,层数越多,在复杂计算后,得到的效果往往比浅层的要好很多。
4.7 参数和超参数
参数就是w,b;超参数就是学习率α、迭代的次数、隐藏层的数量、每层的隐藏单元数、选择的激活函数和其他等等。之所以叫它们超参数,是因为它们实际上决定了参数w和b,所以将它们和参数区分开来。