人工神经元模型是神经网络的基础,它模拟了生物神经元的工作原理。在人工神经元模型中,转移函数起着至关重要的作用,它决定了神经元的输出。以下是一些常见的转移函数:
- 线性函数 :这是最简单的转移函数,其输出是输入的线性组合。形式为 ( y = w cdot x + b ),其中 ( w ) 是权重,( x ) 是输入,( b ) 是偏置。线性函数在某些情况下是有用的,但它们不能解决非线性问题。
- Sigmoid函数 :Sigmoid函数是一种常见的非线性转移函数,其形式为 ( y = frac{1}{1 + e^{-x}} )。它将输入压缩到0和1之间,这使得它在二分类问题中非常有用。然而,Sigmoid函数存在梯度消失问题,这使得它在深层网络中的效果不佳。
- 双曲正切函数(Tanh) :这是Sigmoid函数的变体,其形式为 ( y = tanh(x) = frac{e^x - e^{-x}}{e^x + e^{-x}} )。它将输出范围从0到1扩展到-1到1。Tanh函数比Sigmoid函数在某些情况下表现更好,因为它的输出是零中心化的。
- ReLU(Rectified Linear Unit) :ReLU函数形式为 ( y = max(0, x) )。它在正输入时线性,而在负输入时输出为0。ReLU函数在训练深度神经网络时非常有效,因为它解决了梯度消失问题,并且计算效率高。
- Leaky ReLU :这是ReLU的一个变体,它允许小的梯度在负输入时传递,形式为 ( y = max(alpha x, x) ),其中 ( alpha ) 是一个小的正数。Leaky ReLU可以解决ReLU的死亡ReLU问题,即当输入为负时,梯度为0。
- Parametric ReLU(PReLU) :PReLU是Leaky ReLU的泛化形式,其中 ( alpha ) 是一个可学习的参数,而不是固定的小数。这使得网络可以自适应地调整负输入的梯度。
- Exponential Linear Unit(ELU) :ELU函数形式为 ( y = x ) 如果 ( x > 0 ),否则 ( y = alpha(e^x - 1) )。它在正输入时是线性的,在负输入时是指数的。ELU可以减少激活函数输出的均值和方差,有助于加速收敛。
- Scaled Exponential Linear Unit(SELU) :SELU是自归一化的激活函数,它考虑了激活输出的均值和方差,形式为 ( y = lambda(alpha e^x - alpha) ) 如果 ( x < 0 ),否则 ( y = x )。SELU在自归一化网络中非常有用。
- Softmax函数 :Softmax函数通常用于多分类问题中,它将一个向量转换为概率分布,形式为 ( y_i = frac{e^{x_i}}{sum_{j} e^{x_j}} )。Softmax函数确保所有输出值都是非负的,并且它们的和为1。
- Softplus函数 :Softplus是ReLU的平滑版本,形式为 ( y = log(1 + e^x) )。它在正输入时接近线性,而在负输入时接近0。
- Hardtanh函数 :Hardtanh是Tanh函数的简化版本,它在输入大于1或小于-1时直接输出1或-1,而不是使用指数函数。这可以减少计算量。
- Gaussian函数 :Gaussian函数是一种概率分布函数,形式为 ( y = e^{-frac{(x - mu)^2}{2sigma^2}} ),其中 ( mu ) 是均值,( sigma ) 是标准差。它在某些类型的神经网络中用作激活函数。
- Swish函数 :Swish函数是一种自门控的激活函数,形式为 ( y = x cdot sigma(beta x) ),其中 ( sigma ) 是sigmoid函数,( beta ) 是一个可学习的参数或一个常数。Swish函数在某些任务中显示出与ReLU相似或更好的性能。
- Mish函数 :Mish是一种新型的激活函数,形式为 ( y = x cdot tanh(text{Softplus}(x)) )。