Vince Jiang

CSCI3230 / 作业与题解 · 本站更新

CSCI3230 HW01 · 2026T1 · 分级提示

学习衔接:本次课件内容补全后,可直接学习 回归建模、最小二乘、逻辑回归 与 梯度下降,再逐小问作答;本篇保持原作业题号、数据及提示/答案边界。作业题面核验记录沿用此前版本,本次不称重新核对试卷。

课程:CSCI3230 / ESTR3108 · 2026–2027 Term 1 本份:Assignment 1,按 Q1–Q4 的 13 个小问练习 定位:先独立尝试;卡住时只展开一层,得到方向后就停下来继续写。

题目依据本学期 HW01 原题(本地课件),页码均为 PDF 页号。下文是保留条件的题目简述,公式按原题重排;不是完整解答。原题已给出的证明目标也单独收起,方便先挑战推导。

本页的提示不是按“看完三层就抄完答案”设计。每层先给你一个能动笔的小动作;得到方向就收起页面继续尝试。补充例子明确使用自取数字,不替本题计算。

每小问的提示 2 藏在提示 1 内,提示 3 藏在提示 2 内;不会自动展开。先写出你已经知道什么、未知量是什么,再决定是否继续看。完整解析入口在文末,需另行展开确认。

Q1 · 多项式回归(p.1–2)

条件:以训练数据最小化 RSS,分别拟合一次、二次、四次多项式,再使用测试集评估。训练和测试各 10 行;测试数据不能参与拟合。原题 p.1 的数据如下:

行 训练 x 训练 y 测试 x 测试 y
1 7 0.9 7.2 0.6
2 1.6 1.4 1.1 1
3 3.8 0.7 3.6 0.3
4 4.7 -0.3 4.8 -0.4
5 4 0 4.3 0
6 6.3 0.6 6.6 0.2
7 7.9 1.7 7.8 1.8
8 5.7 0.1 5.6 0.6
9 7.1 2.1 7.3 1.7
10 8 1.3 8.2 1.3

Q1(a) · 一次模型(p.1,5%)

求 f(x)=θ0+θ1xf(x)=\theta_0+\theta_1x 的解析解,并将拟合直线与训练点画在同一张图。

提示 1 · 切入点

先不要算系数。在纸上写下“已知的是十行输入和标签;未知的是两个共用参数”。选任意一行,只把这一行预测写出来,再看下一行是否用的还是同两个参数。你不是要给十个点各配一条线。

如果“矩阵”让你卡住,先用列来理解:一列负责基础值,另一列负责输入带来的变化。想一想,第一列应放什么数,才能让每行都恰好加一次截距?先自行写出两行就停,检查它们乘参数后是否回到题给模型。

提示 2 · 关键关系

把你刚写的十行收集为设计矩阵 AA,把两个参数竖排为 θ\theta,标签竖排为 yy。先检查乘法输出是否是一列十个预测。于是 Aθ−yA\theta-y 表示逐行“预测减真实”,而不是两个数据集相减。

目标可写成 (Aθ−y)T(Aθ−y)(A\theta-y)^T(A\theta-y)。不熟矩阵求导时,先对一个参数求导:只挑一条残差平方,外层平方和内层预测各对导数贡献什么?得到这一行的结果后,再考虑十行怎样合起来。这里先推关系,暂不代入本题数字。

提示 3 · 下一步与自检

把两个参数的导数分别设为零,你应得到两个未知量的线性方程。先解这组方程,再将所得参数代回十条预测;不要把“有逆矩阵公式”当作矩阵总可逆的证明。

自检可以用 AT(Aθ^−y)A^T(A\hat\theta-y):它应接近零向量,长度应与参数个数相同。画图时把训练点作为散点,把模型在连续横坐标上的预测作为线;若你只是按表格行号连接十个点,还没有画出拟合模型。

Q1(b) · 二次模型(p.1,5%)

求 f(x)=θ0+θ1x+θ2x2f(x)=\theta_0+\theta_1x+\theta_2x^2 的解析解,并画曲线与训练点。

提示 1 · 切入点

