深层神经网络

本文来自于网易公开课

1 什么是深度神经网络?

深度神经网络只不过是多隐层的神经网络,深度和浅层只不过是衡量隐层数的多少。在处理任何具体的问题时,预先准确的判断需要多深的神经网络很难,所以先试试看logistic回归是很合理的做法。试一下一层或者2层,在逐步验证。

符号约定

l l :层数
n[l] n [ l ] :第 l l 层的节点数或单元数
a[l] a [ l ] :第 l l 层的激活函数, a[l]=g[l](zl) a [ l ] = g [ l ] ( z l )
x=a[0],y^=a[l] x = a [ 0 ] , y ^ = a [ l ]
w[l] w [ l ] :第 l l 层的权重

2 如何在深度神经网络中灵活运用正向和反向传播?

深层神经网络_第1张图片

在上面这个图中,对于第1层,可以得到:
z[1]=W[1]a[0]+b[1] z [ 1 ] = W [ 1 ] a [ 0 ] + b [ 1 ]
a[1]=g[1](z[1]) a [ 1 ] = g [ 1 ] ( z [ 1 ] )
对于第二层,有:
z[2]=W[2]a[1]+b[2] z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ]
a[2]=g[2](z[2]) a [ 2 ] = g [ 2 ] ( z [ 2 ] )
……..
那么我们可以归纳得到正向传播的公式:
z[l]=W[l]a[l1]+b[l] z [ l ] = W [ l ] a [ l − 1 ] + b [ l ]
a[l]=g[l](z[l]) a [ l ] = g [ l ] ( z [ l ] )
对于m个样本,把样本以列向量的形式堆叠起来就有同时针对多个样本的向量化的正向传播算法:
Z[l]=W[l]A[l1]+b[l] Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ]
A[l]=g[l](Z[l]) A [ l ] = g [ l ] ( Z [ l ] )

3 核对矩阵维数

事实上,在实现深度学习的过程中,如果想增加实现没有bug的程序的概率,其中一个方法就是需要非常仔细和系统的去思考矩阵的维数。Andrew Ng在debug的时候通常会拿出一张纸很仔细地过一遍矩阵的维数。那么如何做的呢?
对于一个5层的神经网络来说,如下图。
深层神经网络_第2张图片
深层神经网络_第3张图片
深层神经网络_第4张图片

4 神经网络不需要大,但需要有深度,为什么?

前几层可能会学习较低层次的简单特征,后面几层在将这些简单特征组合起来探测更复杂的东西。比如说人脸识别的例子。第一次可能识别边缘特征,第二层可能识别眼,鼻子等,最后在组合成人脸。
深层神经网络_第5张图片

多层次理论其实和电路理论很有关系。在非正式的情情况下,你可以用深层神经网络来计算很多 函数,但如果使用浅层的话,就会需要几何级别的单元来实现。

5 创建一个深度神经网络

我们可以将神经网络看做由正向网络块和反向网络块组成。
深层神经网络_第6张图片
那么一个深度神经网络就是这些块的组合。
深层神经网络_第7张图片

6 参数和超参数

在神经网络的计算过程中,不仅需要计算参数w和b,还需要选择比如说学习率 α α ,迭代数,隐层数 l l ,单元数n,以及激活函数,这些变量实际控制着w和b,因此我们称之为超参数hyper parameters。
所以,在着手实现一个深度神经网络时你会发现超参数的选择具有很多可能性。如果不知道怎么表示是好的,你可以尝试不同的超参数并实现,观察效果。所以深度神经网络是一个基于经验的过程。

你可能感兴趣的:(机器学习)