神经网络如何学习:从前向传播到反向传播的完整过程

2025年05月26日

神经网络学习过程

神经网络就是一个不断试错、调整、再试错的循环过程。那你平时比如说最简单的线性回归,他是有参数的,这个就帮你搞好参数了。就这个意思。

前向传播:网络的"猜测"过程

前向传播就像是神经网络在做一次"有根据的猜测"。想象一下,你有一张图片输入到网络中:

  1. 输入层:接收原始像素数据
  2. 隐藏层们:每一层都在前一层的基础上做一些修正
    • 第一层可能识别边缘和线条
    • 第二层可能组合成形状
    • 第三层可能识别出具体物体的部件
  3. 输出层:给出最终的预测结果 这个过程就是数据从左到右,一层一层地往前传播。每一层的神经元都在做同样的事情:
  • 接收上一层的输入
  • 乘以权重,加上偏置
  • 通过激活函数处理
  • 传给下一层 就像工厂流水线一样,每个工位都有自己的加工任务,最终产出一个预测结果。

损失函数:网络的"成绩单"

网络给出预测后,我们需要知道它猜得对不对,这就需要损失函数来打分。 **损失函数就是反馈,告诉神经网络这次有没有达到目标:

1. 回归问题用均方误差(MSE)

比如预测房价:
真实价格:100万
预测价格:120万
误差:(120-100)² = 400

2. 分类问题用交叉熵损失

比如图像分类:
真实标签:猫
网络输出:狗 90%,猫 10%
交叉熵会给这个预测打很低的分

损失函数的作用就是量化网络的错误程度。损失越大,说明网络猜得越离谱;损失越小,说明网络越接近正确答案。

反向传播:网络的"反思"过程

有了结果,网络就要开始反思了:到底是哪里出了问题? 反向传播就像是网络在进行"错误溯源"

  1. 从输出层开始:输出层的神经元说"我错了这么多"
  2. 逐层往回推:每一层都问"我对这个错误贡献了多少?"
  3. 计算梯度:每个权重和偏置都知道自己该往哪个方向调整 这个过程很像公司出问题后的复盘:
  • 损失大
  • 计算梯度
  • 确定调整方向

梯度下降

知道了错在哪里,接下来就要改正了。反正就是往下走,找到那个最低点。目标是找到损失函数的最低点: 学习率的选择特别关键

  • 太小:像蚂蚁一样慢慢爬,要爬到天荒地老
  • 太大:像袋鼠一样跳跃,可能直接跳过最低点
  • 刚好:稳步向前,既不会太慢也不会跳过

为什么这套机制这么有效?

通过大量的实验,我发现神经网络学习机制的巧妙之处:

1. 自动化的特征学习 不同层自动学习不同抽象级别的特征,从简单到复杂,这比人工设计特征强太多了。

2. 端到端的优化 整个网络作为一个整体进行优化,每个参数都在为最终目标服务。

3. 可微分的架构 所有操作都是可微的,让梯度能够顺利地从输出反向传播到输入,这是整个学习机制的基础。

前馈网络:最基础的架构

在深入GNN之前,理解前馈神经网络(FFNN)很重要,因为它是最基础的架构。

前馈网络的特点

  • 信息严格单向流动:输入→隐藏层→输出
  • 没有环路或反馈连接
  • 每个输入都是独立处理的

就像一条单行道,车辆只能从一个方向通过,不能掉头或者走回头路。

前馈网络的局限性

  • 处理序列数据能力有限(无法记忆之前的信息)
  • 对于图结构数据束手无策(节点之间的关系处理不了)

这些局限性就催生了其他架构:

  • RNN:为了处理序列数据
  • CNN:为了处理图像数据
  • GNN:为了处理图结构数据

每种架构都是为了解决特定类型数据的问题。理解了这个演进脉络,就能更好地理解为什么我们需要GNN来处理图数据了。 通过这个学习过程,我深刻体会到:神经网络的学习本质上就是一个参数优化的过程。从最初的随机参数开始,通过无数次的前向-反向循环,网络逐渐找到了能够正确映射输入到输出的参数组合。这个过程虽然看起来简单,但其中蕴含的数学原理和工程技巧都非常深刻。

卷积神经网络 (Convolutional Neural Networks, CNNs)

CNN是专门为处理网格状数据(如图像)而设计的神经网络 。它们使用特殊的卷积层来对输入数据进行滤波操作,提取局部特征,并通常结合池化层来简化参数和降低维度 。CNN的一个显著特点是其卷积核的权重共享机制,这意味着网络可以在输入的不同位置检测相同的模式 。CNN在图像识别、计算机视觉等领域取得了巨大成功 。 CNN在处理具有空间局部性数据的成功,以及其参数共享的思想,为GNN中“图卷积”概念的提出提供了重要启发。许多GNN的早期工作,特别是基于谱方法的GCN,都明确地尝试将卷积操作推广到图结构数据上 。空间域的GNN也强调从局部邻域聚合信息,这与CNN的局部感受野思想类似 。  

循环神经网络 (Recurrent Neural Networks, RNNs)

RNN专为处理序列数据(如时间序列、文本)而设计 。RNN的核心特征是其内部的循环连接,允许信息从前一个时间步传递到当前时间步,从而使网络具有“记忆”先前输入的能力 。  

** 下一篇文章 ** 为什么需要图神经网络?从数据结构看GNN的必然性

RSS
http://p1ski.me/posts/feed.xml