一、AI教程学习笔记 | 神经网络基础知识(二)
目录
1、浅层神经网络
两层神经网络
2、如何计算浅层神经网络的前向传播
3、如何计算浅层神经网络的反向传播
4、为什么需要**函数
**函数是一个非线性函数
5、常见的**函数
sigmoid、tanh、relu、leaky relu
(1)sigmoid函数
函数曲线图如下:
函数导数曲线图如下:
优点:
-
输出为0到1之间的连续实值,此输出范围和概率范围一致,因此可以用概率的方式解释输出。-
-
将线性函数转变为非线性函数
缺点:
-
容易出现gradient vanishing
-
函数输出并不是zero-centered
-
幂运算相对来讲比较耗时
(2)tanh函数
tanh函数表达式:
函数曲线图为:
sigmoid和tanh函数之间的关系式:
-
sigmoid函数和tanh函数导数区别
-
考虑相同的输入区间[0,1]
-
sigmoid函数导数输出范围为[0.20,0.25]
-
tanh函数导数曲线图为
-
其输出范围为[0.42,1]
优点:
-
对比sigmoid和tanh两者导数输出可知,tanh函数的导数比sigmoid函数导数值更大,即梯度变化更快,也就是在训练过程中收敛速度更快。
-
输出范围为-1到1之间,这样可以使得输出均值为0,这个性质可以提高BP训练的效率,具体原因参考文献 http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf
-
将线性函数转变为非线性函数
缺点:
-
gradient vanishing
-
幂运算相对来讲比较耗时
(3)ReLU函数
ReLU函数表达式为:
其函数曲线图为:
由函数图像可知其导数为分段函数
-
x <= 0时,导数为0
-
x > 0时,导数为1
优点:
-
解决了gradient vanishing问题 (在正区间)
-
计算速度非常快,只需要判断输入是否大于0
-
收敛速度远快于sigmoid和tanh
缺点:
-
不是zero-centered
-
某些神经元可能永远不会被**
(4)leaky relu
为了解决 relu 中没有斜率的问题,
6、**函数的偏导数
7、随机初始化参数