
题目要求给你海量的 [x, y] 数据梯度下降求解yaxba 和 b。其中输入如下xnp.array([1,2,3,4,5])ynp.array([2,4,5,7,8])方案解答1. 构造损失函数训练模型时目标就是最小化均方误差 MSE均方误差损失函数。对于回归问题MSE L 1 N ∑ i 1 N ( y i − y ^ i ) 2 \text{MSE} \mathcal{L} \frac{1}{N}\sum_{i1}^N \big(y_i - \hat{y}_i\big)^2MSELN1i1∑N(yi−y^i)2其中y i y_iyi真实标签y ^ i \hat{y}_iy^i模型预测值将预测值代入MSE损失函数MSE L ( a , b ) 1 2 N ∑ i 1 N ( y i − ( a x i b ) ) 2 \text{MSE} \mathcal{L}(a,b) \frac{1}{2N}\sum_{i1}^N \big(y_i - (ax_i b)\big)^2MSEL(a,b)2N1i1∑N(yi−(axib))2除以 2是为求导后消去系数方便计算。2. 对参数求偏导1对参数a aa求偏导化简之后∂ L ∂ a 1 n ∑ i 1 n ( a x i b − y i ) ⋅ x i (1) \frac{\partial \mathcal{L}}{\partial a} \frac{1}{n}\sum_{i1}^{n} \big(ax_i b - y_i\big)\cdot x_i \tag{1}∂a∂Ln1i1∑n(axib−yi)⋅xi(1)2对参数b bb求偏导化简之后∂ L ∂ b 1 n ∑ i 1 n ( a x i b − y i ) (2) \frac{\partial \mathcal{L}}{\partial b} \frac{1}{n}\sum_{i1}^{n} \big(ax_i b - y_i\big) \tag{2}∂b∂Ln1i1∑n(axib−yi)(2)3梯度下降参数更新公式η \etaη为学习率a a − η ⋅ ∂ L ∂ a b b − η ⋅ ∂ L ∂ b \begin{align*} a a - \eta \cdot \frac{\partial \mathcal{L}}{\partial a} \\ b b - \eta \cdot \frac{\partial \mathcal{L}}{\partial b} \end{align*}aba−η⋅∂a∂Lb−η⋅∂b∂L3. Python实现importnumpyasnp xnp.array([1,2,3,4,5])ynp.array([2,4,5,7,8])nlen(x)# 超参数lr0.01# 学习率epochs30000# 迭代次数a,b0.0,0.0# 初始值for_inrange(epochs):y_hata*xb danp.sum((y_hat-y)*x)/n dbnp.sum(y_hat-y)/n a-lr*da b-lr*dbprint(fa {a:.4f}, b {b:.4f})4. 其他类似学习题目算法题 - 求一个正数的开方根梯度下降法