神经网络为什么需要激活函数

参考文档:深度学习花书
转载请说明来源

神经网络为什么需要激活函数

激活函数也叫非线性函数,用于对数据进行非线性变换。目前主要的激活函数有整流线性单元(Relu)、sigmoid激活函数、双曲正切激活函数(tanh)等,目前神经网络主要用的是relu(整流线性单元),在引入整流线性单元之前,大多数神经网络都使用sigmoid函数作为激活函数,sigmoid函数作作为输入单元的激活函数用来预测二值型变量取值为1的概率,相应的Softmax激活函数通常用来作为多分类任务的神经网络的输出层激活函数,Softmax函数是sigmoid函数的一个多维扩展。
但是sigmoid单元在大部分定义域内都是饱和的,当输入x取绝对值很大的正值时,饱和到一个接近1的正值,当取很大的负值时,饱和到一个接近0的很小的值,并且只有当x接近0时,才会表现出对输入的高度敏感。sigmoid的广泛的饱和性会使得基于梯度的学习变得非常困难。因为这个原因,现在不鼓励使用它作为前馈网络的隐藏单元的激活函数。而是选择relu,relu非常容易优化,因为他们和线性单元非常类似,线性单元和整流单元唯一的区别就是,整流单元在其一半的定义域内输出为0。这使得只要整流线性单元处于激活状态,它的导数(或梯度)0都能保持较大(为1),这意味着相比于引入二阶效应的激活函数来说,它的梯度方向对于学习来说更加有用。但是整流线性的一个缺陷是它不能通过基于梯度的方法学习那些使他们激活为0的样本(这类样本将不为模型的学习提供任何帮助)。因此,整理线性单元的各种扩展版本油然而生。绝对值整流、渗透整流线性单元、参数化整流线性单元都将使得当输入x小于0时,存在一个非零的斜率。
所以,在计算机视觉领域的各种图像处理任务中,通常使用relu作为隐藏层单元的激活函数,使用softmax或者sigmoid作为输出层的激活函数,因为它们两者额输出代表将测试样本分类不同类别的概率,通常我们选择概率最大值作为样本的label(标签)。
relu激活函数:g(z) = max{0,z}

神经网络为什么需要激活函数_第1张图片

你可能感兴趣的:(Python)