admin管理员组

文章数量:1032268

前馈神经网络(Feed

前馈神经网络(Feed-Forward Neural Network,简称FNN)是一种基本且广泛应用的人工神经网络结构。以下是关于前馈神经网络的详细解释:

1. 定义与结构

定义:前馈神经网络是最简单的一种神经网络,其各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层,各层间没有反馈。 结构:前馈神经网络由输入层、隐藏层和输出层组成。其中,输入层接收外部输入信号;隐藏层对输入信号进行处理和特征提取,可以有一层或多层;输出层产生最终的输出结果。

2. 工作原理

前向传播

输入数据首先进入输入层,然后通过权重和偏置传递到隐藏层。隐藏层中的节点对输入进行加权求和,并通过激活函数进行非线性转换。最后,输出层接收到经过隐藏层处理的信号,并产生最终的输出。

激活函数

激活函数在人工神经网络中起着至关重要的作用,它们负责将神经元的输入映射到输出端,并引入非线性因素,使得神经网络能够学习和模拟复杂的函数。以下是关于激活函数的详细解释:

定义与作用

  • 定义:激活函数是在人工神经网络的神经元上运行的函数,它决定了神经元对输入数据的响应方式。
  • 作用:
    1. 引入非线性因素:通过激活函数,神经网络能够逼近任意非线性函数,从而解决线性模型表达能力不足的缺陷。
    2. 控制输出范围:激活函数可以将神经元的输出限制在特定的范围内,例如Sigmoid函数将输出映射到(0,1)之间,Tanh函数将输出映射到(-1,1)之间。

常见的激活函数

Sigmoid函数:
    • 公式:
    • 特点: Sigmoid函数的主要特点有:
      1. **输出范围在(0, 1)**之间,这使得它非常适合用于二元分类问题,可以将输出解释为概率值。
      2. 连续且可微:Sigmoid函数是一个平滑的、连续的曲线,这意味着其导数处处存在,这对于基于梯度的优化算法(如反向传播)非常重要。
      3. 中心对称性:虽然不如ReLU等其他激活函数那样在处理负值输入时具有明显的优点,但Sigmoid函数关于点(0, 0.5)近似对称,这在某些情况下是有用的特性。
      4. 导数形式简单:Sigmoid函数的导数形式也非常简洁,为

      ,这简化了在训练神经网络时的计算复杂度。

      然而,Sigmoid函数也存在一些缺点:

      • 梯度消失问题:在函数的两端,导数接近于0,这意味着在深度神经网络中,如果使用Sigmoid作为激活函数,可能会导致梯度非常小,从而影响到较深层的权重更新,引起梯度消失问题。
      • 输出非零中心化:由于Sigmoid函数的输出总是在0.5附近,这可能导致后一层的神经元难以学习,因为其输入总是正的,缺乏变化性。
      • 计算量相对大:相比于ReLU等更简单的激活函数,Sigmoid函数涉及指数运算,计算上可能更耗时。 因此,在现代深度学习实践中,尽管Sigmoid函数依然在某些特定场景下有用(在特征相差比较复杂或是相差不是特别大的时候效果较好,比如逻辑回归的输出层、二元分类问题中的激活函数),但它已经被ReLU及其变体等更高效的激活函数在大多数场合所取代。
Tanh函数
    • 公式:
    • 特点: Tanh函数的特点包括:
      1. **输出范围在(-1, 1)**之间,相比Sigmoid函数的(0, 1),Tanh函数的输出具有零中心化特性。这意味着其输出平均值接近于0,可以加速神经网络的训练过程,尤其是在深层网络中。
      2. 连续且可微:与Sigmoid函数一样,Tanh函数也是连续且可微的,保证了在反向传播过程中能够有效地计算梯度。
      3. 导数形式:Tanh函数的导数为

      Tanh函数的优势在于:

      • 零中心化:输出的均值为0,这有助于加速网络中权重的更新,尤其是在使用梯度下降等优化算法时更为有效。
      • 缓解梯度消失问题:相比Sigmoid函数,Tanh函数在饱和区的梯度(即函数输出接近-1或1时的导数)比Sigmoid函数要大,这有助于减轻梯度消失问题,但仍然不是完全解决。

      尽管如此,Tanh函数在深层网络中也可能遇到梯度消失的问题,特别是在靠近输出层的地方。因此,在现代深度学习实践中,ReLU及其变种(如Leaky ReLU, Parametric ReLU等)因其不易饱和且计算效率高的特性,往往更受欢迎。不过,Tanh函数在循环神经网络(RNN)和其他特定架构中仍有一定的应用价值。

ReLU(Rectified Linear Unit)整流线性单元函数
  • 公式:

特点:

ReLU函数的主要特点包括:

  1. 线性、非饱和性:对于所有正输入值,ReLU函数的输出等于输入值本身,这保持了其线性特性,避免了Sigmoid和Tanh函数在输入值较大或较小时的饱和问题(即导数接近于0)。这有助于缓解梯度消失问题,使得深度网络的训练更加高效。
  2. 计算效率高:ReLU函数的形式极其简单,只需检查输入是否大于0,无需进行复杂的数学运算,这使得其在计算上极为高效,尤其是在大规模数据集和深层网络中。
  3. 非零中心化:与Tanh不同,ReLU的输出不具有零中心化特性,这可能在某些情况下影响梯度传播,但在实践中通常通过其他方法(如 Batch Normalization)来解决这一问题。
  4. 可能会导致“死神经元”问题:当输入为负数时,ReLU函数的输出恒为0,这意味着在训练过程中,如果某个神经元的权重更新导致其输入持续为负,该神经元将不再对后续层产生影响,成为“死神经元”。为了解决这一问题,提出了Leaky ReLU、Parametric ReLU (PReLU) 和 Exponential Linear Units (ELU) 等变种,这些变种在x<0时也有非零斜率,可以减少“死神经元”的现象。

ReLU函数因其简单有效,在许多深度学习模型中成为首选的激活函数,尤其是在卷积神经网络(CNNs)中应用最为广泛。

Leaky ReLU(Leaky Rectified Linear Unit)漏整流线性单元

Leaky ReLU(Leaky Rectified Linear Unit)是一种激活函数,它是标准ReLU激活函数的变体。ReLU函数在输入值大于0时线性传递它们,而当输入值小于0时输出为0,这有时会导致“神经元死亡”问题,即在负值区域的神经元可能停止学习(因为其梯度为0)。Leaky ReLU通过在x<0时引入一个非零斜率来缓解这个问题,即使是在负值区域也能有小幅度的信号通过。

具体来说,Leaky ReLU的定义如下:

这里,α是一个小于1的正数(常见的默认值是0.01),它决定了函数在x<0时的斜率。与ReLU相比,Leaky ReLU的主要优势包括:

1. **减少“神经元死亡”**:即使激活处于负值区域,也有非零梯度,有助于继续训练并调整这些神经元的权重。 2. **提高学习能力**:在某些情况下,允许负值区域有一定的信号传递可以增强网络的学习能力和表达能力。 3. **简化训练**:与参数化的ReLU变体(如PReLU)相比,Leaky ReLU不需要额外的学习参数,减少了模型复杂性。

从上面的公式可以看出,当输入

x非负时,Leaky ReLU与ReLU相同,都返回x;但当输入x为负时,Leaky ReLU返回&alpha;x,而不是像ReLU那样返回0。这确保了在负输入时梯度仍然可以流动,从而有助于在训练过程中避免死亡ReLU现象。

尽管如此,Leaky ReLU的选择和其参数α的确定可能需要根据具体任务和数据集进行调整,且在某些场景下,其他更先进的激活函数可能表现更优。

PReLU(Parametric Rectified Linear Unit)参数化整流线性单元

PReLU(Parametric Rectified Linear Unit)是ReLU激活函数的另一个变体,与Leaky ReLU相似,它旨在解决ReLU在负数输入时梯度消失的问题,但与Leaky ReLU不同的是,PReLU中的泄露系数α不是一个固定值,而是针对每个通道或特征维度学习得到的参数。

PReLU的数学表达式为:

在这里,α是一个可学习的参数,意味着在训练过程中,模型会自动调整这个系数以找到最适合数据的最佳值。这为模型提供了一个额外的自由度,理论上可以更好地适应不同的特征分布,尤其在深度学习的视觉任务中,每个通道或特征图可能需要不同的负斜率来优化学习过程。

PReLU的优点包括:

1. **自适应性**:通过学习α,PReLU可以为不同的特征自动调整最适合的负斜率,提高了模型的灵活性和适应性。 2. **减少过拟合风险**:由于α是通过数据驱动学习得到的,而不是固定设置,这有助于模型更好地泛化到未见数据。 3. **性能提升**:在某些任务和数据集上,PReLU已被证明可以比ReLU和Leaky ReLU提供更好的性能。

归纳来说,P-ReLU在输入为正时与ReLU相同,但在输入为负时,它使用一个可以学习的参数α

来调整输出的斜率,而不是像Leaky ReLU那样使用固定的斜率。这种灵活性使得P-ReLU在某些应用中可能表现得更好,因为它可以根据数据的特性自适应地调整激活函数的形状。

然而,PReLU也增加了模型的复杂度,因为它引入了额外的可学习参数,这可能会稍微增加训练时间和内存消耗。

ELU (Exponential Linear Unit) 指数线性单位

ELU (Exponential Linear Unit) 是另一种激活函数,设计用于克服ReLU在负值区域梯度为零的问题,同时试图减少模型的偏差并加速神经网络的收敛。ELU的特点是在负值区域采用指数衰减的形式,而在非负值区域则与线性函数相同。

ELU的数学表达式为:

其中,α是一个超参数,默认常设为1。当(x < 0)时,ELU函数不仅允许负输入有非零的梯度(与ReLU和Leaky ReLU类似),而且其梯度随(x)增加而指数增加,这有助于加速学习过程并使得神经元更易于从饱和状态中恢复。

ELU的主要优点包括:

1. **缓解梯度消失**:通过在负值域使用平滑的非线性形式,ELU确保了即使在网络深层也能保持良好的梯度流。 2. **减少偏差**:ELU尝试通过其在负值区域的性质来缩小网络预测与真实值之间的差距,理论上可以减少模型的偏差。 3. **加速收敛**:与ReLU相比,ELU在训练初期能更快地推动神经元走出饱和状态,从而可能加速网络的收敛速度。 4. **近似零均值输出**:ELU的输出在理论上可以近似零均值,这对于后层的输入是有益的,因为它可以保持信号的自然尺度并提高学习效率。

这个公式表示,当输入 x 大于 0 时,ELU 函数返回 x 本身(与 ReLU 函数相同);但当 x 小于或等于 0 时,ELU 函数会返回一个指数函数与 α 的乘积再减去 α 的值。这种设计使得 ELU 函数在输入为负时仍有一定的输出,而不是像 ReLU 函数那样直接输出 0,从而有助于缓解“死亡ReLU”问题。

归纳来说,ELU 函数结合了 ReLU 函数和 Sigmoid 函数的优点,在输入为正时保持线性,避免梯度消失问题;在输入为负时则采用指数函数形式,使得输出具有非零的梯度,有助于模型更好地学习和适应数据

不过,ELU的计算成本略高于ReLU和Leaky ReLU,因为它涉及到指数运算。在实际应用中,需要权衡这些优势与计算开销。

SELU(Scaled Exponential Linear Unit)缩放指数线性单位

SELU(Scaled Exponential Linear Unit)是一种先进的激活函数,特别设计用于自 normalization 的神经网络,它有助于神经网络层的输出保持一定的统计属性,从而提高训练的稳定性和效率。SELU由Klambauer等人在2017年提出,是深度学习领域中一种重要的激活函数创新。

SELU的数学表达式为:

这里,

前馈神经网络(Feed

前馈神经网络(Feed-Forward Neural Network,简称FNN)是一种基本且广泛应用的人工神经网络结构。以下是关于前馈神经网络的详细解释:

1. 定义与结构

定义:前馈神经网络是最简单的一种神经网络,其各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层,各层间没有反馈。 结构:前馈神经网络由输入层、隐藏层和输出层组成。其中,输入层接收外部输入信号;隐藏层对输入信号进行处理和特征提取,可以有一层或多层;输出层产生最终的输出结果。

2. 工作原理

前向传播

输入数据首先进入输入层,然后通过权重和偏置传递到隐藏层。隐藏层中的节点对输入进行加权求和,并通过激活函数进行非线性转换。最后,输出层接收到经过隐藏层处理的信号,并产生最终的输出。

激活函数

激活函数在人工神经网络中起着至关重要的作用,它们负责将神经元的输入映射到输出端,并引入非线性因素,使得神经网络能够学习和模拟复杂的函数。以下是关于激活函数的详细解释:

定义与作用

  • 定义:激活函数是在人工神经网络的神经元上运行的函数,它决定了神经元对输入数据的响应方式。
  • 作用:
    1. 引入非线性因素:通过激活函数,神经网络能够逼近任意非线性函数,从而解决线性模型表达能力不足的缺陷。
    2. 控制输出范围:激活函数可以将神经元的输出限制在特定的范围内,例如Sigmoid函数将输出映射到(0,1)之间,Tanh函数将输出映射到(-1,1)之间。

常见的激活函数

Sigmoid函数:
    • 公式:
    • 特点: Sigmoid函数的主要特点有:
      1. **输出范围在(0, 1)**之间,这使得它非常适合用于二元分类问题,可以将输出解释为概率值。
      2. 连续且可微:Sigmoid函数是一个平滑的、连续的曲线,这意味着其导数处处存在,这对于基于梯度的优化算法(如反向传播)非常重要。
      3. 中心对称性:虽然不如ReLU等其他激活函数那样在处理负值输入时具有明显的优点,但Sigmoid函数关于点(0, 0.5)近似对称,这在某些情况下是有用的特性。
      4. 导数形式简单:Sigmoid函数的导数形式也非常简洁,为

      ,这简化了在训练神经网络时的计算复杂度。

      然而,Sigmoid函数也存在一些缺点:

      • 梯度消失问题:在函数的两端,导数接近于0,这意味着在深度神经网络中,如果使用Sigmoid作为激活函数,可能会导致梯度非常小,从而影响到较深层的权重更新,引起梯度消失问题。
      • 输出非零中心化:由于Sigmoid函数的输出总是在0.5附近,这可能导致后一层的神经元难以学习,因为其输入总是正的,缺乏变化性。
      • 计算量相对大:相比于ReLU等更简单的激活函数,Sigmoid函数涉及指数运算,计算上可能更耗时。 因此,在现代深度学习实践中,尽管Sigmoid函数依然在某些特定场景下有用(在特征相差比较复杂或是相差不是特别大的时候效果较好,比如逻辑回归的输出层、二元分类问题中的激活函数),但它已经被ReLU及其变体等更高效的激活函数在大多数场合所取代。
Tanh函数
    • 公式:
    • 特点: Tanh函数的特点包括:
      1. **输出范围在(-1, 1)**之间,相比Sigmoid函数的(0, 1),Tanh函数的输出具有零中心化特性。这意味着其输出平均值接近于0,可以加速神经网络的训练过程,尤其是在深层网络中。
      2. 连续且可微:与Sigmoid函数一样,Tanh函数也是连续且可微的,保证了在反向传播过程中能够有效地计算梯度。
      3. 导数形式:Tanh函数的导数为

      Tanh函数的优势在于:

      • 零中心化:输出的均值为0,这有助于加速网络中权重的更新,尤其是在使用梯度下降等优化算法时更为有效。
      • 缓解梯度消失问题:相比Sigmoid函数,Tanh函数在饱和区的梯度(即函数输出接近-1或1时的导数)比Sigmoid函数要大,这有助于减轻梯度消失问题,但仍然不是完全解决。

      尽管如此,Tanh函数在深层网络中也可能遇到梯度消失的问题,特别是在靠近输出层的地方。因此,在现代深度学习实践中,ReLU及其变种(如Leaky ReLU, Parametric ReLU等)因其不易饱和且计算效率高的特性,往往更受欢迎。不过,Tanh函数在循环神经网络(RNN)和其他特定架构中仍有一定的应用价值。

ReLU(Rectified Linear Unit)整流线性单元函数
  • 公式:

特点:

ReLU函数的主要特点包括:

  1. 线性、非饱和性:对于所有正输入值,ReLU函数的输出等于输入值本身,这保持了其线性特性,避免了Sigmoid和Tanh函数在输入值较大或较小时的饱和问题(即导数接近于0)。这有助于缓解梯度消失问题,使得深度网络的训练更加高效。
  2. 计算效率高:ReLU函数的形式极其简单,只需检查输入是否大于0,无需进行复杂的数学运算,这使得其在计算上极为高效,尤其是在大规模数据集和深层网络中。
  3. 非零中心化:与Tanh不同,ReLU的输出不具有零中心化特性,这可能在某些情况下影响梯度传播,但在实践中通常通过其他方法(如 Batch Normalization)来解决这一问题。
  4. 可能会导致“死神经元”问题:当输入为负数时,ReLU函数的输出恒为0,这意味着在训练过程中,如果某个神经元的权重更新导致其输入持续为负,该神经元将不再对后续层产生影响,成为“死神经元”。为了解决这一问题,提出了Leaky ReLU、Parametric ReLU (PReLU) 和 Exponential Linear Units (ELU) 等变种,这些变种在x<0时也有非零斜率,可以减少“死神经元”的现象。

ReLU函数因其简单有效,在许多深度学习模型中成为首选的激活函数,尤其是在卷积神经网络(CNNs)中应用最为广泛。

Leaky ReLU(Leaky Rectified Linear Unit)漏整流线性单元

Leaky ReLU(Leaky Rectified Linear Unit)是一种激活函数,它是标准ReLU激活函数的变体。ReLU函数在输入值大于0时线性传递它们,而当输入值小于0时输出为0,这有时会导致“神经元死亡”问题,即在负值区域的神经元可能停止学习(因为其梯度为0)。Leaky ReLU通过在x<0时引入一个非零斜率来缓解这个问题,即使是在负值区域也能有小幅度的信号通过。

具体来说,Leaky ReLU的定义如下:

这里,α是一个小于1的正数(常见的默认值是0.01),它决定了函数在x<0时的斜率。与ReLU相比,Leaky ReLU的主要优势包括:

1. **减少“神经元死亡”**:即使激活处于负值区域,也有非零梯度,有助于继续训练并调整这些神经元的权重。 2. **提高学习能力**:在某些情况下,允许负值区域有一定的信号传递可以增强网络的学习能力和表达能力。 3. **简化训练**:与参数化的ReLU变体(如PReLU)相比,Leaky ReLU不需要额外的学习参数,减少了模型复杂性。

从上面的公式可以看出,当输入

x非负时,Leaky ReLU与ReLU相同,都返回x;但当输入x为负时,Leaky ReLU返回&alpha;x,而不是像ReLU那样返回0。这确保了在负输入时梯度仍然可以流动,从而有助于在训练过程中避免死亡ReLU现象。

尽管如此,Leaky ReLU的选择和其参数α的确定可能需要根据具体任务和数据集进行调整,且在某些场景下,其他更先进的激活函数可能表现更优。

PReLU(Parametric Rectified Linear Unit)参数化整流线性单元

PReLU(Parametric Rectified Linear Unit)是ReLU激活函数的另一个变体,与Leaky ReLU相似,它旨在解决ReLU在负数输入时梯度消失的问题,但与Leaky ReLU不同的是,PReLU中的泄露系数α不是一个固定值,而是针对每个通道或特征维度学习得到的参数。

PReLU的数学表达式为:

在这里,α是一个可学习的参数,意味着在训练过程中,模型会自动调整这个系数以找到最适合数据的最佳值。这为模型提供了一个额外的自由度,理论上可以更好地适应不同的特征分布,尤其在深度学习的视觉任务中,每个通道或特征图可能需要不同的负斜率来优化学习过程。

PReLU的优点包括:

1. **自适应性**:通过学习α,PReLU可以为不同的特征自动调整最适合的负斜率,提高了模型的灵活性和适应性。 2. **减少过拟合风险**:由于α是通过数据驱动学习得到的,而不是固定设置,这有助于模型更好地泛化到未见数据。 3. **性能提升**:在某些任务和数据集上,PReLU已被证明可以比ReLU和Leaky ReLU提供更好的性能。

归纳来说,P-ReLU在输入为正时与ReLU相同,但在输入为负时,它使用一个可以学习的参数α

来调整输出的斜率,而不是像Leaky ReLU那样使用固定的斜率。这种灵活性使得P-ReLU在某些应用中可能表现得更好,因为它可以根据数据的特性自适应地调整激活函数的形状。

然而,PReLU也增加了模型的复杂度,因为它引入了额外的可学习参数,这可能会稍微增加训练时间和内存消耗。

ELU (Exponential Linear Unit) 指数线性单位

ELU (Exponential Linear Unit) 是另一种激活函数,设计用于克服ReLU在负值区域梯度为零的问题,同时试图减少模型的偏差并加速神经网络的收敛。ELU的特点是在负值区域采用指数衰减的形式,而在非负值区域则与线性函数相同。

ELU的数学表达式为:

其中,α是一个超参数,默认常设为1。当(x < 0)时,ELU函数不仅允许负输入有非零的梯度(与ReLU和Leaky ReLU类似),而且其梯度随(x)增加而指数增加,这有助于加速学习过程并使得神经元更易于从饱和状态中恢复。

ELU的主要优点包括:

1. **缓解梯度消失**:通过在负值域使用平滑的非线性形式,ELU确保了即使在网络深层也能保持良好的梯度流。 2. **减少偏差**:ELU尝试通过其在负值区域的性质来缩小网络预测与真实值之间的差距,理论上可以减少模型的偏差。 3. **加速收敛**:与ReLU相比,ELU在训练初期能更快地推动神经元走出饱和状态,从而可能加速网络的收敛速度。 4. **近似零均值输出**:ELU的输出在理论上可以近似零均值,这对于后层的输入是有益的,因为它可以保持信号的自然尺度并提高学习效率。

这个公式表示,当输入 x 大于 0 时,ELU 函数返回 x 本身(与 ReLU 函数相同);但当 x 小于或等于 0 时,ELU 函数会返回一个指数函数与 α 的乘积再减去 α 的值。这种设计使得 ELU 函数在输入为负时仍有一定的输出,而不是像 ReLU 函数那样直接输出 0,从而有助于缓解“死亡ReLU”问题。

归纳来说,ELU 函数结合了 ReLU 函数和 Sigmoid 函数的优点,在输入为正时保持线性,避免梯度消失问题;在输入为负时则采用指数函数形式,使得输出具有非零的梯度,有助于模型更好地学习和适应数据

不过,ELU的计算成本略高于ReLU和Leaky ReLU,因为它涉及到指数运算。在实际应用中,需要权衡这些优势与计算开销。

SELU(Scaled Exponential Linear Unit)缩放指数线性单位

SELU(Scaled Exponential Linear Unit)是一种先进的激活函数,特别设计用于自 normalization 的神经网络,它有助于神经网络层的输出保持一定的统计属性,从而提高训练的稳定性和效率。SELU由Klambauer等人在2017年提出,是深度学习领域中一种重要的激活函数创新。

SELU的数学表达式为:

这里,

本文标签: 前馈神经网络(Feed