这一问增加了曲线的弯曲能力,但没有改变“选一套共用系数,使总平方误差小”的任务。把式子中已知的输入部分与未知系数用两种标记圈开:平方加在输入上,还是加在参数上?

先尝试用一句话解释为什么仍能沿用(a)的求解路线。只要把各输入变换看成提前算好的数字,你就可以把它们当作新的特征列。此时不要重新发明一套与(a)无关的解法。

提示 2 · 关键关系

原题已经提示加入平方特征列。你可以先单独练一行:补充自取输入为2时,平方特征为4;这只是同一个样本多了一种描述,不是多生成一条标签。

回到题表,逐行计算所需特征,并检查每行仍与原来的 yiy_i 配对。矩阵应有10行、3列。暂时不要把整张表和求解连在一个黑箱操作里,先查一次行列含义,尤其检查常数列是否还在。

提示 3 · 下一步与自检

用你在(a)已经推出来的方程替换新的设计矩阵,求三个参数;仍只使用训练集。求解后挑一条训练输入,分别用多项式与矩阵乘法算预测,检查二者一致。

画曲线时另取从小到大的横坐标网格。原题输入行本来没有排序,直接按原行序连预测会折返,这不是二次模型的真实形状。最终显示系数时可以舍入,但检验与作图尽量使用未舍入结果。

Q1(c) · 四次模型(p.2,5%)

