激活函数学习笔记
激活函数学习笔记
激活函数是神经网络中非常重要的一部分,它的作用是为神经网络引入非线性因素,从而可以更好地拟合复杂的数据。本文将介绍常见的激活函数,包括Sigmoid、Tanh、ReLU、LeakyReLU等,同时也会介绍它们的优缺点和使用场景。
1. Sigmoid函数
Sigmoid函数是一个常用的激活函数,公式如下:
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1+e^{-x}} sigmoid(x)=1+e−x1
Sigmoid函数的取值范围在(0, 1)之间,它的导数可以表示为:
s i g m o i d ′ ( x ) = s i g m o i d ( x ) ( 1 − s i g m o i d ( x ) ) sigmoid'(x) = sigmoid(x)(1-sigmoid(x)) sigmoid′(x)=sigmoid(x)(1−sigmoid(x))
Sigmoid函数在输入大于5或小于-5时会出现梯度消失的问题,因此它在深度神经网络中的应用受到限制。
2. Tanh函数
Tanh函数也是一个常用的激活函数,公式如下:
t a n h ( x ) = e x − e − x e x + e − x tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+e−xex−e−x
Tanh函数的取值范围在(-1, 1)之间,它的导数可以表示为:
t a n h ′ ( x ) = 1 − t a n h 2 ( x ) tanh'(x) = 1-tanh^2(x) tanh′(x)=1−tanh2(x)
和Sigmoid函数一样,Tanh函数在输入大于5或小于-5时会出现梯度消失的问题。
3. ReLU函数
ReLU函数是近年来非常流行的激活函数之一,公式如下:
R e L U ( x ) = m a x ( 0 , x ) ReLU(x) = max(0, x) ReLU(x)=max(0,x)
ReLU函数的导数可以表示为:
R e L U ′ ( x ) = { 1 x > 0 0 x ≤ 0 ReLU'(x) = \begin{cases}1 & x>0 \\0 & x\leq0\end{cases} ReLU′(x)={10x>0x≤0
ReLU函数有很好的非线性特性,并且在输入为正数时可以保持梯度不变,因此深度神经网络中广泛使用。
4. LeakyReLU函数
LeakyReLU函数是对ReLU函数的改进,公式如下:
L e a k y R e L U ( x ) = { x x > 0 a x x ≤ 0 LeakyReLU(x) = \begin{cases}x & x>0 \\ax & x\leq0\end{cases} LeakyReLU(x)={xaxx>0x≤0
其中a是一个小于1的正数,通常取0.01。LeakyReLU函数的导数可以表示为:
L e a k y R e L U ′ ( x ) = { 1 x > 0 a x ≤ 0 LeakyReLU'(x) = \begin{cases}1 & x>0 \\a & x\leq0\end{cases} LeakyReLU′(x)={1ax>0x≤0
LeakyReLU函数的优点是在输入为负数时可以保持梯度不为0,避免了ReLU函数的缺陷。同时也有比ReLU函数更好的表现。
5. 总结
本文介绍了常见的激活函数,包括Sigmoid、Tanh、ReLU、LeakyReLU等,同时也介绍了它们的优缺点和使用场景。对于神经网络开发人员来说,选择合适的激活函数对于提高神经网络的表现非常重要。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
