神经网络和深度学习笔记2(浅层神经网络)
2018-09-15 本文已影响41人
Thinkando
1. 浅层神经网络


-
损失函数从右向左传递
image.png
2. 神经网络的计算
-
关于神经网络是怎么计算的,从我们之前提及的逻辑回归开始,如下图所示。用圆圈表 示神经网络的计算单元,逻辑回归的计算有两个步骤,首先你按步骤计算出𝑧,然后在第二 步中你以 sigmoid 函数为激活函数计算𝑧(得出𝑎),一个神经网络只是这样子做了好多次重 复计算。
image.png
image.png
-
多样本向量化
image.png
image.png
3. 激活函数
- sigmoid && tanh
-
使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。 到目前为止,之前的视频只用过 sigmoid 激活函数,但是,有时其他的激活函数效果会更好。
image.png
image.png
-
ReLu
image.png
image.png
- 两者的优点是:
- 第一,在𝑧的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于0,在程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中, 使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。
- 第二,sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥散,而 Relu 和 Leaky ReLu 函数大于 0 部分都为常数,不会产生梯度弥散现象。(同时应该注 意到的是,Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性, 而 Leaky ReLu 不会有这问题)
-
第三, 𝑧在 ReLu 的梯度一半都是 0,但是,有足够的隐藏层使得 z 值大于 0,所以对大多数的 训练数据来说学习过程仍然可以很快。
image.png
4 激活函数的导数
- 在神经网络中使用反向传播的时候,你真的需要计算激活函数的斜率或者导数。针对以 下四种激活,求其导数如下
image.png
image.png
image.png
image.png
5. 神经网络的梯度下降


6. 直观理解反向传播


7. 随机初始化
- 对于一个神经网络,如果你把权重或者参数都初始化为 0,那么梯度下降将不会起作用。
-
一般设置
image.png