注:此文章为吴恩达教授的deeplearning.ai课程笔记,文中图片均来自课程ppt。
为什么要使用非线性激活函数:因为如果不使用非线性的激活函数,那神经网络将变为一个线性的函数,隐含层已经没有了存在的必要。
sigmoid
sigmoid函数
函数的导数为:a(1-a)
tanh(hyper tangent function)
tanh函数
函数的导数为:1-a^2
Relu(rectified linear function)
Relu函数
导数为:
image.png
Leaky Relu(带泄露的Relu)
Leaky Relu
使用注意事项:
如果输出0或1,比方说是在做二分类,则可以使用sigmoid作为输出层的激活函数,但一般情况下tanh的表现都比sigmoid好,但是这两个函数都存在一个问题,就是当输入比较大或者比较小的时候,函数导数的梯度会变得很小,不利于梯度下降。所以常用的是Relu函数,但是Relu函数也有一个缺点:当输入为负的时候,函数的导数为0,也就是梯度为0,所以有了后面的带泄露的Relu