一、为什么使用激活函数?
在神经网络中,每个神经元会将输入的信息进行加权处理并传递到下一层或输出层。激活函数是应用于这些神经元输出的非线性函数,它的作用是增加神经网络的表达能力,使得神经网络可以学习更为复杂的模式。
没有激活函数,神经网络只是对输入进行简单的线性变换,这样的话就限制了神经网络的表达能力。线性变换只能处理线性可分的问题,而激活函数可以帮助神经网络处理非线性问题。另外,激活函数还可以将神经元的输出限制在一个特定的范围内,使得神经网络更加稳定和可靠。
总之,使用激活函数可以让神经网络更加强大和灵活,使其可以处理各种不同类型的数据和任务。
二、常用激活函数
1.ReLU
公式:f(x) = max(0, x)
优点:
①ReLU函数的导数在x > 0时为1,反向传播过程中的梯度不会快速衰减
②ReLU函数能够防止“梯度消失”问题,从而更加适合处理稀疏数据。
缺点:
①导致神经元“死亡”
→使用LeakyReLU激活函数,它是ReLU的一种变体,将x<0区域的输出设置为一个很小的负数,解决了ReLU激活函数中可能出现的“死亡”神经元问题
2.Sigmoid
公式: sigmoid(x) = 1/(1 + e^(-x))
优点:
①可以很好地处理二分类问题,输出值在(0,1)之间,可以被看做概率值。
②梯度相对容易计算,因此可以很好地用于梯度下降法和反向传播算法等。
缺点:
①在进行梯度更新时,由于梯度在两端较为平缓,导致梯度消失问题,使得深层网络无法进行有效的训练。
3.Tanh
公式:tanh(x) = (e^x - e^(-x))/(e^x + e^(-x))
优点:
①tanh函数的输出值具有对称性,tanh函数通常适合处理存在负数的输入数据,比如图像识别中的特征提取。
②tanh函数可以将输入值映射到一个较大的范围内,因此可以表达更多的变化。
缺点:
①在输入值过大或过小的情况下,tanh函数的导数会趋近于0,这可能导致梯度消失问题。
②tanh函数的计算量较大。