接上一篇,更新小白的解读

该文章已生成可运行项目,
  1. 现在我将详细解释训练过程中涉及的具体数学计算和操作:

1. 神经网络的前向传播计算

在我们的例子中,神经网络有两层全连接层(Linear Layer)。每一层都执行以下数学运算:

对于一个线性层(如 fc1 或 fc2),其数学表达式为:

Y = XW^T + B

其中:

  • X 是输入向量
  • W 是权重矩阵
  • B 是偏置向量
  • ^T 表示转置

具体来说,在我们的网络中:

第一层 fc1 将 2 维输入映射到 2 维输出:

[fc1](file:///d:/demo/my_torch/demo.py#L7-L7) 计算: h = x * W1^T + b1

然后应用 ReLU 激活函数:

a = ReLU(h) = max(0, h)  # 对h中的每个元素取最大值(0, h)

第二层 fc2 将 2 维输入映射到 1 维输出:

[fc2](file:///d:/demo/my_torch/demo.py#L8-L8) 计算: output = a * W2^T + b2

2. 损失函数计算

使用的是均方误差损失函数(MSE Loss):

Loss = (1/n) * Σ(output_i - target_i)^2

其中:

  • n 是样本数量
  • output_i 是神经网络对第i个样本的预测值
  • target_i 是第i个样本的真实值

3. 反向传播计算梯度

PyTorch 的自动微分系统会根据计算图自动计算梯度。反向传播使用链式法则计算每个参数的梯度:

对于复合函数 L = f(g(h(x))),链式法则是:

dL/dx = (dL/df) * (df/dg) * (dg/dh) * (dh/dx)

具体到我们的网络中,对于第二层权重 W2:

dL/dW2 = dL/d(output) * d(output)/dW2

对于第一层权重 W1:

dL/dW1 = dL/d(output) * d(output)/d(activation) * d(activation)/d(hidden) * d(hidden)/dW1

4. Adam优化器更新参数

Adam优化器结合了动量(Momentum)和RMSprop的思想。更新公式如下:

        计算梯度的一阶矩估计(均值)和二阶矩估计(非中心化的二阶矩):

m_t = β1 * m_{t-1} + (1-β1) * g_t
v_t = β2 * v_{t-1} + (1-β2) * g_t^2

其中:

  • g_t 是当前梯度
  • β1 和 β2 是衰减率(通常分别为0.9和0.999)

        进行偏差修正:

m_hat = m_t / (1 - β1^t)
v_hat = v_t / (1 - β2^t)

        更新参数:

θ = θ - lr * m_hat / (sqrt(v_hat) + ε)

其中:

  • lr 是学习率
  • ε 是一个小常数(通常为1e-8),防止除零错误

5. 整体训练流程的数学描述

在一个训练周期(epoch)中,完整的计算流程如下:

        前向传播:

h1 = X * W1^T + b1
a1 = ReLU(h1)
output = a1 * W2^T + b2

        计算损失:

loss = MSE(output, Y) = (1/n) * Σ(output_i - Y_i)^2

        反向传播计算梯度:

grad_W2 = d(loss)/d(W2)
grad_b2 = d(loss)/d(b2)
grad_W1 = d(loss)/d(W1)
grad_b1 = d(loss)/d(b1)

        Adam优化器更新参数:

W2 = W2 - AdamUpdate(grad_W2)
b2 = b2 - AdamUpdate(grad_b2)
W1 = W1 - AdamUpdate(grad_W1)
b1 = b1 - AdamUpdate(grad_b1)

这个过程重复多次,直到模型收敛或达到预设的训练轮数。通过这种方式,神经网络逐步学习输入和输出之间的映射关系。

本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值