什么是神经网络?
- 下面这个浅层神经网络,由多个Logistic Regression堆叠而成;浅层神经网络的反向传播过程,和逻辑回归类似;
- 其中,
表示第一层神经网络的z值;上表
表示第1层神经网络;
image.png
神经网络表示
-
一个简单的三层神经网络结构如下所示;
-
其中第一个隐藏层激活值:
image.png
-
每一个神经网络的激活值计算;
-
,其中
image.png
-
浅层神经网络前向传播向量化表示;
-
image.png
image.png
多个样本浅层网络向量化
- 将
个样本结果堆叠在一起:
, 其中每一个结果
都是一个列向量;
![](https://img.haomeiwen.com/i15650683/ffb107eb28bf1d4a.png)
-
多个样本浅层网络向量化公式如下:
,其中
-
,其中
![](https://img.haomeiwen.com/i15650683/578604f3a52afbdb.png)
神经网络激活函数
- 常用的激活函数有:sigmoid,tanh,relu,leaky relu;
- sigmoid一般在二分类的输出层使用,其他情况一般使用relu,或者tanh激活函数;
- leaky relu主要是弥补,relu激活函数在x取值为负数的时候导数为0;
![](https://img.haomeiwen.com/i15650683/519f11403579bee0.png)
神经网络为什么需要非线性激活函数?
- 隐藏层使用线性激活函数,无论堆叠多少层只能建模输入输出的线性关系;
![](https://img.haomeiwen.com/i15650683/5cafd172d0611552.png)
激活函数的导数
- sigmoid激活函数导数:
;
- tanh激活函数导数:
;
![](https://img.haomeiwen.com/i15650683/44bf98f7ef7206d4.png)
![](https://img.haomeiwen.com/i15650683/96c7cbdb4b286a66.png)
![](https://img.haomeiwen.com/i15650683/067fb9f8c8d59319.png)
浅层神经网络梯度求导
- 三层神经网络,参数求导过程如下:
![](https://img.haomeiwen.com/i15650683/1b27d53cc37267a0.png)
![](https://img.haomeiwen.com/i15650683/23572618fdc7ba5a.png)
神经网络参数初始化
-
为什么不要把网络参数都初始化为0 ? 因为参数
的行与行之间是一样的,导致同一隐藏层的结点激活值是一样的。这样每次神经同一层神经网络结点学到的是同样的函数,即是对称的;这样堆叠多个神经元没有任何意义。
- 解决方法是随机初始化网络参数,但是网络参数值不宜太大。因为对于sigmoid, tanh等这类激活函数,在取值很大的时候其导数接近于0,容易出现梯度消失问题;
![](https://img.haomeiwen.com/i15650683/a31676b267161944.png)
![](https://img.haomeiwen.com/i15650683/f4aeeb5b191e5286.png)
网友评论