1激活函数
1.激活函数(activation function):我们知道在多层的神经网络中,上一层的神经元(neuron)信号,即线性单元wx+b算出的结果,要输入到下一层,但是这个信号在输入到下一层之前需要一次激活f = sigmoid(wx+b),或f = ReLU(wx+b)。我们需要选择一些信号在下一层的神经元激活。如何表示激活呢?就是当激活函数的输出结果是0,就代表抑制,是1,就代表激活。因为按照下一层的线性单元wx+b的计算来看,如果x接近于0,那么就会阻止x对应的权重w起作用,如果接近1,这个权重w的作用会最大,这就是激活的含义。
2.sigmod函数形状
函数表达式:
函数的性质:(很重要)导数可以用自身的形式来表达。
sigmod函数的优点:
1)实现简单,导数易获得。
2)输出在[0,1],所以可以用作输出层,表示概率。
3)最大熵模型,受噪声数据影响较小:
sigmod函数的缺点:
1)梯度饱和现象:指在sigmoid函数曲线的两段,(x>>0或x<<0)时,梯度接近0,从而在层级神经网络结构中,导致训练缓慢,以及梯度消失现象。
而ReLu从求解梯度的角度,避免了sigmoid映射的饱和现象,但是仍旧会存在“坏死神经元”现象。
3. tanh函数
tanh是双曲函数中的一个,tanh()为双曲正切。在数学中,双曲正切“tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。
ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制。可别小看这个简单的操作,正因为有了这单侧抑制,才使得神经网络中的神经元也具有了稀疏激活性。尤其体现在深度神经网络模型(如CNN)中,当模型增加N层之后,理论上ReLU神经元的激活率将降低2的N次方倍。这里或许有童鞋会问:ReLU的函数图像为什么一定要长这样?反过来,或者朝下延伸行不行?其实还不一定要长这样。只要能起到单侧抑制的作用,无论是镜面翻转还是180度翻转,最终神经元的输出也只是相当于加上了一个常数项系数,并不影响模型的训练结果。