目录

1.反向传播基础概念

2.完整模型构建步骤

3.代码结果


1.反向传播基础概念

  • 链式法则定义与公式表达:反向传播算法的数学基础就是链式法则,用于高效计算深层神经网络中各层参数的梯度。对于多层复合(如 y=f(g(h(x)))),法则可扩展为 “从外到内逐层求导,再依次相乘”:
  • 模型学习过程:
  • 学习过程详细讲解:反向传播是梯度下降(朝着最优参数的方向)来实现参数优化的前提。先计算再更新;从模型构建角度,我们最终要求的是
  • 应用场景:回归任务、二分类/多分类任务。

2.完整模型构建步骤

  • 使用pytorch并定义 loss和 forward 方法:
    import torch
    
    x_data = [1.0, 2.0, 3.0]
    y_data = [2.0, 4.0, 6.0]
    
    w = torch.Tensor([1.0])  # 初始化随机权重张量
    w.requires_grad = True  # 1开启梯度追踪,自动计算梯度
    
    def forward(x):
        return x * w  # 前向传播:预测值 = 输入x * 权重w
    
    def loss(x, y):
        y_pred = forward(x)
        return (y_pred - y) ** 2  # 计算损失(MSE的单个样本形式)
    
    # 训练前预测
    print("predict (before training)", 4, forward(4).item())
    
    # 训练循环(100轮)
    for epoch in range(100):
        for x, y in zip(x_data, y_data):
            l = loss(x, y)  # 计算单个样本的损失
            l.backward()    # 反向传播,计算w的梯度
            print('\tgrad:', x, y, w.grad.item())  # 打印当前梯度
            # 更新权重(用.data避免梯度追踪)
            w.data = w.data - 0.01 * w.grad.data
            w.grad.data.zero_()  # 2清空梯度(避免累积)
        # 每轮结束后打印当前损失
        print("progress:", epoch, l.item())
    
    # 训练后预测
    print("predict (after training)", 4, forward(4).item())

3.代码结果

扩展:反向传播≠梯度下降,不明白的同学回顾【从零开始学pytorch架构】第二课梯度下降

  • 反向传播方向既定;
  •  梯度下降是朝着最优参数的方向,w增大或者缩小是根据导数的正负决定的。        

更多推荐