什么是神经网络?
- 下面这个浅层神经网络,由多个Logistic Regression堆叠而成;浅层神经网络的反向传播过程,和逻辑回归类似;
- 其中,
表示第一层神经网络的z值;上表
表示第1层神经网络;
image.png
神经网络表示
一个简单的三层神经网络结构如下所示;
-
其中第一个隐藏层激活值:
image.png 每一个神经网络的激活值计算;
-
,其中
image.png 浅层神经网络前向传播向量化表示;
-
image.png
image.png
多个样本浅层网络向量化
- 将
个样本结果堆叠在一起:
, 其中每一个结果
都是一个列向量;

image.png
-
多个样本浅层网络向量化公式如下:
,其中
-
,其中

多个样本浅层网络向量化表达.png
神经网络激活函数
- 常用的激活函数有:sigmoid,tanh,relu,leaky relu;
- sigmoid一般在二分类的输出层使用,其他情况一般使用relu,或者tanh激活函数;
- leaky relu主要是弥补,relu激活函数在x取值为负数的时候导数为0;

常见激活函数.png
神经网络为什么需要非线性激活函数?
- 隐藏层使用线性激活函数,无论堆叠多少层只能建模输入输出的线性关系;

线性激活函数.png
激活函数的导数
- sigmoid激活函数导数:
;
- tanh激活函数导数:
;

sigmoid激活函数导数.png

tanh激活函数导数.png

relu和Leaky relu激活函数导数.png
浅层神经网络梯度求导
- 三层神经网络,参数求导过程如下:

image.png

三层神经网络前向&反向传播过程.png
神经网络参数初始化
-
为什么不要把网络参数都初始化为0 ? 因为参数
的行与行之间是一样的,导致同一隐藏层的结点激活值是一样的。这样每次神经同一层神经网络结点学到的是同样的函数,即是对称的;这样堆叠多个神经元没有任何意义。
- 解决方法是随机初始化网络参数,但是网络参数值不宜太大。因为对于sigmoid, tanh等这类激活函数,在取值很大的时候其导数接近于0,容易出现梯度消失问题;

神经网络参数初始化为0的弊端.png

随机初始化网络参数.png




