深度学习系列(3):前向传播与反向传播

深度学习系列(3):前向传播与反向传播

在上一期中,我们介绍了深度神经网络(DNN)的基本概念。本期将深入探讨深度学习的核心计算过程——前向传播(Forward Propagation)反向传播(Backpropagation),它们是训练神经网络的关键步骤。


1. 前向传播(Forward Propagation)

前向传播是指数据从输入层经过隐藏层,最终传递到输出层的过程。在这个过程中,每一层的神经元都会对输入数据进行加权求和,并通过激活函数进行非线性变换。

假设一个简单的神经网络结构如下:

  • 输入层有 ( x_1, x_2 ) 两个神经元
  • 隐藏层有两个神经元,权重分别为 ( w_{11}, w_{12}, w_{21}, w_{22} )
  • 输出层有一个神经元,权重为 ( w_{31}, w_{32} )

计算步骤:

  1. 隐藏层计算
    [
    h_1 = f(w_{11}x_1 + w_{12}x_2 + b_1)
    ]
    [
    h_2 = f(w_{21}x_1 + w_{22}x_2 + b_2)
    ]
  2. 输出层计算
    [
    y = g(w_{31}h_1 + w_{32}h_2 + b_3)
    ]

其中,( f(\cdot) ) 和 ( g(\cdot) ) 是激活函数,例如 ReLU 或 Sigmoid。


2. 反向传播(Backpropagation)

反向传播用于计算损失对各层权重的梯度,并通过梯度下降法优化权重。核心思想是链式法则(Chain Rule),即通过输出层误差逐层向后计算梯度。

计算步骤:

  1. 计算损失
    [
    L = \frac{1}{2} (y - \hat{y})^2
    ]
  2. 计算输出层误差
    [
    \delta_3 = (y - \hat{y}) g’ (z_3)
    ]
  3. 计算隐藏层误差
    [
    \delta_2 = \delta_3 w_{32} f’(z_2)
    ]
    [
    \delta_1 = \delta_3 w_{31} f’(z_1)
    ]
  4. 更新权重(梯度下降)
    [
    w_{ij} = w_{ij} - \eta \cdot \delta_j \cdot x_i
    ]
    其中 ( \eta ) 是学习率。

3. 代码示例(PyTorch 实现)

import torch
import torch.nn as nn
import torch.optim as optim

# 定义简单的前向传播网络
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(2, 2)
        self.fc2 = nn.Linear(2, 1)
    
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = torch.sigmoid(self.fc2(x))
        return x

# 创建数据
x_data = torch.tensor([[0.5, 0.8]], dtype=torch.float32)
y_data = torch.tensor([[1.0]], dtype=torch.float32)

# 创建模型、损失函数和优化器
model = SimpleNN()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)

# 训练过程
for epoch in range(100):
    optimizer.zero_grad()
    output = model(x_data)
    loss = criterion(output, y_data)
    loss.backward()  # 反向传播
    optimizer.step()  # 更新权重

    if epoch % 10 == 0:
        print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')

4. 结论

前向传播用于计算输出值,反向传播用于计算梯度并优化网络参数。理解这两个过程是深入掌握深度学习的基础。下一期,我们将介绍 梯度消失与梯度爆炸问题 及其解决方案,敬请期待!


下一期预告:梯度消失与梯度爆炸

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值