相信看到标题的你心里会有以下疑问:什么是激活函数?为什么要用激活函数?激活函数是什么?下面让Sun小白带大家一起了解神经网络中的社交规则——激活函数。
什么是激活函数?
在神经网络的前向传输中,输入的值要经过一系列加权求和后作用于另一个函数,这个函数就是激活函数。类似于人类大脑中的神经元,激活函数决定了是否传递信号以及要发送给下一个神经元的内容。
为什么需要激活函数?
因为神经网络中每一层的输入输出都是一个线性求和的过程,下一层的输出只是承接了上一层输入函数的线性变换,如果不使用激活函数,则输出信号仅是一个简单的线性函数。
线性函数⼀个⼀级多项式,线性⽅程的复杂度有限,从数据中学习复杂函数映射的能⼒很小。
没有激活函数,神经⽹络将⽆法学习和模拟其他复杂类型的数据,例如图像、视频、⾳频、语音等。
为什么需要非线性激活函数?
假若网络中全部是线性部件,那么线性的组合还是线性,与单独⼀个线性分类器⽆异。这样就做不到⽤非线性来逼近任意函数。
使⽤非线性激活函数 ,以便使网络更加强⼤,增加它的能⼒,使它可以学习复杂的事物。使⽤非线性激活函数, 能够在输⼊输出之间⽣成非线性映射,表示输入输出之间非线性的复杂的任意函数映射。
是什么?- - -常见的激活函数
- sigmoid函数,函数定义如下,值域为(0,1):
函数图像如下:
- tanh激活函数,函数定义如下,值域为(-1,1):
函数图像如下:
- Relu激活函数,函数定义如下,值域为[0,+∞):
函数图像如下:
ReLU 函数从图像上看,是⼀个分段线性函数,把所有的负值都变为 0,⽽正值不变,这样就成为单侧抑制。
因为有了这单侧抑制,才使得神经⽹络中的神经元也具有了稀疏激活性。
稀疏激活性:从信号⽅⾯来看,即神经元同时只对输⼊信号的少部分选择性响应,⼤量信号被刻意的屏蔽了,这样可以提⾼学习的精度,更好更快地提取稀疏特征。
- Leak Relu激活函数,函数定义如下,值域为(-∞,+∞):
函数图像如下(a = 0.5):
- 在实践中,使⽤ ReLu 激活 函数神经⽹络通常会⽐使⽤ sigmoid 或者 tanh 激活函数学习的更快。
- sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥散,⽽ Relu和Leaky ReLu 函数⼤于 0 部分都为常数,不会产⽣梯度弥散现象。
- Relu 进⼊负半区的时候,梯度为 0,神经元此时不会训练,产⽣所谓的稀疏性,⽽Leaky ReLu 不会产⽣这个问题。
- SoftPlus激活函数,函数定义如下,值域为(0,+∞):
函数图像如下:
- softmax激活函数
softmax 函数可以把它的输⼊,通常被称为 logits 或者 logit scores,处理成 0 到 1 之间,并且能够把输出归⼀化到和为 1。这意味着 softmax 函数与分类的概率分布等价。它是⼀个⽹络预测多酚类问题的最佳输出激活函数。
softmax ⽤于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解, 从⽽来进⾏多分类。
假设我们有⼀个数组,Vi表示V中的第i个元素,那么这个元素的 softmax 值就是:
下面举例说明:
softmax 直⽩来说就是将原来的输出3、1、-3 通过 softmax 函数作⽤,映射成为(0,1)的值,而这些值的累和为 1(满⾜概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!