题目给定了一个线性模型:
y=w1x1+w2x2+b并要求按照样本输入顺序,使用 AdamW 优化算法对参数 (w1,w2,b) 进行逐样本迭代更新。初始参数、一阶动量、二阶动量均为 0。
在网络通信业务中,网络带宽预测模型用于保障数据传输稳定性。现有一个线性预测模型:
y=w1x1+w2x2+b其中 y 表示带宽,x1 与 x2 是影响带宽的两个因子,w1,w2 是权重参数,b 是偏置参数。给定一批样本,要求使用 AdamW 优化算法依次处理每个样本,迭代更新模型中的三个参数。
对于单个样本 (x1,x2,ytrue),预测值为:
ypred=w1x1+w2x2+b损失函数采用平方误差:
L=(ypred−ytrue)2当前样本对三个参数的梯度分别为:
gw1=2(ypred−ytrue)x1 gw2=2(ypred−ytrue)x2 gb=2(ypred−ytrue)AdamW 更新规则如下。设当前样本编号为 t,从 1 开始计数。超参数固定为:
0.9,二阶动量系数 β2 为 0.999;0.01;0.001;1e-8。对任意参数 θ∈{w1,w2,b},记当前梯度为 gt。先更新一阶动量:
mt=β1mt−1+(1−β1)gt再更新二阶动量:
vt=β2vt−1+(1−β2)gt2随后进行偏差修正:
m^t=1−β1tmt v^t=1−β2tvt最后使用 AdamW 规则更新参数:
θt=θt−1−α(v^t+ϵm^t+λθt−1)所有参数与一阶、二阶动量的初始值均为 0.0:
给定样本后,需要按样本顺序逐个执行上述更新,并输出最终得到的 w1,w2,b。
从标准输入读取数据。第一行包含一个整数 N,表示样本数量。
接下来 N 行,每行包含 3 个浮点数,依次表示 x1、x2、ytrue。
向标准输出打印一行,包含 3 个浮点数,依次表示最终得到的 w1、w2、b。所有浮点数保留 6 位小数,采用银行家舍入,数字之间用一个空格分隔,行首和行尾不要有多余空格。
输入
1
2.0 -1.0 1.0
输出
0.001000 -0.001000 0.001000
说明
初始参数均为 0.0。对唯一样本 x1=2.0、x2=−1.0、ytrue=1.0,初始预测 ypred=0.0,误差为 -1.0。
计算梯度得 gw1=−4.0、gw2=2.0、gb=−2.0。按 AdamW 更新后,w1=0.001、w2=−0.001、b=0.001,保留 6 位小数即为输出。
输入
2
1.0 0.0 1.0
1.0 0.0 1.0
输出
0.002000 0.000000 0.002000
说明
初始参数均为 0.0。处理第 1 个样本 (1.0,0.0,1.0) 后,w1=0.001、w2=0.0、b=0.001。
处理第 2 个样本时,预测值 ypred=0.001+0.001=0.002,误差为 -0.998。该样本梯度为 gw1=−1.996、gw2=0、gb=−1.996。
更新后 w1 和 b 约为 0.001999937,保留 6 位小数均为 0.002000;w2 保持为 0.000000。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册