【AI前沿】深度学习基础:训练神经网络


📑前言

深度学习是当今人工智能领域的核心技术,尤其在图像处理、语音识别、自然语言处理等领域表现出色。要理解深度学习,首先需要掌握神经网络的训练过程,包括前向传播、反向传播、损失函数、优化算法以及梯度下降法及其变种。

一、前向传播与反向传播

1.1 前向传播(Forward Propagation)

前向传播是神经网络的计算过程,通过输入层传递到输出层。每个神经元接收输入信号,进行加权求和,并通过激活函数得到输出。这个过程层层递进,最终在输出层得到预测结果。以下是一个简单的前向传播过程的步骤:

  1. 输入层: 输入数据 x 传入网络。
  2. 隐藏层: 每个隐藏层节点在这里插入图片描述接收上一层节点的输出,并进行加权求和:image.png其中 image.png是权重,image.png是偏置。
  3. 激活函数: 通过激活函数image.png,将线性组合结果非线性化。
  4. 输出层: 类似隐藏层的计算方式,最终输出预测结果。

通过前向传播,神经网络可以将输入映射到输出,这一过程是通过层层传递的方式实现的。

1.2 反向传播(Backpropagation)

反向传播是神经网络训练的核心算法,用于调整网络的权重和偏置,以最小化预测结果与真实值之间的误差。其基本步骤如下:

  1. 计算损失: 使用损失函数计算预测输出image.png与真实标签 image.png 之间的误差 image.png
  2. 反向传递误差: 从输出层开始,逐层向后计算每个神经元的误差,并传递到前一层。
  3. 计算梯度: 对每个权重和偏置,计算损失函数关于它们的梯度 image.png
  4. 更新权重和偏置: 使用梯度下降法或其变种,更新网络的权重和偏置,使得损失函数值逐步减小。

反向传播的核心在于链式法则,通过逐层计算和传播梯度,最终调整所有参数,使网络的预测能力不断提高。

二、损失函数和优化算法

2.1 损失函数(Loss Function)

损失函数是衡量神经网络预测值与真实值之间差距的指标。常见的损失函数有:

  • 均方误差(MSE): 主要用于回归问题,计算预测值与真实值之间的平方误差平均值。
    image.png
  • 交叉熵损失(Cross-Entropy Loss): 主要用于分类问题,衡量预测概率分布与真实分布之间的差异。
    image.png

2.2 优化算法(Optimization Algorithms)

优化算法用于调整神经网络的权重和偏置,以最小化损失函数值。常见的优化算法包括:

  • 梯度下降法(Gradient Descent): 通过计算损失函数的梯度,并沿着梯度的反方向更新参数,逐步减小损失函数值。
  • 随机梯度下降(SGD): 每次仅使用一个或小批量样本来计算梯度并更新参数,适用于大规模数据集。
    image.png
  • 动量法(Momentum): 在更新参数时加入前一次更新的动量,帮助加速收敛并减少震荡。
    image.png
  • AdaGrad: 根据梯度历史动态调整学习率,对稀疏数据表现良好。
    image.png
  • RMSprop: 结合了动量和AdaGrad的优点,通过指数加权平均平滑梯度平方和。
    image.png
  • Adam: 结合动量和RMSprop,适用于各种类型的神经网络和数据集。
    image.png

三、梯度下降法及其变种

3.1 梯度下降法(Gradient Descent)

梯度下降法是神经网络训练中最基本的优化算法,通过计算损失函数相对于参数的梯度,并沿梯度的反方向更新参数。基本的梯度下降法步骤如下:

  1. 初始化参数: 随机初始化网络的权重和偏置。
  2. 计算梯度: 使用反向传播算法,计算损失函数关于每个参数的梯度。
  3. 更新参数: 根据梯度和学习率,更新网络的权重和偏置。
    image.png

其中,η 为学习率,控制每次更新的步长。

3.2 梯度下降法的变种

为了提高训练效率和效果,梯度下降法有多种变种,每种变种都有其独特的特点和应用场景:

  1. 批量梯度下降(Batch Gradient Descent):
    • 使用整个训练集来计算梯度和更新参数。
    • 优点:每次更新都使用了全部数据,梯度计算准确。
    • 缺点:计算开销大,内存占用高,不适用于大规模数据集。
  2. 随机梯度下降(Stochastic Gradient Descent, SGD):
    • 每次仅使用一个样本来计算梯度并更新参数。
    • 优点:计算速度快,适用于大规模数据集。
    • 缺点:梯度更新波动较大,可能导致收敛速度慢。
  3. 小批量梯度下降(Mini-Batch Gradient Descent):
    • 使用一个小批量样本来计算梯度并更新参数。
    • 优点:折中批量梯度下降和随机梯度下降的优点,计算效率高,收敛较快。
    • 缺点:需要选择合适的批量大小(通常在32到256之间)。
  4. 动量法(Momentum):
    • 在梯度更新中引入动量,帮助加速收敛并减少震荡。
    • 公式:
      image.png
    • 优点:在凹谷形状的损失面中加速收敛,减少震荡。
  5. AdaGrad:
    • 根据梯度历史动态调整学习率,对稀疏数据表现良好。
    • 公式:
      image.png
    • 优点:在学习率调整上表现出色,适用于稀疏数据集。
    • 缺点:学习率可能会过早地变得过小。
  6. RMSprop:
  • 结合了动量和AdaGrad的优点,通过指数加权平均平滑梯度平方和。
  • 公式:
    image.png
  • 优点:在深度学习中表现稳定,适应性好。
  1. Adam(Adaptive Moment Estimation):
    • 结合动量和RMSprop,适用于各种类型的神经网络和数据集。
    • 公式:
      image.png
    • 优点:广泛适用,具有良好的收敛性和稳定性。

四、小结

神经网络的训练过程是深度学习的核心,前向传播和反向传播是其基本步骤,而损失函数和优化算法则决定了模型的性能。梯度下降法及其变种提供了多种优化选择,使得神经网络能够高效地学习和改进。

image.png

相关推荐

  1. 深度学习神经网络:从基础前沿

    2024-07-11 12:18:01       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 12:18:01       7 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 12:18:01       8 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 12:18:01       7 阅读
  4. Python语言-面向对象

    2024-07-11 12:18:01       10 阅读

热门阅读

  1. 代码随想录-DAY⑥-哈希表——leetcode 383 | 454

    2024-07-11 12:18:01       9 阅读
  2. linux去掉行首的#字符

    2024-07-11 12:18:01       7 阅读
  3. 常见的负载均衡算法和实现方式

    2024-07-11 12:18:01       10 阅读
  4. Android焦点之Focused Window的更新(二)

    2024-07-11 12:18:01       8 阅读
  5. SpringBoot源码阅读(9)——转换服务

    2024-07-11 12:18:01       8 阅读
  6. C#中的Dictionary

    2024-07-11 12:18:01       9 阅读
  7. C语言标准库中的函数

    2024-07-11 12:18:01       9 阅读
  8. MVC分页

    MVC分页

    2024-07-11 12:18:01      11 阅读
  9. 整数 d → 字符 ‘d‘ 的转换代码为:d+‘0‘

    2024-07-11 12:18:01       9 阅读
  10. 进阶版智能家居系统Demo[C#]:整合AI和自动化

    2024-07-11 12:18:01       10 阅读
  11. 【C语言】C语言可以做什么?

    2024-07-11 12:18:01       9 阅读
  12. Windows图形界面(GUI)-SDK-C/C++ - 按钮(button)

    2024-07-11 12:18:01       11 阅读
  13. [C++]继承

    2024-07-11 12:18:01       11 阅读