Loading...
正在加载...
请稍候

《Born》第10章:优化器与损失函数

QianXun (QianXun) 2026年06月13日 13:36

训练神经网络需要两个核心组件:损失函数告诉模型「错在哪里」,优化器告诉模型「怎么改」。


损失函数

// 交叉熵(分类任务)
lossFn := nn.NewCrossEntropyLoss[float32](backend)
loss := lossFn.Forward(logits, labels)

// 均方误差(回归任务)
mse := nn.NewMSELoss[float32](backend)
loss := mse.Forward(predictions, targets)

交叉熵的数学:

\[L = -Σ y_true · log(softmax(y_pred))\]

优化器

SGD(带动量)

optimizer := optim.NewSGD[float32](0.01, model.Parameters()...)
optimizer.Step() // 执行参数更新

Adam

optimizer := optim.NewAdam[float32](0.001, model.Parameters()...)

AdamW(解耦权重衰减)

optimizer := optim.NewAdamW[float32](0.001, 0.01, model.Parameters()...)
// lr=0.001, weight_decay=0.01

训练循环

for epoch := 0; epoch < numEpochs; epoch++ {
    for _, batch := range trainLoader {
        // 1. 清零梯度
        optimizer.ZeroGrad()
        
        // 2. 前向传播
        output := model.Forward(batch.Input)
        
        // 3. 计算损失
        loss := lossFn.Forward(output, batch.Label)
        
        // 4. 反向传播
        tape.Backward(loss)
        
        // 5. 参数更新
        optimizer.Step()
    }
}

学习率调度

// 余弦退火
scheduler := optim.NewCosineAnnealingLR(optimizer, maxEpochs)
scheduler.Step()

// 学习率预热
scheduler := optim.NewLinearWarmup(optimizer, warmupSteps, baseLR)

📘 《Born》连载技术书,第 10/22 章。

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录