激活函数存在的意义:
激活函数决定了某个神经元是否被激活,当这个神经元接收到的信息是有用或无用的时候,激活函数决定了对这个神经元接收到的信息是留下还是抛弃。如果不加激活函数,神经元仅仅做线性变换,那么该神经网络就会成为一个线性回归模型,此时对复杂非线性任务的处理能力是十分有限的。因此,需要添加非线性的激活函数,让神经网络的输入输出之间形成非线性映射,使得网络能力非常强大。
简单地说,一个神经元计算输入的权重和,加上偏置,如图所示:
数学公式为:net input = (weight * input) + bias
现在,神经网输入的值即net input可以从负无穷到正无穷。神经元并不知道怎么限制该值,因此无法选择firing pattern。因此激活函数便成为了神经网络的一个重要的部分。激活函数决定了一个神经元是否应该被激活。因此它限制了net input的值。激活函数是一个在将输入转到下一神经层或者将最后结果输出之前,对输入进行的非线性的转化函数。
激活函数的种类如下:
1.阶梯函数/ step function:
2.Sigmoid function
这是一个光滑的函数,是连续可微的。它比阶跃函数和线性函数的最大优点是它是非线性的。这是sigmoid函数的一个非常酷的特性。这本质上意味着当有多个神经元以s型函数作为它们的激活函数时输出也是非线性的。函数的取值范围为0-1,呈S形。
3.Relu函数
Relu函数和其它的激活函数不同的是,它不同时激活所有的神经元。当输入为负的时候,Relu将其转为0,且神经元不被激活。即 f(x) = max(0, x)
4.Leaky Relu
Relu的改进版本,输入小于0的部分并不直接归为0,而是为ax。