卷积神经网络 - 参数学习

本文我们通过两个简化的例子,展示如何从前向传播、损失计算,到反向传播推导梯度,再到参数更新,完整地描述卷积层的参数学习过程。

一、例子一

我们构造一个非常简单的卷积神经网络,其结构仅包含一个卷积层和一个输出(不使用激活函数,为了便于数学推导),损失函数采用均方误差(MSE)。

1. 设定问题

输入数据

假设输入为一幅小的灰度图像 X:

例如,令

卷积核

使用一个 2×2 的卷积核 W:

并设有偏置 b。

卷积操作

采用"valid"卷积(不填充),在这种情况下,由于输入和核大小都为2×2,卷积操作仅得到一个输出标量 O:

O=(w1⋅x11+w2⋅x12+w3⋅x21+w4⋅x22)+b.

我们为了简化,不使用激活函数(即线性激活),这样前向计算就很直观。

目标输出

设定目标值为 y(比如标签值),假设 y=10。

损失函数

我们使用均方误差(MSE):

2. 前向传播计算

代入示例数据:

  • 初始假设卷积核权重和偏置(假设初始值为):

计算输出 O:

损失:

3. 梯度推导(反向传播)

我们需要计算损失 L 关于每个参数的梯度,即

步骤1:计算损失对输出 O 的梯度

代入数据:O−y=4.5−10=−5.5.

步骤2:计算输出 O 关于各参数的梯度

步骤3:链式法则计算损失对各参数的梯度

根据链式法则:

代入数值:

4. 参数更新(梯度下降)

设定学习率 η,例如 η=0.01,则更新规则为:

更新后的参数:

更新后,新的卷积核参数为:

5. 训练过程总结

整个训练过程如下:

  1. 前向传播:对输入图像进行卷积计算,得到输出 O。
  2. 计算损失:利用损失函数(MSE)计算模型输出与目标值之间的误差 L。
  3. 反向传播:根据链式法则计算损失对各参数(卷积核权重和偏置)的梯度。
  4. 参数更新:使用梯度下降(或其他优化算法)更新参数,向降低损失的方向调整。
  5. 迭代训练:重复上述步骤,遍历整个训练数据集,直到损失收敛或达到设定的迭代次数。

这个例子虽然非常简单(只有一个卷积层,一个输出单元),但它清楚展示了如何从前向传播计算输出、如何利用损失函数计算误差、如何通过反向传播推导每个参数的梯度,并最终利用梯度下降更新参数。实际的卷积神经网络通常包含多个卷积层、池化层和全连接层,但每个部分的参数学习原理都是类似的------都是通过不断地计算梯度并更新参数,使得模型能够更好地拟合数据,从而实现准确的图像分类、检测等任务。

二、例子二

以下是一个具体的卷积神经网络(CNN)训练过程示例,详细展示前向传播、损失计算、反向传播、参数更新的每个步骤。我们以简单的数字识别任务为例,使用极简网络结构便于手动验证。

示例设定

1. 输入数据
  • 输入图像:2×2的灰度图像,表示数字"1"

  • 真实标签:y_true=[1,0](二分类,索引0为"非1",索引1为"是1")

2. 网络结构
  • 卷积层:1个2×2卷积核,无填充,步长=1

    • 初始权重:

    • 激活函数:ReLU(ReLU(x)=max⁡(0,x))

  • 全连接层:输入1个神经元 → 输出2个神经元

    • 初始权重:

    • 激活函数:Softmax(输出概率)

3. 超参数
  • 学习率:η=0.1

  • 损失函数:交叉熵损失(Cross-Entropy Loss)

(一)前向传播(Forward Pass)

1. 卷积层计算
  • 卷积操作

    输入 X 与卷积核 W_conv 逐元素相乘后求和,加偏置:

    Conv输出=(0.2×0.5+0.8×(−0.3)+0.6×0.2+0.1×0.4)+0.1=0.1−0.24+0.12+0.04+0.1=0.12

  • ReLU激活

    Aconv=ReLU(0.12)=0.12

2. 全连接层计算
  • 线性变换

  • Softmax激活

    预测结果:类别1("是1")的概率为0.628,类别0为0.372。

(二)损失计算(Loss Calculation)

  • 交叉熵损失

(三)反向传播(Backward Pass)

1. 全连接层梯度
  • Softmax梯度

  • 权重梯度

  • 偏置梯度

2. 卷积层梯度
  • ReLU梯度

  • 传递到卷积层的梯度

  • 卷积核权重梯度

  • 卷积层偏置梯度

(四)参数更新(Parameter Update)

1. 全连接层参数
  • 权重更新

  • 偏置更新

2. 卷积层参数
  • 权重更新

  • 偏置更新

(五)更新后效果验证

1. 前向传播再计算
  • 新卷积输出

    Conv输出=(0.2×0.4933+0.8×(−0.3268)+0.6×0.1799+0.1×0.3967)+0.0665≈0.0987

    ReLU激活后:Aconv=0.0987

  • 新全连接输出

    Softmax概率:

2. 新损失值

New Loss=−log⁡(0.581)≈0.542(比原始损失0.465反而增大)

(六)结果分析

  1. 损失未下降的原因

    • 单步更新局限性:梯度下降可能需要多步迭代才能收敛。

    • 学习率过大:学习率 η=0.1 可能跳过最优解,可尝试更小值(如0.05)。

    • 网络容量限制:极简模型可能无法有效拟合复杂模式。

  2. 参数学习方向验证

(七)关键总结

  • 前向传播:数据从输入到输出的逐层变换。

  • 反向传播:通过链式法则计算梯度,明确参数调整方向。

  • 参数更新:沿负梯度方向微调参数,逐步逼近最优解。

  • 迭代优化:需多次迭代(Epoch)才能显著降低损失。

通过这个极简示例,可直观理解CNN参数学习的动态过程。实际训练中需结合批量数据、更复杂网络结构和优化策略(如Adam、学习率衰减)提升效果。

相关推荐
Agent产品评测局几秒前
中小企业数字化转型,优先选 RPA 还是 AI Agent?:2026企业自动化架构选型深研
人工智能·ai·chatgpt·自动化·rpa
Master_oid2 分钟前
机器学习35:元学习的应用
人工智能·学习·机器学习
Echo_NGC22375 分钟前
【卷积神经网络 CNN】一文讲透卷积神经网络CNN的核心概念与演进历程
人工智能·深度学习·神经网络·目标检测·机器学习·自然语言处理·cnn
achi0107 分钟前
Ubuntu 24 Desktop LTS 部署 AI 智能体 OpenClaw
人工智能·ai agent·openclaw·openclaw 安装·openclaw 部署·ubuntu openclaw·agent 部署
吴佳浩 Alben11 分钟前
CUDA_VISIBLE_DEVICES、多进程与容器化陷阱
人工智能·pytorch·语言模型·transformer
想七想八不如1140815 分钟前
SQL操作学习
数据库·sql·学习
用户27042728381220 分钟前
排查 OpenClaw token 暴涨:MEMORY.md 藏了83行废话,3个Cron任务静默失败
人工智能
郑同学zxc22 分钟前
机器学习19-tensorflow4.2
人工智能·机器学习
zxsz_com_cn27 分钟前
设备预测性维护方案设计的关键要素
大数据·人工智能
格林威27 分钟前
工业相机参数解析:曝光时间与运动模糊的“生死博弈”
c++·人工智能·数码相机·opencv·算法·计算机视觉·工业相机