用deepseek学大模型08-卷积神经网络(CNN)

yuanbao.tencent.com
从入门到精通卷积神经网络(CNN),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推导。

一、目标函数与损失函数数学推导

1. 均方误差(MSE)

标量形式:
E(w)=12∑i=1N(yi−y^i)2 E(\mathbf{w}) = \frac{1}{2} \sum_{i=1}^N (y_i - \hat{y}_i)^2 E(w)=21i=1N(yiy^i)2
矩阵形式:
E(W)=12(Y−Y^)T(Y−Y^) E(\mathbf{W}) = \frac{1}{2} (\mathbf{Y} - \mathbf{\hat{Y}})^T (\mathbf{Y} - \mathbf{\hat{Y}}) E(W)=21(YY^)T(YY^)
其中 Y^=WX+b\mathbf{\hat{Y}} = \mathbf{WX} + \mathbf{b}Y^=WX+b,适用于回归任务。

2. 交叉熵损失

分类任务公式:
L=−1N∑i=1N∑c=1Cyi,clog⁡(y^i,c) L = -\frac{1}{N} \sum_{i=1}^N \sum_{c=1}^C y_{i,c} \log(\hat{y}_{i,c}) L=N1i=1Nc=1Cyi,clog(y^i,c)
其中 CCC 为类别数,y^i,c\hat{y}_{i,c}y^i,c 为 softmax 输出概率。


二、梯度下降的数学推导

标量形式(以 MSE 为例):

∂E∂wj=∑i=1N(yi−y^i)⋅xi,j \frac{\partial E}{\partial w_j} = \sum_{i=1}^N (y_i - \hat{y}_i) \cdot x_{i,j} wjE=i=1N(yiy^i)xi,j
参数更新:
wj←wj−η∂E∂wj w_j \leftarrow w_j - \eta \frac{\partial E}{\partial w_j} wjwjηwjE

矩阵形式(卷积层梯度):

设第 lll 层卷积核为 W[l]\mathbf{W}^{[l]}W[l],反向传播梯度为:
∂L∂W[l]=A[l−1]∗∂L∂Z[l] \frac{\partial L}{\partial \mathbf{W}^{[l]}} = \mathbf{A}^{[l-1]} \ast \frac{\partial L}{\partial \mathbf{Z}^{[l]}} W[l]L=A[l1]Z[l]L
其中 ∗\ast 表示互相关运算,Z[l]\mathbf{Z}^{[l]}Z[l] 为卷积输出。


三、PyTorch 代码案例(MNIST 分类)

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
import matplotlib.pyplot as plt

# 数据加载
transform = transforms.Compose([transforms.ToTensor()])
train_data = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)

# 定义 CNN 模型
class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        self.conv1 = nn.Conv2d(1, 32, kernel_size=3)
        self.pool = nn.MaxPool2d(2, 2)
        self.fc = nn.Linear(32*13*13, 10)
    
    def forward(self, x):
        x = self.pool(torch.relu(self.conv1(x)))  # 输出尺寸: (32, 13, 13)
        x = x.view(-1, 32*13*13)
        x = self.fc(x
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值