[Deep Learning] 深层神经网络
本周目标:
块的思想
- 对于每层的计算,可以将其视为一个块,如下图
对于此图,只需要理解其过程即可,在前向传播过程中,将变量Z1,Z2等等存储起来,然后在反向传播过程中,就可以很方便地使用他们。
检查矩阵维度
在写代码过程中,检查各个参数的维度,能有效的避免一些奇怪的BUG。用下图举个栗子
如图所示,这是一个五层的神经网络,有参数 首先,先确定的维度,可以看到,第一个隐藏层有三个单元,即 ,而输入为,即,可以看做是一个 2 x 1的列向量。又有,先忽略,我们已经知道是 3 x 1 的列向量,那么根据线性代数的有关知识,可以直接推断出是 3 x 2 的矩阵。(若有 A矩阵 的维度为 m x k ,B矩阵的维度为 k x n,那么 AB矩阵相乘得到的矩阵C的维度为 m x n)。那的矩阵维度为 3 x 1。同理,我们可以推断出的维度为 4 x 3, 的维度为 4 x 1 …..
由此,可以归纳出一个维度公式,即对于第k层中(k>0),有
得到每个参数的维度后,就可以很方便的检验运算是否正确咯。
超参数
什么是超参数
- 在整个NN中,有许多参数,比如等等,还有一些其他参数,比如。 而这些这参数都会影响到最终的W,b的结果,所以这些参数就被称作超参数。实际上还有很多超参数,具体的会在之后详细谈及。
超参数的作用
在深度学习算法中的超参数如何取值是一个以实验为依据的过程,有时候,可能依赖直觉,比如设置,然后实际操作了一下,得到了某个结果,但是对这个结果不满意,于是把的值增加到0.05。
大部分情况下,都很难提前知道这些超参数的最优解,所以具体的取值其实是一个基于试验的过程,在过程中发现新的最优解。
多层NN反向传播
在这里,我们具体讨论一下,关于多层网络的反向传播算法。对于前向传播,相信大家应该都很熟悉了,这列就不过多陈述了。主要还是反向传播(Back Propagation,简称BP)。在BP中,第一层的输入应该是在,而输出是。
假设一共有L层网络,Y为真实的label,则在第L层,有
对于接下来的L-1层,有
这里公式是针对所有样本而言,且认为是做二元分类,即最后的激活函数为sigmoid。 * 代表 对应元素相乘,即A矩阵为 m x n, B矩阵为 m x n ,那么A * B 依旧是 m x n的矩阵。有了对应的梯度,我们就可以利用for循环来实现对L层网络的反向传播,这里要注意第一次梯度下降时要分开。