某医疗系统要用一次“线性映射 + 线性分类”结构对问卷症状序列做三步计算:前向预测、MSE 损失、一次 SGD 权重更新。设一条问卷包含 L 条症状记录,每条症状是 D 维向量。先用一个 D×D 的权重矩阵把每条症状做线性变换,再用一个 D×K 的权重矩阵得到 K 维分类打分。把所有记录的打分在“症状条目维度”求平均,得到最终的 K 维预测向量(不做 softmax 归一化)。随后与给定的 K 维真实向量做 MSE 损失,并用学习率 η 进行一次 SGD 更新这两个权重矩阵(均无偏置)。
输入描述:
输入第 1 行:L,D,K,η第 2 行:真实向量 y(K 个数)第 3 行:序列矩阵 X(按行展平,共 L×D 个数)第 4 行:映射矩阵 W_mlp(按行展平,共 D×D 个数)第 5 行:分类矩阵 W_cls(按行展平,共 D×K 个数)计算规则(均为行优先展平与输出,四舍五入保留 2 位小数):H = X @ W_mlp(逐行相乘),h_mean = 每行 H 的平均(1×D)y_pred = h_mean @ W_cls(1×K)MSE = (1K) * Σ(y_pred[i] − y[i])^2令 g = (2K) * (y_pred − y)(1×K)grad_W_cls = 外积(h_mean, g)(D×K)令 x_mean = 每行 X 的平均(1×D),u = g @ W_cls^T(1×D)grad_W_mlp = 外积(x_mean, u)(D×D)参数更新:W_mlp -= η * grad_W_mlp,W_cls -= η * grad_W_cls
输出描述:
输出共 4 行:1) y_pred(K 个数) 2) MSE(1 个数) 3) 更新后的 W_mlp(D×D 个数,行优先) 4) 更新后的 W_cls(D×K 个数,行优先)
示例1
输入
1,2,3,0.3
0.5,1.5,2.0
1.0,2.0
1.0,0.0,0.0,1.0
1.0,0.0,0.0,0.0,1.0,1.0
输出
1.00,2.00,2.00
0.17
0.90,-0.10,-0.20,0.80
0.90,-0.10,0.00,-0.20,0.80,1.00
说明
h_mean = [1,2];y_pred = [1,2,2];MSE = 0.17。
g = (2/3)*([0.5,0.5,0]) = [0.33,0.33,0.00];据此求两矩阵梯度并以 η=0.3 更新后得到上述权重。
备注:
本题由牛友@Charles 整理上传
加载中...