求 f(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4f(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4 的解析解,并画曲线与训练点。

提示 1 · 切入点

先数清这次要学几个系数,而不是看到“四次”就把参数本身取四次幂。把(b)的预测看成已有的三块贡献;题目现在再允许哪两种输入变换贡献预测?

你只是在扩展特征集合,训练样本仍是原来的十行。先写出列的含义,不急着填完整数据或计算解。

提示 2 · 关键关系

按模型正文,从常数幂到四次幂检查列顺序。原件p.2提示矩阵最后一行的三次列印成了四次;应以题目明确写出的模型为准,不把同一幂重复当成两种特征。

补充自取输入为2:三次幂为8、四次幂为16。用这个小例区分它们后,再检查本题每行。这个检查只帮你保证数据表示正确,没有替你组成完整设计矩阵。

提示 3 · 下一步与自检

先用足够精度解方程,再代回训练集评估。数值系数可能有正有负,不要因为符号相反就擅自删项;多项式各项可能互相抵消,过早舍入会放大误差。

做一个结构自检:四次模型的允许集合是否包含你在(b)得到的模型?如果包含,想想精确求得的最小训练RSS之间应满足什么关系。若你的数值结果明显违反这个关系,先查列、标签顺序及精度;不要据此直接判断测试表现。

Q1(d) · 泛化判断(p.2,10%)

观察三条函数,判断哪些可能欠拟合、过拟合,哪个相对较好;计算测试数据的预测误差检验判断。

提示 1 · 切入点

先把“拟合训练记录”和“预测新记录”分成两张纸。训练图只告诉你第一件事;判断泛化,还需要第二件事的结果。不要看到次数高就直接写过拟合,也不要看到训练误差小就宣布最佳。

先用普通话描述三条曲线:它有没有抓住数据的大致走势?哪里出现较大的局部弯折?这些只是待检验的观察,还不是最终判定。然后才打开测试表去找证据。

提示 2 · 关键关系

为每个已经求好的模型留两格:训练RSS、测试RSS。测试时固定参数,只把测试横坐标代进去,再与同一行的测试标签相减。不要用测试标签再拟合一次,否则你评价的是另一个模型。

若平方和仍不直观,补充自取两个残差为1和−1:直接相加为0,却不表示两次都预测正确。先想清应怎样合成这两条误差,再回本题逐项计算。这里不预先告诉你哪个次数获胜。

提示 3 · 下一步与自检

检查每个模型的误差都在同一组测试样本上计算、都使用同一尺度。RSS是平方后求和;若报告MSE,写清还除以多少条样本。不要把“先把残差相加再平方”当成RSS。

写结论时让每一句都有对应证据:训练表现与测试表现是否一起改善?是否出现一边更好另一边更差?也看看测试横坐标有没有超出训练范围,但不要把单个外推点自动解释为某个模型一定失败。

Q2 · 岭回归(p.2)

有 MM 个样本,xix_i 是特征行向量,Θ\Theta 是斜率向量,θ0\theta_0 是截距。原题目标为

J(Θ,θ0)=∑i=1M(xiΘ+θ0−yi)2+λ∥Θ∥22,λ>0. J(\Theta,\theta_0)=\sum_{i=1}^{M}(x_i\Theta+\theta_0-y_i)^2+\lambda\lVert\Theta\rVert_2^2,\qquad\lambda>0.

若每条记录有 nn 个特征,xix_i 是 1×n1\times n 行向量,Θ\Theta 是 n×1n\times1 列向量,因此 xiΘx_i\Theta 与截距、标签一样都是标量。xˉ\bar x、yˉ\bar y 分别为特征均值向量和标签均值;截距不在惩罚项中。沿用原题求和损失,不自行增加平均因子。

Q2(a) · 截距的最小化(p.2,10%)

原题在残差内加减 xˉΘ\bar x\Theta,要求证明给定截距使目标最小。先固定斜率,尝试自行找到该截距;原题给定表达式可展开查看。

提示 1 · 切入点

这问先只动截距。把斜率向量想成暂时锁住的旋钮;现在允许整组预测一起向上或向下移动,寻找平方误差最低的位置。给含 θ0\theta_0 的项做标记,再检查惩罚项有没有这个符号。

写“固定斜率”不是形式要求:若同时改变斜率与截距,你就把这一小问扩成了整个岭回归问题。先把一次只优化一个变量的范围守住。

提示 2 · 关键关系

先只对一条残差平方求截距导数,再把所有样本相加。每条残差里截距的系数相同;检查你是否为它误乘了某个输入特征。惩罚项在这一步是否会变化,也要自己说明。

当求和式变长时,用均值定义替换数据的累加。可以先练没有模型的补充小例:三个数2、5、8的总和等于“个数乘均值”。同一个规则可以按坐标用于特征行向量。整理后由你自己解出截距,不在这里写目标闭式。

提示 3 · 下一步与自检

找到让一阶导数为零的候选后,还差“确实最小”的理由。只沿截距方向再求一次导数,检查它的符号;或把该方向写成非负平方项加常数。

最后用一句话写清:你的候选是在其他参数固定时使哪一个函数最小。不要把一个驻点直接当作一般函数的最低点,也不要把截距放进原本只惩罚斜率的项里。

Q2(b) · 中心化(p.2,5%)

令 xc,i=xi−xˉx_{c,i}=x_i-\bar x、yc,i=yi−yˉy_{c,i}=y_i-\bar y,将 (a) 的截距代入,证明目标可以只用中心化输入、标签和斜率表示。

提示 1 · 切入点

中心化只是“减去本列的平均值”,不是复杂的新算法。补充自取一列输入2、4、6:均值为4,减均值后是−2、0、2,和为零。标签列有自己的均值,不使用输入列的均值。

回到本题,先挑一个样本,把它原来的残差单独写下来。暂时不展开平方,也不同时处理整个求和;这一行变清楚后,其他行会用相同规则。

提示 2 · 关键关系

把(a)中你自己得到的截距代入这一条残差。接下来只做整理:含特征与斜率的部分放在一起,含标签及标签均值的部分放在一起。每次移动负号时都保留括号。

看看哪些组恰好对应题目定义的中心化量,再用短符号替换。先亲手完成这一行的等价变形,不要以“都是减均值”一句话跳过最关键的符号整理。

提示 3 · 下一步与自检

将你改写后的单行残差放回平方和。检查改写之前与之后是否只是同一个数的两种写法,正则项有没有被无故增加、减去或缩放。

完成后应能只用中心化数据与斜率描述这部分优化,而截距仍可在最后由(a)恢复。若你引入了标准差或把惩罚项也中心化,先停下来:本题只要求减均值,没有提出那些新操作。

Q2(c) · 斜率的解析解(p.2,10%)

对中心化后的目标 Jc(Θ)J_c(\Theta) 求一阶导数,得到岭回归斜率的解析解。

提示 1 · 切入点

先确认对象形状。若每条样本有 nn 个特征,中心化数据有 MM 行、nn 列;斜率是 nn 项的列向量,中心化标签有 MM 项。因此残差是样本长度,梯度却应是参数长度。

与Q1相比,拟合误差部分仍是残差平方和,现在额外多了参数惩罚。先把两部分分开处理,别试图从记忆里一次写出最终逆矩阵公式。

提示 2 · 关键关系

若矩阵求导卡住,就只挑斜率的一个分量求偏导:对每条残差平方用链式法则,再把样本贡献加起来。惩罚部分可以先写成参数分量的平方和,看看其中哪些项与当前分量有关。

分别得到两部分的导数后,才将它们相加、设为零并整理。所有含未知斜率的项放同一侧;若为了相加引入单位矩阵,它的行列数应与斜率长度相匹配。这一步由你自己写出系数矩阵。

提示 3 · 下一步与自检

把结果视为一组线性方程,而不是看到方阵就直接写逆。为了说明可逆,取一个非零向量 vv,用它从左右夹住你得到的系数矩阵;检查所得标量中哪一部分永不为负,哪一部分在 λ>0\lambda>0 时严格为正。

最后区分两份输出:这一步求的是斜率;截距要回(a)恢复。整个过程都不能把未受罚的截距误加进同一惩罚矩阵。这里保留你完成导数、合并与求解的关键步骤。

原题 Q2(a)、Q2(b) 给定的目标式(可选查看)

Q2(a) 要证明固定斜率时,θ0=yˉ−xˉΘ\theta_0=\bar y-\bar x\Theta 使截距方向的目标最小。

Q2(b) 要得到 Jc(Θ)=∑i=1M(xc,iΘ−yc,i)2+λ∥Θ∥22J_c(\Theta)=\sum_{i=1}^{M}(x_{c,i}\Theta-y_{c,i})^2+\lambda\lVert\Theta\rVert_2^2。

Q3 · Logistic 回归(p.3)

使用线性分数 z=θ0+θ1x1+θ2x2z=\theta_0+\theta_1x_1+\theta_2x_2、sigmoid σ(z)=1/(1+e−z)\sigma(z)=1/(1+e^{-z}) 和交叉熵。初始参数为 θ0=−1\theta_0=-1、θ1=1.5\theta_1=1.5、θ2=0.5\theta_2=0.5;学习率为 0.10.1。原题数据如下:

行 训练 x1 训练 x2 训练 y 测试 x1 测试 x2 测试 y
1 0.15 0.35 0 0.28 0.82 1
2 0.30 0.45 0 0.45 0.75 1
3 0.55 0.25 0 0.58 0.62 1
4 0.30 0.80 1 0.72 0.48 1
5 0.55 0.60 1 0.22 0.40 0
6 0.70 0.50 1 0.50 0.26 0

计算约定:原题写交叉熵与“一次 iteration”,没有在题面展开 sum/mean、批量细节或阈值。为与课程既有解析保持一致,本提示按求和交叉熵、全批量同步更新、阈值 0.5、类别 1 为正类理解;这些是计算约定,不冒充题面逐字条件。作答时写清自己的约定。

Q3(a) · 模型与损失(p.3,5%)

写出正类概率的 logistic 模型及其交叉熵误差函数。

提示 1 · 切入点

先画三个框:输入特征→线性分数→正类概率。分数可以是任意实数,概率必须在0与1之间;阈值分类还在概率之后。这问先要求模型与损失,不需要先输出每行最终类别。

原题已经给了线性分数和sigmoid定义。先由你把两者接起来,再检查输入两个数时输出是否只有一个正类概率。不要把初始权重、真实标签与概率混成同一列。

提示 2 · 关键关系

记第 ii 行正类概率为 pip_i。真实标签若为1,观察到该标签的概率用哪一个数?标签若为0,又应取哪一部分?先分两种情况写,不急着合成一个长公式。

损失希望“真实标签越不可能,惩罚越大”。考虑对刚才的概率取负自然对数,再想怎样利用0/1标签将两种情况合并。这里不给出合并后的最终交叉熵,留给你完成这一问。

提示 3 · 下一步与自检

用补充自取概率来查方向:真实类别的概率从0.8降到0.2,惩罚应该增加还是减少?这不需要本题的数据,只检查你有没有漏掉负号或把两类概率放反。

再写清跨样本采用求和还是平均,并与(b)保持一致。若写的是总损失,梯度也应来自同一个总损失;不能在公式写求和、计算时又未经说明除以样本数。

Q3(b) · 一次更新(p.3,10%)

用训练集做一次梯度下降,更新三个参数并写出新的 logistic 模型。

提示 1 · 切入点

先做一张训练计算表,列名为“旧分数、旧概率、真实标签”。用同一套题给初始参数填完六行,再考虑导数。此时只做前向计算,不更新任何一个权重。

如果你边算第一行就改参数,后面的行会用另一套模型,已经不再是这里采用的全批量一步更新。把“旧参数”写在表头,有助于防止不知不觉改成逐样本更新。

提示 2 · 关键关系

把一个样本的计算链拆为三段:损失随概率怎样变、概率随分数怎样变、分数随当前参数怎样变。每次只对一个变量求导,其他量暂时固定,再按链式法则连接。

截距与两个权重最后这一段不同。可先看补充表达式 a+bu+cva+bu+cv:改变 aa 一点点时,整个分数怎样变?改变 bb时又与哪个输入有关?这是机制练习,不是本题梯度数值。完成单行后,再聚合六行贡献。

提示 3 · 下一步与自检

把三个梯度先各写在独立格中,检查它们都由旧参数计算。然后才同步做“旧值减学习率乘梯度”;同一轮不要让第二个参数使用第一个已经更新后的值。

若怀疑某个导数的正负号,可以暂时只将该参数向两侧各挪很小一步,比较损失变化来检验方向。保持其他参数、数据与sum/mean约定不变。这只是核验办法,不在此给出三个梯度或更新后的参数。

Q3(c) · 测试评价(p.3,10%)

用 (b) 的新模型预测全部测试样本,计算 accuracy、precision、recall。

提示 1 · 切入点

这问不再训练。锁定(b)的新参数,把测试表每行依次变成分数、概率、预测类别,再保留旁边的真实标签。检查你没有误用题目最初那套参数,也没有把训练行复制进测试表。

在表头先注明阈值、恰好等于阈值时的规则,以及哪个标签叫正类。先确定约定,再统计,避免为了让某个结果看起来合理而中途换标准。

提示 2 · 关键关系

逐行比较“实际”和“预测”,先分四堆再算指标。TP与TN都是预测对,但所属实际类别不同;FP是误报成正类,FN是把实际正类漏掉。

用独立的补充判断练手:一条实际标签0、预测标签1的记录,该归哪堆?先用中文说明它错在哪里,再决定字母。回到本题六行做同样动作,不跳过逐行记录直接猜总数。

提示 3 · 下一步与自检

四堆计数总和应等于测试行数。接着为每个指标先说清分母的含义:accuracy覆盖全部样本,precision只问“被报为正”的那些,recall只问“实际为正”的那些。不要把后两组集合混用。

若某个分母为零,需要明确所采用的处理约定;不能机械除零。保留计数表后再换算比例,便于发现一个样本分类错放导致的连锁变化。此处不给出本题任何混淆矩阵计数或指标数值。

Q4 · Softmax(p.3–4)

一个 nn 维样本 XX,共 KK 类,每类有权重向量 Θi\Theta_i。标签为 one-hot:只有真实类别对应分量为 1,其他为 0。记

zi=XTΘi,pi=ezi∑k=1Kezk. z_i=X^T\Theta_i,\qquad p_i=\frac{e^{z_i}}{\sum_{k=1}^{K}e^{z_k}}.

这里 XX 和每个 Θi\Theta_i 都是 n×1n\times1 列向量,zi,piz_i,p_i 是标量;nn数特征,KK数类别。Q4的大写 XX是一条样本,不沿用Q1中“整张训练矩阵”的含义。先圈清这个记号变化,再求导。

原题 (a)、(c) 已印出要求证明的目标式。为避免提前揭底,目标式另行收起;推导提示不直接复述最终结果。

Q4(a) · 对分数求导(p.3,10%)

计算 pip_i 对 zj=XTΘjz_j=X^T\Theta_j 的导数,分别讨论 j=ij=i 与 j≠ij\ne i,得到原题给定的分段表达式。

提示 1 · 切入点

先把 ii 与 jj 分开:ii表示你在观察哪一个输出概率,jj表示你正在改变哪一个输入分数。它们相等和不等是两个不同情况,不要在第一行就默认同一个下标。

将公共分母暂叫 SS,先不求导,只做依赖检查:改变某一个分数时,分母里哪一项变化?若改变的正好是第ii类,分子又是否变化?把这个判断用两行中文写清,再继续。

提示 2 · 关键关系

当分子、分母都会变时,使用商法则,两部分都必须考虑;当分子不含正在改变的分数时,该分子的导数是什么?先分别写各自的未化简结果,保留指数与 SS。

如果商法则记不清,可先独立复习普通函数分式求导。这里不要直接猜概率形式的结论;本题要你证明的正是这一步如何从原定义得到。

提示 3 · 下一步与自检

在你已经写出的分式里,找出“某个指数除以公共分母”的组合,尝试用相应概率符号缩短表达式。一次只替换一组,避免下标被你一起改掉。

用依赖方向自检:只提高本类分数时,本类概率应朝哪个方向变?只提高竞争类分数时呢?再检查所有概率仍总和为1所带来的导数约束。这些检查能发现符号错误,但这里不列出最终分段导数。

Q4(b) · 对权重求导(p.4,5%)

计算 pip_i 对权重向量 Θj\Theta_j 的导数。原题提示在概率对分数、分数对权重之间使用链式法则。

提示 1 · 切入点

(a)改变的是一个标量分数;这一问改变的是一组权重。先写出 Θj\Theta_j 有几项,并判断关于这组权重的梯度应该有几项。概率输出仍是一个数,不会因为权重是向量就变成一串概率。

沿着同一条依赖链看:权重先影响第jj个分数,分数再影响第ii个概率。先把两个箭头画出来,不要一上来重写整段softmax。

提示 2 · 关键关系

把 XTΘjX^T\Theta_j 写成坐标相乘再相加,只挑一个权重分量求导,其余权重与输入都固定。先解释“这一个权重影响的是哪一项”,再把每个分量的结果排起来。

这个局部导数完成后,才接(a)已经求得的标量变化率。注意这里 jj是类别编号,权重里的坐标编号是另一个索引,别把类别数 KK 与特征数 nn 混成一个维度。

提示 3 · 下一步与自检

组合结果时问自己:一个标量乘一个向量后,形状应是什么?对照 Θj\Theta_j,检查方向与长度一致。若出现 KK项但权重本来有 nn项,回查你是否对错对象求导。

保留 i=ji=j 与 i≠ji\ne j 两种情况,或明确说明你采用的统一记法。不要遗漏竞争类:公共分母意味着输出概率不仅依赖自己的权重。最终向量表达式仍由你写出。

Q4(c) · 交叉熵的梯度(p.4,10%)

对损失 E=−∑i=1Kyiln⁡piE=-\sum_{i=1}^{K}y_i\ln p_i 关于 Θj\Theta_j 求导,证明原题给定的梯度表达式。

提示 1 · 切入点

先读损失里的求和:它对类别求和,当前题目仍只有一个样本,不是对一批样本求和。标签向量one-hot,意味着某一类有真实标签1,而不是只有那一类概率存在。

关于 Θj\Theta_j 求导时,公共分母使多个概率都依赖它。先保留损失的整个求和,对每一项检查依赖,不要未经推导就只留下下标jj那项。

提示 2 · 关键关系

挑求和中的一项,先对自然对数求导,再接(b)中相应的概率梯度。不要把 yiy_i 当成待学习参数;本题标签是固定数据。

之后再把 i=ji=j 的项与其他项分开书写。此时宁可多留一行,也不要跳过负号、概率分母或标签因子。你已经有(a)(b)的局部结果,这一步的任务是正确组合它们,不是从头重新求softmax。

提示 3 · 下一步与自检

整理到仍含标签求和时,再使用one-hot标签所有分量之和为1的性质。先确认你的和到底覆盖所有类别,还是只覆盖排除了jj的那些,二者不能直接同写为1。

最后检查梯度是否与 Θj\Theta_j 同维度,以及式中是否仍明确对应固定样本的输入。还可用一次很小的权重扰动比较损失变化方向,作为独立数值自检。这里不提供原题最终梯度,也不替你完成最后合并。

原题 Q4(a)、Q4(c) 给定的目标式(可选查看)

Q4(a) 原题给定:

∂pi∂zj={pi(1−pj),j=i,−pipj,j≠i. \frac{\partial p_i}{\partial z_j}=\begin{cases}p_i(1-p_j),&j=i,\\-p_ip_j,&j\ne i.\end{cases}

Q4(c) 原题给定:

∇ΘjE=Xpj−Xyj. \nabla_{\Theta_j}E=Xp_j-Xy_j.

补充 · 不看结果也能进行的过程检查(通识讲解;演示数据不属于原题)。

下面只检查你写的过程是否自洽,不提供本题系数、误差、更新后参数或最终导数。先完成自己的草稿,再按需要展开。

Q1 · 检查你是在训练还是在测试

把每个求和的样本来源标出来:求参数时是否混入测试行?画图横坐标是否排序,而散点仍保持各自输入标签配对?比较不同次数时,是否一直用同一套训练与测试数据?不要先看哪条曲线漂亮再倒改数据划分。

Q2 · 检查你究竟对哪个变量求导

在每一行左侧写清“固定哪些量、正在改变哪个量”。样本均值由数据决定,不随参数改变;截距是否被惩罚必须按题目原定义。若做了中心化替换,把替换后的变量再代回原预测式,检查预测是否保持一致。

Q3 · 检查一次更新的时间顺序

先把旧参数框起来;所有样本概率与梯度都应来自这一套旧参数。汇总后再统一更新。测试评价使用哪套参数、哪个阈值、怎样处理等于阈值的情形,分别标清;不能一边累计梯度一边偷偷改参数。

Q4 · 检查下标与对象,而不是猜最后形式

先标明每个下标是类别编号、特征编号还是样本编号。确认正在求导的量是一个分数、一个权重分量还是整条权重向量。遇到求和时逐项问“这一项是否也依赖所求变量”,再决定能否删去;维度检查应在化简前后各做一次。

补充:交卷前先做不揭晓答案的反向检查

以下只提示检验路径,不给本题结果;可在保留自己的草稿后逐项展开。

数值题:从输出回到原定义

不要只把结果与另一组四舍五入数字比较。把自己得到的参数代回原预测式,逐条重建预测,再按题目定义重算目标。矩阵实现与逐样本求和若不一致,先检查系数排列、标签配对、截距列与sum/mean约定。测试阶段是否又重新求了一次参数,也应单独核对。

证明题:挑一个边界条件试探你的结论

每当写出“唯一”“可逆”“最小”,指出自己使用的具体假设。尝试让某个特征列重复、让正则化参数退回无惩罚情况,看看推导哪一步需要重新讨论。边界检查用来找到遗漏条件,不是替代题目要求的一般证明。

梯度题:检查没有被改变的方向

若给所有类别分数加同一个常数,概率是否应该改变?用这个问题检查你对各类别偏导的整体关系。若程序更新顺序改变了答案,检查是否把一次同步更新不小心写成逐样本或逐参数顺序更新。

想清楚后再对照

先保存自己的过程,记下具体卡在哪一步。下面的入口会离开提示模式,显示完整推导与数值结果。

我准备查看完整解析(展开后再确认)

这会显示解答细节。如果只需要一点方向,可以收起这里,回到对应小问。

确认查看 HW01 完整解析

来源与证据

  • 题目、分值、数据与公式:HW01-2026T1-题目.pdf(本地课件),PDF p.1–4;提交说明在 p.5。原件保留本地。
  • 本页只提供辅助思考,不构成正式作答文件或提交记录。未读取同学答案,也未使用 2025 年题目。