为什么需要激活函数?

1、激活函数对模型学习、理解非常复杂和非线性的函数具有重要作用。
2、激活函数可以引入非线性因素。如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数是一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。
3、激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

为什么激活函数需要非线性函数?

1、假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。这样就做不到用非线性来逼近任意函数。
2、使用非线性激活函数 f(x),以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。

常见的激活函数及图像

1、sigmoid 激活函数

tensorflow的非线性激活函数_机器学习

其值域为(0,1)

tensorflow的非线性激活函数_tensorflow的非线性激活函数_02

 2、tanh 激活函数

tensorflow的非线性激活函数_tensorflow的非线性激活函数_03

其值域为(-1,1)

tensorflow的非线性激活函数_tensorflow的非线性激活函数_04

 3、Relu 激活函数

tensorflow的非线性激活函数_机器学习_05

其值域为[0,+∞)

tensorflow的非线性激活函数_机器学习_06

 4、Leak Relu 激活函数

f(x)=\begin{cases} & \text{ } \alpha x,x<0\\ & \text{ } x,x>0 \end{cases}

值域为(-∞,+∞)

tensorflow的非线性激活函数_人工智能_08

 5、SoftPlus 激活函数

tensorflow的非线性激活函数_机器学习_09

值域为(0,+∞)

tensorflow的非线性激活函数_机器学习_10

 6、softmax 函数

tensorflow的非线性激活函数_tensorflow的非线性激活函数_11

Softmax 多用于多分类神经网络输出

常见激活函数的导数计算

tensorflow的非线性激活函数_机器学习_12

激活函数有哪些性质

1. 非线性: 当激活函数是线性的,一个两层的神经网络就可以基本上逼近所有的函数。但如果激活函数是恒等激活函数的时候,即 f(x)=x,就不满足这个性质,而且如果 MLP 使用的是恒等激活函数,那么其实整个网络跟单层神经网络是等价的;
2. 可微性: 当优化方法是基于梯度的时候,就体现了该性质;
3. 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数;
4. f(x)≈x:当激活函数满足这个性质的时候,如果参数的初始化是随机的较小值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要详细地去设置初始值;
5. 输出值的范围: 当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的学习率。