解题思路
题目给定了一个线性模型:
y=w1x1+w2x2+b
并要求按照样本输入顺序,使用 AdamW 优化算法对参数 (w1,w2,b) 进行逐样本迭代更新。初始参数、一阶动量、二阶动量均为 0。
题目内容
在华为网络通信业务中,网络带宽预测模型是保障数据传输稳定性的核心模块之一,通过历史数据拟合的带宽模型为:y=w1⋅x1+w2⋅x2+b(其中 y 表示带宽,x1 和 x2 为影响带宽的因子,w1 和 w2 为权重参数,b 为偏置参数)。请实现 AdamW 优化算法,基于给定样本数据迭代更新模型参数。
核心概念解释:
损失函数:对于单个样本 (x1,x2,ytrue),损失 L=(ypred−ytrue)2,其中 ypred=w1⋅x1+w2⋅x2+b
梯度计算:gw1=∂w1∂L=2⋅(ypred−ytrue)⋅x1
gw2=∂w2∂L=2⋅(ypred−ytrue)⋅x2
gb=∂b∂L=2⋅(ypred−ytrue)
AdamW 算法:
动量参数 β1=0.9,β2=0.999,权重衰减系数 λ=0.01,学习率 α=0.001,数值稳定性常数 ϵ=1e−8
一阶动量(m)更新:mt=β1⋅mt−1+(1−β1)⋅gt(gt 为当前梯度)
二阶动量(v)更新:vt=β2⋅vt−1+(1−β2)⋅gt2
偏差修正:m^t=1−β1tmt,v^t=1−β2tvt(t 为当前迭代次数,从 1 开始)
参数更新:θt=θt−1−α⋅(v^t+ϵm^t+λ⋅θt−1),其中 θ 表示 (w1,w2,b)
初始参数:w1=0.0,w2=0.0,b=0.0
初始一阶动量 mw1=0.0,mw2=0.0,mb=0.0,
初始二阶动量 vw1=0.0,vw2=0.0,vb=0.0
输入描述
第一行输入一个整数 N,表示样本数量;
接下来 N 行,每行 3 个浮点数 x1,x2,ytrue,表示一个样本。
输出描述
一行,3 个浮点数,依次为还原后的 w1,w2,b,结果保留 6 位小数,银行家舍入,以一个空格分隔,前后无冗余空格。
样例1
输入
3
1.0 1.0 2.0
2.0 2.0 4.0
3.0 3.0 6.0
输出
0.002750 0.002750 0.002923
说明
样本数量:3,后面共 3 行,表示 3 个样本,每行 3 个浮点数,以空格间隔
样本 1: x1=1.0,x2=1.0,ytrue=2.0
样本 2: x1=2.0,x2=2.0,ytrue=4.0
样本 3: x1=3.0,x2=3.0,ytrue=6.0
样例2
输入
1
0.0 0.0 0.0
输出
0.000000 0.000000 0.000000
说明
样本数量:1
样本: x1=0.0,x2=0.0,ytrue=0.0