1. 神经网络学习的本质:参数校准而非规则记忆
当人们谈论"学习"时,通常会联想到理解概念、记忆规则或掌握原理。但神经网络的学习机制与我们人类的认知过程截然不同——它更像是一台精密仪器的校准过程。想象一下调整老式收音机的旋钮:你不是在教它"理解"音乐,而是通过微调让输出更接近理想状态。神经网络的学习同样如此,只是它的"旋钮"可能多达数十亿个。
1.1 从数学视角看神经网络架构
任何神经网络都可以简化为一个数学函数:y = f(x; θ)。这个看似简单的表达式蕴含着深度学习的全部奥秘:
- x:输入数据(图像像素、文字序列、音频波形等)
- y:输出结果(分类标签、生成文本、预测数值等)
- f:网络结构(层数、连接方式、激活函数等)
- θ:可训练参数(权重和偏置)
这个公式告诉我们一个关键事实:训练神经网络本质上是在寻找最优的参数θ,使得对于给定的输入x,函数f能产生期望的输出y。当我们在PyTorch中调用model.train()时,框架自动追踪的所有计算都是为了一个目标——计算参数θ应该如何调整。
python复制# 典型PyTorch训练循环的核心部分
optimizer.zero_grad()
output = model(input) # 前向传播:y = f(x; θ)
loss = criterion(output, target) # 计算误差
loss.backward() # 反向传播:计算梯度
optimizer.step() # 更新参数θ
1.2 参数学习的动态过程
神经网络的训练是一个持续的自我校准过程,可以分为四个关键阶段:
-
前向传播:输入数据通过网络各层,经过层层变换最终产生输出。以图像分类为例,一张224×224的图片(150,528维数据)可能被逐步转换为1000维的类别概率分布。
-
损失计算:比较网络输出与真实标签的差异。常用的交叉熵损失函数实际上在度量两个概率分布之间的距离:
$$L = -\sum_{c=1}^M y_{o,c}\log(p_{o,c})$$
其中M是类别数,y是二进制指示符,p是预测概率。
-
反向传播:通过链式法则计算损失对每个参数
