吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

1. 神经网络长什么样?

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

神经网络引入了layer(层)和unit(单元)的概念,x是第一层也就是输入层,含有三个unit(单元),其单元数通常是特征值的个数,有时候输入层也会被表示成a[0],最后一层叫做输出层,(输出层也可能包含多个单元,即多分类,对于多分类问题,给定输入值x,预测其属于哪类,就看其哪类的预测值最大)。中间的称谓隐藏层,计算一个神经网络的层数的时候,输入层通常不计入,即如果有一个隐藏层,那么这个神经网络是一个双层神经网络(隐藏层和输出层)。

正向传播(forward propagation)计算估计值,反向传播(backport propagation)计算梯度 。


2. 双层神经网络前向传播向量化(以逻辑回归函数为例)

对于单个样本来说,其前向传播向量化过程如下:

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

对于整个样本集,其前向传播向量化过程如下:

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

3. **函数(activation function)

**函数即隐藏层及输出层计算估计值所用的函数,对于以逻辑回归为例的神经网络来说,**函数即sigmoid函数,还有很多其他的函数可以作为**函数。不同层之间的**函数可以相同也可以不同。

  -1-sigmoid(z)函数  //适合二分类,0<=y<=1

  -2-tanh(z)函数  //比sigmoid更优越的**函数,均值为零

    //sigmoid,tanh函数都有一个缺点,即当z足够大时,其导数会趋近于零,会使得梯度下降收敛速度很慢

  -3-ReLU(Rectified Linear Unit)修正线性单元  //目前默认的**函数

  -4-Leaky ReLU带泄露的ReLU  //表现比ReLU更好,但通常使用率不高

    //ReLU函数的主要优势是其斜率不容易趋近于零,梯度下降收敛速度不会很慢

  -5-g(z)=z 线性**函数或恒定**函数(Identity activation function)  //用线性**函数不管有多少隐藏层,每层有多少单元,归根结底还是计算线性**函数,因而隐藏层就变得没有意义。所以神经网络一般不采用线性**函数。

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

4. **函数的导数

  -1- sigmoid

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

-2-tanh

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

-3- ReLU and Leaky ReLU

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

5. 神经网络的梯度下降/后向传播(双层神经网络)

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

6. 梯度下降(后向传播)向量化(双层神经网络)

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

7. 随机初始化

为什么不能初始化为0?

初始化参数w为0,会导致不管迭代多少次,隐藏层的各单元计算的函数一样,各单元导数也一样,从而最终计算的参数值w,其各行是相等的,这种情况称之为隐藏单元是对称的,这样多个隐藏单元就变得毫无意义了。参数b不存在对称问题,可以初始化为0.

吴恩达《深度学习-神经网络和深度学习》3--浅层神经网络

初始化时为什么对参数w乘以0.01?

因为如果**函数是sigmoid或者tanh,若参数值较大很可能就会导致其落在平缓区,即导数趋近于零,降低收敛速度。

注意:对浅层神经网络来说,参数W乘以0.01是个不错的选择,但是对于深层神经网络来说,参数值需要调整一下,具体如何调整会在接下来的课程介绍。