跳转至

神经网络(Neural Network)

Abstract

神经网络(Neural Network, NN)是一种受生物神经系统启发的机器学习模型,主要用于模式识别、数据预测、自动特征提取等任务。 它由多个层级的神经元(Neurons) 组成,通过学习数据中的模式来完成分类、回归等任务。

神经网络


基本结构

神经元(Neuron)

神经元是神经网络的最小计算单元。

由以下几个部分组成:

  • 输入(Input):从前一层接收数据
  • 权重(Weights):调整输入的影响程度
  • 偏置(Bias):用于调整计算结果
  • 激活函数(Activation Function):引入非线性
  • 输出(Output):传递到下一层

神经元


层(Layer)

神经网络通常由以下几种层组成:

  1. 输入层(Input Layer):接受数据,不执行计算
  2. 隐藏层(Hidden Layers):执行计算,通过权重和激活函数进行特征提取
  3. 输出层(Output Layer):生成最终预测结果

神经网络层


前向传播

前向传播(Forward Propagation, FP)是神经网络从输入到输出的计算过程,主要步骤如下:

  1. 输入数据通过神经元加权求和:\(z=\sum_{i=1}^{n} (w_i \cdot x_i) + b\)
  2. 通过激活函数计算输出:\(a=f(z)\)
  3. 结果传递到下一层,直到输出层生成最终结果。

反向传播

神经网络的训练主要依赖反向传播算法(Backward Propagation, BP),其核心步骤如下:

  1. 前向传播:计算神经网络的输出值。
  2. 计算损失:使用损失函数衡量预测值与真实值之间的误差。
  3. 反向传播:利用链式法则计算梯度,更新权重和偏置。
  4. 梯度下降:使用优化算法(如 SGD、Adam)调整参数,使损失最小化。

常见损失函数:

  • 均方误差(MSE)(回归问题)
  • 交叉熵损失(Cross-Entropy Loss)(分类问题)

激活函数

激活函数(Activation Function)是神经网络中引入非线性的一种函数。

ReLU

ReLU(Rectified Linear Unit)公式为:

\[ f(x)=max⁡(0,x) \]
  • 适用场景
    • CNN(卷积神经网络)
    • DNN(深度神经网络)

ReLU

  • 优点


    • 计算简单,收敛快
    • 解决了 Sigmoid 和 Tanh 的梯度消失问题
    • 适用于深度神经网络(DNN)
  • 缺点


    • 可能出现 “ReLU 死亡”(神经元恒为 0,不更新)
    • 负数区域的梯度为 0,可能影响学习

Leaky ReLU

Leaky ReLU(Leaky Rectified Linear Unit)公式为:

\[ f(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha x, & \text{if } x \leq 0 \end{cases} \]

其中 α 是一个小正数(通常为 0.01)。

  • 适用场景
    • CNN(卷积神经网络)
    • DNN(深度神经网络)

Leaky ReLU

  • 优点


    • 解决了 ReLU 的 死亡问题
    • 允许负数部分保留少量信息
  • 缺点


    • 需要手动调节 α

Sigmoid

公式:

\[ f(x) = \frac{1}{1 + e^{-x}} \]
  • 适用场景
    • 二分类任务(如 Logistic Regression)

Sigmoid

  • 优点


    • 输出范围 \([0, 1]\),可用于概率计算
    • 适用于二分类问题
  • 缺点


    • 容易出现 梯度消失
    • 计算复杂度较高
    • 不适合深度网络

Tanh

公式:

\[ f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \]
  • 适用场景
    • RNN(循环神经网络)

Tanh

  • 优点


    • 输出范围 \([-1, 1]\),比 Sigmoid 更平衡
    • 梯度范围较大,比 Sigmoid 更适合深度学习
  • 缺点


    • 计算复杂度较高
    • 深层网络仍可能出现 梯度消失

Softmax

Softmax 通常应用于神经网络输出层,尤其适合多分类任务。 它能够将网络输出的原始向量“压缩”成一个概率分布,各个分量的取值范围 \([0, 1]\),且所有分量之和为 1

Note

严格来说,Softmax 不是激活函数,而是一种归一化函数(normalization function)。

Tanh

对于一个输入向量 \(z = [z_1, z_2, ..., z_n]\),Softmax 计算公式如下:

\[ σ(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} \]
  • \(z_i\) 是输入向量中的第 i 个元素。
  • \(e^{z_i}\) 计算指数函数,确保所有输出都是正数。
  • \(\sum_{j=1}^{n} e^{z_j}\)是所有指数值的和,起到归一化作用,使得输出总和为 1。

Tanh

  • 优点


    • 归一化概率输出,适用于多分类任务
    • 可微性强,易于优化
    • 具有概率解释性,输出值可直接用于分类决策
    • 放大大值影响,提高分类置信度
  • 缺点


    • 计算复杂度较高,涉及指数运算和归一化
    • 对异常值敏感,可能导致梯度消失或梯度爆炸
    • 类别之间互斥,不适用于多标签分类

适用场景

  • 图像分类(CNN 终层)
  • 自然语言处理(Transformer、RNN 终层)
  • 注意力机制(计算权重分布)
  • 强化学习(策略梯度方法)

Sigmoid vs Softmax

比较项 Sigmoid Softmax
主要用途 二分类 / 多标签分类 多分类(单标签)
输出范围 (0,1) 归一化概率分布(所有类别之和为 1)
适用情况 每个类别单独计算概率 归一化后选最大概率类别
梯度问题 易梯度消失 受类别分布影响大
输出神经元 只处理单个神经元输出 处理多个神经元输出


训练神经网络

神经网络的训练通常包括以下步骤:

  1. 初始化权重和偏置(随机初始化)
  2. 前向传播计算输出
  3. 计算损失函数
  4. 反向传播计算梯度
  5. 优化器更新参数
  6. 循环迭代直到收敛

典型的神经网络架构

架构名称 英文缩写 特点与主要应用
前馈神经网络 FNN 最基本的神经网络,数据从输入层到输出层单向流动。
卷积神经网络 CNN 适用于图像处理,利用卷积层提取特征。
递归神经网络 RNN 适用于序列数据,如文本、语音处理。
生成对抗网络 GAN 由生成器和判别器组成,用于生成数据,如图像合成。
变分自编码器 VAE 一种概率生成模型,适用于无监督学习。

现代优化方法

为了提高训练效果,通常使用以下优化方法:

Adam

自适应矩估计(Adaptive Moment Estimation, Adam)是一种先进的梯度下降优化算法,它结合了动量(Momentum)和均方根传播(RMSprop)的思想,自适应调整学习率,使神经网络训练更加高效和稳定。

Batch Normalization

批量归一化(Batch Normalization, BN)是一种在训练过程中对神经网络层输入进行归一化的技术,旨在加速训练过程、提高模型稳定性和泛化能力。

Dropout

Dropout 是一种在训练过程中随机丢弃部分神经元的技术,旨在防止过拟合。

Dropout

Data Augmentation

数据增强(Data Augmentation)是一种通过对训练数据进行随机变换来生成新样本的技术,可以有效提高模型的泛化能力,特别适用于深度学习。