deeplearning.ai第一章第三周

上一节我们学习了用逻辑回归解决二元分类问题,这节是介绍浅层神经网络

神经网络的描述

我们使用一个双层神经网络作为例子

神经网络主要由三层构成,分别是

  • 输入层: 传入神经网络的数据层。
  • 隐藏层: 训练过程中看不到数值的层,输入层可以看到输入数据,输出层输出预测值。
  • 输出层: 负责输出结果,预测值。

神经网络的输出


左边的圆圈内代表了逻辑回归中的两个计算步骤,右边的神经网络对比逻辑回归神经网络只不过是重复计算这些步骤多次。我们先聚焦神经网络中的单个节点

对于第一个节点,我们为它指定符号

其中上标表示的是所处的层序号,下标代表所处层中的序号,各层的计算如下

如果在神经网络中用for循环进行计算,会十分低效,所以我们需要把这计算进行向量化,将W竖着进行堆叠

所以上图的计算可以化简成如下的式子

我们还可以进一步的把看成是,把看成,这样正向传播就变成如下语句的循环

但以上的计算是针对单个样本的,我们还需要对样本进行循环,所以接下来将样本数据也进行向量化,我们将X横着拼接

所以隐藏层的计算就变成了


为了更直观些,我把式子列的详细些

此时矩阵的(1, 1)位置就是第一个样本在隐藏层第一个单元的计算公式
此时矩阵的(2, 1)位置就是第一个样本在隐藏层第二个单元的计算公式
此时矩阵的(1, 2)位置就是第二个样本在隐藏层第一个单元的计算公式

激活函数

常见的激活函数

激活函数主要是以下几种

  • sigmoid函数,公式,主要是使用在二元分类的输出层
  • tanh函数,公式
  • ReLU (Rectified Linear Unit),公式
  • Leaky ReLU,公式

为什么要有激活函数

以下是我们之前所描述的二层神经网络,

当我们替换掉其中的激活函数时

可以看成是

如果你使用的是线性激活函数(恒等激活函数)那么神经网络只是把输入线性组合再输出。如果你使用线性激活函数,或者如果没有激活函数。无论你的神经网络有多少层一直在做的只是计算线性激活函数,所以还不如去掉全部隐藏层。线性隐藏层一点用都没有,因为两个线性函数的组合本身就是线性函数,除非引入非线性,否则无法计算更有趣的函数。层数再多也无益处。
但还是有某个地方可以使用线性函数的,比如你要解决的问题是回归问题,输出的结果是一个实数,就比如预测房价,结果并不是1或者0,范围是0到有多贵就多贵,这时用线性激活函数也许是可行的,但隐藏层的单元不能使用线性激活函数。(与压缩有关的一些非特殊情况有可能会在隐藏层使用线性激活函数)

激活函数的导数

sigmoid

tanh

ReLU

Leaky ReLU


神经网络梯度下降法

在一个双层神经网络中,我们假设现有的
在网络中有如下参数
还有一个关于损失的函数

所以正向传播的计算如下(假设在做二元分类 所以使用sigmoid激活函数)

反向传播的计算

随机初始化参数

当我们有如下的网络时

特征数为2,隐藏层的神经元个数为2,所以

当吧$b^{[1]}$初始化成0,$W^{[1]}$也初始化为0的话,那么将导致$a_1^{[1]}, a_2^{[1]}$计算过程和得出的值完全一致,包括激活后的值
如果初始化$W^{[2]}$时也是初始化成0,且从隐藏层输出的两个数值的权重又一致,那么进行反向传播时$dz_1^{[1]}, dz_2^{[1]}$也一样是相等的。
如果使用上述的方式,隐藏层的两个节点的状态将会完全对称(completely symmetric),对于深度网络同样如此。
所以我们一般使用如下方式进行简单初始化

当$ W^{[1]} $不再是简单的初始化为0的时候,$ b^{[1]} $ 初始化为0时不会造成完全对称问题。
至于此处的常数0.01为什么不使用100、1000,是因为我们常常把权重值初始化成非常非常小的随机值,因为当我们使用tanh或者sigmoid激活函数时,如果权重过大,每个神经节点计算得到的值较大,在所在图像上的点斜率几乎为0,梯度的斜率非常小。使用梯度下降法会非常的缓慢。减缓学习的速度。(如果你的神经网络中没有tanh或者sigmoid那么问题可能没那么大,但是如果你在做二元分类,输出层的激活函数使用的sigmoid那么你就不会希望初始值过大),所以使用0.01是比较合理的或者可以任意尝试其他更小的参数。当训练更深层的网络时可能需要尝试0.01之外的常数了。

Author: Sean
Link: https://blog.whileaway.io/posts/21810/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.