VE472复习站 / 第5–6次作业

第5–6次作业:奇异值分解与并行优化

本页说明每道题的要求、知识点和解题步骤。本页还提供三个手算奇异值分解(SVD)例题。

来源与证据边界

本页直接核对以下材料:

题面事实
直接来自2026 h5/h6 PDF的要求。
课程连接
来自第4–5章整理页的概念、公式和系统边界。
可验证推导
可以通过矩阵乘法、特征分解、微分或工作量与计算深度模型直接检查。
未提交
当前没有可审计的HW6实现、报告、运行日志或结果;不得虚构。

第5–6次作业与第4–5章的对应关系

作业题对应章节作答时必须建立的连接
第5次作业第1题:数值稳定性 C4:扰动、SVD稳定性 非正交特征向量基下的特征分解受基矩阵条件数影响。SVD的 U,V 正交。Gram矩阵会使条件数平方。
第5次作业第2题:完整SVD C4:SVD定义、Gram、QR/SVD ATA 给出右奇异向量。AAT 给出左奇异向量。使用零空间补齐完整正交基。
第5次作业第3题:Spark中的PCA C4:PCA/SVD、tall-and-skinny;C5:PCA→GD 根据累计解释方差选择 k。主成分得分为 XV=UΣ。不得把响应变量 y 输入PCA。
第6次作业第1题:Newton方法与Gauss–Newton方法 C5:Taylor、Hessian、GD 从二阶模型推导Newton步长。线性最小二乘的Hessian矩阵等于 JTJ
第6次作业第2题:PRAM异或归约 第5章:有向无环图(DAG)、工作量与计算深度、Brent定理 二叉归约保持 Θ(n) 工作量,并把计算深度降为 Θ(log n)
第6次作业第3题:Spark算法变体 第5章:批量梯度下降、随机梯度下降(SGD)、Hogwild和广播变量 Spark执行器默认不共享驱动程序的可变内存。每种算法必须说明状态位置、通信方式和同步方式。

第5次作业:题意、知识点与解题步骤

第1题:数值稳定性

1.1大数据中提高精度是否值得

题意:题目要求权衡精度、存储、网络和吞吐,不接受“精度越高越好”的单向结论。

知识点:IEEE 754单精度浮点数 float 约有7位有效十进制数字;双精度浮点数 double 约有15–16位。更高精度可以降低累加、相消、病态分解和长迭代中的舍入误差。更高精度也会增加内存、磁盘和网络用量,并可能降低缓存、单指令多数据(SIMD)或图形处理器(GPU)的吞吐量。

解题步骤:

  1. 说明误差收益。敏感的归约和分解计算可以获得更可靠的结果。
  2. 说明系统代价。在IEEE 754格式下,double 占64位,float 占32位,因此前者的单元素存储量是后者的两倍。
  3. 说明适用边界。高精度不能修复噪声数据、错误模型或不稳定算法。
  4. 根据条件数、误差预算和失败证据选择精度;若低精度计算达到吞吐目标但残差不达标,则用高精度执行残差校正。

1.2四种操作、100个随机1000×100矩阵

题面事实:分别累计测量 svd(X)svd(X')eig(X*X')eig(X'*X)

知识点:XXT 是1000×1000矩阵。XTX 是100×100矩阵。两者的非零特征值相同。XXT 的非零奇异值也相同。库实现、完整或紧致计算模式以及工作区大小会影响计时。

rng(0);
trials = 100;
elapsed = zeros(trials, 4);

% 可先用一份矩阵 warm-up,避免把首次库初始化混入主计时
X = randn(1000, 100);
svd(X, "econ"); svd(X', "econ"); eig(X*X'); eig(X'*X);

for t = 1:trials
    X = randn(1000, 100);
    tic; svd(X, "econ"); elapsed(t,1) = toc;
    tic; svd(X', "econ"); elapsed(t,2) = toc;
    tic; eig(X*X'); elapsed(t,3) = toc;
    tic; eig(X'*X); elapsed(t,4) = toc;
end

total = sum(elapsed, 1);
average = mean(elapsed, 1);
spread = std(elapsed, 0, 1);

结果说明:报告MATLAB版本、中央处理器(CPU)、基础线性代数子程序(BLAS)、随机种子、econ 约定、总时间、均值和离散度。Gram矩阵的阶数小于原矩阵的行数时,其后续分解所处理的数据量更小。显式形成 XTX 会使2-范数条件数从 κ(X) 变为 κ(X)2。计算更快不表示数值更稳定。

常见错误:只生成一个矩阵;只测量一次;把本机运行时间写成算法定律;不说明完整或紧致计算模式;排除形成Gram矩阵的时间但不声明。

1.3 1000次随机扰动

题面事实:对给定的5×5非对称矩阵 X,分别研究 X+δX 的特征值和奇异值在1000次小随机扰动下的变化。题目提示可参考MATLAB eps

rng(0);
trials = 1000;
scale = eps(norm(X, "fro")) * norm(X, "fro");
baseEig = eig(X);
baseS = sort(svd(X), "descend");

eigSamples = complex(zeros(5, trials));
sSamples = zeros(5, trials);
for t = 1:trials
    dX = scale * randn(size(X));
    e = eig(X + dX);
    [~, order] = sortrows([real(e), imag(e)], [1 2]);
    eigSamples(:,t) = e(order);
    sSamples(:,t) = sort(svd(X + dX), "descend");
end

% 报告 absolute error 的 median/std/quantiles,避免 signed error 抵消

知识点:非对称矩阵的特征值可能是复数。比较不同试验的结果之前,必须固定排序规则或匹配规则。奇异值非负,因此可以按降序匹配。奇异值满足扰动界 i(X+E)−σi(X)|≤‖E‖2

常见错误:把确定性的逐元素 eps(X) 称为随机扰动;直接比较未匹配的特征值;累加带符号差值而使正负误差抵消;不说明扰动尺度。

1.4使用第4章解释实验

采用非正交基的特征分解 M=PDP−1,其局部扰动放大与 ‖P‖‖P−1 有关。SVD的左右因子正交,因此对应的2-范数条件因子为1。SVD数值较稳定,不表示所有SVD计算方法都最快。通过Gram矩阵求SVD会损失一部分稳定性优势。

第2题:不用计算机求完整奇异值分解

题面矩阵:

X=[[1,2,3,4],[5,6,7,8],[9,0,1,2]]∈ℝ3×4

题意:题目要求奇异值分解,不是只求奇异值。答案必须给出 U,Σ,VT。答案必须说明使用完整SVD还是紧致SVD。答案还必须写出计算步骤。

计算步骤:因为3<4,先计算3×3的 XXT

XXT=[[30,70,20],[70,174,68],[20,68,86]]

调研材料记录的正特征值约为235.6958、53.5435和0.7607,因此奇异值约为15.3524、7.3173和0.8722。先求对应的正交归一左特征向量 u1,u2,u3。再使用 vi=XTuii 计算前三个右奇异向量。最后求解 Xv4=0 并归一化,以补齐完整的 V∈ℝ4×4

下一节给出完整手算步骤和三个小矩阵例题。对于第5次作业中的矩阵,最后必须检查 UTU=I3VTV=I4UΣVT≈X

第3题:Spark中的PCA

题面:两个没有表头的传感器CSV文件中,至少一个文件可能包含1001个电路传感器输出。最后一列 y 表示每小时用电量。需要说明PCA的作用。需要找出累计解释90% 方差的最小主成分数 n。需要使用前 n 个主成分建立 y 的模型。还需要判断 sensors2 是否属于同一类数据。

3.1 PCA如何帮助

PCA把强相关传感器列旋转为正交主方向,按方差排序。它可以揭示低维结构、减少后续回归维数,并帮助观察异常或分布差异。PCA不知道列的物理名称,也不能单独证明两个文件来自同一系统。

3.2解释90% 所需列数

先分离最后一列 y。只在特征矩阵上拟合缩放器和PCA。若解释方差比为 e1≥e2≥…,取满足下式的最小 n

Σi=1nei≥0.90

常见错误:把“每个主成分的解释方差比(EVR)大于0.01”当成累计90% 规则;把 y 输入PCA,造成标签泄漏。

3.3使用主成分得分进行回归

import numpy as np
from pyspark.ml.feature import PCA, StandardScaler, VectorAssembler
from pyspark.ml.regression import LinearRegression

# 无 header CSV:最后一列是 y,其余列是传感器特征
raw = spark.read.option("inferSchema", True).csv(path)
feature_cols = raw.columns[:-1]
label_col = raw.columns[-1]
data = raw.withColumnRenamed(label_col, "label")
train_raw, test_raw = data.randomSplit([0.8, 0.2], seed=42)

assembler = VectorAssembler(
    inputCols=feature_cols,
    outputCol="features"
)
train_assembled = assembler.transform(train_raw)
test_assembled = assembler.transform(test_raw)

scaler = StandardScaler(
    inputCol="features",
    outputCol="scaled",
    withMean=True,
    withStd=True
).fit(train_assembled)                 # 只在训练集拟合
train_scaled = scaler.transform(train_assembled)
test_scaled = scaler.transform(test_assembled)

# 只用训练集方差谱选择累计解释方差达到 90% 的最小 n
full_pca = PCA(
    k=len(feature_cols),
    inputCol="scaled",
    outputCol="all_pc_scores"
).fit(train_scaled)
cum_evr = np.cumsum(full_pca.explainedVariance.toArray())
n = int(np.searchsorted(cum_evr, 0.90) + 1)

pca_model = PCA(
    k=n,
    inputCol="scaled",
    outputCol="pc_scores"
).fit(train_scaled)                    # 仍只在训练集拟合
train_scores = pca_model.transform(train_scaled)
test_scores = pca_model.transform(test_scaled)

model = LinearRegression(
    featuresCol="pc_scores",
    labelCol="label"
).fit(train_scores)
test_predictions = model.transform(test_scores)

处理流程:先切分数据。只使用训练集拟合缩放器、选择 n、拟合PCA和拟合回归模型。测试集只调用 transform。使用 test_predictions 计算留出测试集的决定系数(R²)和均方根误差(RMSE)。该流程不会把测试集分布泄漏到特征空间。

模型写为 y=β0+Σβipi。题面给出的 ε∼Normal(0,1) 是模型假设。必须检查残差,不能把该假设当作已经证明的事实。报告留出测试集的R² 和RMSE。还要报告数据切分方式、随机种子和残差诊断结果。

3.4判断sensors2

对两份文件使用相同的预处理、数据切分和评价方法。比较累计方差谱、主成分得分回归模型在留出测试集上的表现、残差结构和基线结果。单个较高的R² 或相似的二维散点图不能证明两个文件来源相同。

手算SVD专题:从形状到验算

本节说明如何在限定时间内构造并检查 A=UΣVT

1.先写矩阵形状

A∈ℝm×nr=rank(A)

形式UΣV保留内容
完整SVDm×mm×nn×n保留完整的左右正交基,包括零空间。
紧致SVDm×rr×rn×r只保留正奇异值对应的向量。

如果题目要求分解,但没有说明形式,则给出完整SVD。也可以明确声明使用紧致SVD。

2.七步通用流程

  1. 写出形状和秩上界。使用 r≤min(m,n) 确定 Σ 的形状。
  2. 选择较小的Gram矩阵。对于宽矩阵,选择 AAT。对于高矩阵,选择 ATA
  3. 求对称Gram矩阵的特征对。把特征向量正交归一化。理论上的特征值均为非负数。
  4. 排序并开平方。使用 σi=√λi 计算奇异值。按降序排列奇异值。按照相同顺序重排向量列。
  5. 计算另一侧的奇异向量。如果先得到 vi,则使用 ui=Avii。如果先得到 ui,则使用 vi=ATuii。这些公式只适用于 σi>0
  6. 补齐完整正交基。使用 null(A) 补齐V。使用 null(AT) 补齐U。对补充向量进行正交归一化。
  7. 检查结果。检查列的单位正交性、奇异向量方程和矩阵重构结果。
形状 → 较小的 Gram 矩阵 → 特征对 → σ 降序
     → 根据正奇异值计算另一侧向量
     → 使用零空间补齐正交基
     → UᵀU / VᵀV / UΣVᵀ 三重验算

3.左右奇异向量到底属于哪一边

A=UΣVT

ATA=VΣTΣVT

AAT=UΣΣTUT

  • ATA∈ℝn×n 的特征向量是V的列,位于输入空间。
  • AAT∈ℝm×m 的特征向量是U的列,位于输出空间。
  • 两个矩阵的正非零特征值相同,均为 σi2

判断方法:ATA 的形状对应输入维度 n,所以它给出V。AAT 的形状对应输出维度 m,所以它给出U。

例1:有两个不同正奇异值的方阵

A=[[3,1],[1,3]]

步骤1:计算Gram矩阵。

ATA=[[10,6],[6,10]]

步骤2:计算特征多项式。

det(ATA−λI)=(10−λ)2−36=(λ−16)(λ−4)

λ1=16λ2=4,已降序。

步骤3:计算右奇异向量。

v1=(1,1)T/√2v2=(1,−1)T/√2

步骤4:计算奇异值和左奇异向量。

σ1=4σ2=2

u1=Av1/4=v1u2=Av2/2=v2

步骤5:组装三个矩阵。

U=V=(1/√2)[[1,1],[1,−1]]Σ=diag(4,2)

步骤6:检查重构结果。

UΣVT=(1/2)[[1,1],[1,−1]][[4,0],[0,2]][[1,1],[1,−1]]=[[3,1],[1,3]]

陷阱:本例U=V是因为A对称正定,不是所有方阵的规律。

例2:重复奇异值和非唯一旋转

B=2I2

步骤1:计算特征值和奇异值。BTB=4I2,所以 λ12=4σ12=2

步骤2:选择一组奇异向量。可直接采用以下构造:

U=I2Σ=2I2V=I2

步骤3:说明结果不唯一。对任意二维正交矩阵Q,例如旋转矩阵:

Qθ=[[cosθ,−sinθ],[sinθ,cosθ]]

U=QθV=QθΣ=2I

UΣVT=Qθ(2I)QθT=2I=B

结论:重复奇异值对应的左右奇异子空间可以进行相同的正交旋转。不同的U和V可能都正确。使用正交性和重构结果判断答案。

排序规则:相等奇异值之间没有唯一顺序。同一个重复值分块内的U和V必须同步变换。

例3:宽矩阵、秩亏、零奇异值和符号不唯一

C=[[1,1,0],[0,1,1]]∈ℝ2×3

步骤1:选择较小的Gram矩阵。计算2×2的 CCT

CCT=[[2,1],[1,2]]

步骤2:计算特征对。

λ1=3u1=(1,1)T/√2

λ2=1u2=(1,−1)T/√2

步骤3:计算奇异值。σ1=√3σ2=1。完整 Σ 为:

Σ=[[√3,0,0],[0,1,0]]∈ℝ2×3

步骤4:计算V中对应正奇异值的向量。

v1=CTu1/√3=(1,2,1)T/√6

v2=CTu2=(1,0,−1)T/√2

步骤5:使用零空间补齐V。求解 Cv3=0

x+y=0y+z=0(x,y,z)=t(1,−1,1)

v3=(1,−1,1)T/√3

不能使用 CTu/σ 计算这个向量,因为对应的 σ=0

步骤6:组装三个矩阵。

U=(1/√2)[[1,1],[1,−1]]

V=[v1 v2 v3]

步骤7:使用秩一矩阵之和检查结果。

C=√3u1v1T+u2v2T=[[1,1,0],[0,1,1]]

符号不唯一:把任一非零mode的 uivi 同时乘 −1,外积不变。只改一侧则会改变A。

4.零与重复奇异值:统一规则

情形能确定什么不能做什么
σi>0 且互异 对应一维左右方向除同步换号外基本确定。 不能只改U或V一侧符号。
重复正奇异值 对应子空间确定。 不能要求唯一基。允许左右分块同步进行正交旋转。
σ=0 右零空间来自 null(A);左零空间来自 null(AT) 不能除以 σ 恢复另一侧。

5.三重验算模板

  1. 正交:UTU=IVTV=I
  2. 奇异向量方程:对每个正奇异值,检查 AviiuiATuiivi
  3. 重构:检查 UΣVT=A,或逐个相加秩一矩阵。

数值答案还可以报告 ||U'*U-I||||V'*V-I||||U*S*V'-A||。手算题应展示至少一个非平凡元素或一组秩一矩阵之和。不能只写“已验证”。

6.常见错误

  • ATA 的特征向量放进U,而不是V。
  • λ 直接当奇异值,忘记 σ=√λ
  • 排序 σ 后没有同步重排U/V列。
  • 把矩形 Σ 写成方阵,但不声明使用紧致SVD。
  • 只求奇异值,未给出奇异向量。
  • 对零奇异值套恢复公式,发生除零。
  • 忘记补 null(A)null(AT)
  • UΣVT 写成 UΣV
  • 因为同步换号或重复奇异子空间的旋转而误判答案。
  • 只检查矩阵维度,不检查正交性和重构结果。

7.计时训练:从8分钟到25分钟

训练时间目标停止条件
形状练习3分钟对6个矩阵写出完整SVD和紧致SVD的形状、优先选择的Gram矩阵和零空间方向。全部维度正确。
例18分钟完成2×2矩阵的不同特征对、排序、恢复和重构。不查资料即可完成。
例26分钟说明重复奇异值的旋转不唯一。能够使用QΣQᵀ 检查结果。
例315分钟完成2×3矩阵的完整SVD。重点补齐零空间。Σ 的形状和v₃ 正确。
第5次作业模拟题25分钟写出3×4矩阵的完整计算步骤。可以使用已知的近似特征根。重点计算另一侧向量并检查结果。答案包含U、V、Σ、排序、零空间和三类检查。

时间分配:使用前10% 的时间写矩阵形状和计算步骤。使用中间70% 的时间计算特征对和另一侧向量。使用最后20% 的时间检查正交性和重构结果。如果特征多项式计算耗时过长,先说明选择哪个Gram矩阵、每个向量属于U还是V,以及如何补齐零空间。

第6次作业:题意、知识点与解题步骤

完成状态:当前没有第6次作业的提交解答。以下内容只用于复习和组织解题步骤,不是已运行的提交结果。

第1题:题面称为“最速下降”的二阶方法

术语说明:题面推导的更新是Newton步长。非线性最小二乘中,以 JTJ 近似Hessian矩阵的方法称为Gauss–Newton方法。标准最速下降只沿 −∇f 方向更新。作答时可以沿用题面措辞,但讨论部分必须区分这些术语。

1. Jacobian矩阵与Hessian矩阵

Jacobian矩阵表示向量值函数的一阶偏导数。若 g:ℝn→ℝm,其元素为 (Jg)ij=∂gi/∂xj。Hessian矩阵表示标量值函数的二阶偏导数。若 f:ℝn→ℝ,其元素为 (Hf)ij=∂²f/(∂xi∂xj)。函数充分光滑时,Hessian矩阵对称。

对二阶Taylor模型关于步长 s=x−x0 求导:

m(s)=f(x0)+∇f(x0)Ts+(1/2)sTHf(x0)s

sm=∇f(x0)+Hf(x0)s=0

s=−Hf(x0)−1∇f(x0)

如果H不是正定矩阵,驻点不一定是最小点。实际算法可以使用阻尼、线搜索或信赖域处理该情况。

2.应用与速度权衡

更新式为 wk+1=wk+sk。通过求解 Hksk=−gk 得到步长。不得显式计算逆矩阵。对于 d 个参数,稠密分解和求解的典型时间复杂度为 Θ(d³),存储复杂度为 Θ(d²)。该方法可能具有较快的局部收敛速度,但每一步的成本较高。

3.最小二乘的梯度与Hessian矩阵

r(w)=Xw−yf(w)=(1/2)r(w)Tr(w)J=Jr

∇f(w)=JTr(w)

Hf(w)=JTJ+Σiri(w)Hri(w)

题面说明残差是线性函数,因此每个 Hri=0。所以 Hf=JTJ 是精确的Hessian矩阵,不是近似值。

4–6.更新、算法与性能

对于满列秩的线性最小二乘问题:

Δw=−(JTJ)−1JTr(wk)

initialize w
repeat:
    r := residual(w)
    J := residual Jacobian
    g := Jᵀr
    choose stable solve:
        QR / SVD / damped normal equations
    solve for Δw; do not form an explicit inverse
    w := w + Δw
until gradient norm, loss change, or max iterations stops

满秩线性最小二乘在精确算术中可以一步到达最优解。非线性问题需要在每一轮按当前迭代点重新线性化。较小的奇异值会放大噪声。可以使用伪逆、截断SVD或阻尼处理该问题。

第2题:PRAM异或归约

1.顺序算法

s := A[1]
for i := 2..n:
    s := s XOR A[i]
return s

算法执行 n−1 次异或(XOR)操作,所以工作量和计算深度均为 Θ(n)

2.并行二叉树

for round r := 0 .. log2(n)-1 in sequence:
    parallel for each block start i:
        A[i] := A[i] XOR A[i + 2^r]
return A[1]

第r轮执行 n/2r+1 次XOR。总工作量为:

n/2+n/4+⋯+1=n−1=Θ(n)

轮数为 log2n,所以计算深度为 Θ(log n)

3.使用Brent定理评价算法

T1/p≤Tp≤T1/p+T=Θ(n/p+log n)

该算法达到渐近最优工作量。当 p≲n/log n 时,加速比可以接近处理器数量。继续增加处理器后,log n 的计算跨度成为时间下界。

第3题:Spark中的六种梯度下降变体

题项状态与数据流必须讨论
1.批量梯度下降,不使用广播变量 每轮闭包携带当前w。每个分区计算梯度。归约操作聚合梯度。驱动程序更新参数。 说明参数传输、同步屏障和完整数据扫描。
2. SGD,不使用Hogwild 单样本更新或小批量更新存在串行依赖。 Spark任务调度和通信的开销可能远大于一次更新。不得假设执行器共享w。
3. SGD与Hogwild 真正Hogwild需要同一共享内存、稀疏特征与无锁更新。 不同执行器的Java虚拟机(JVM)默认不共享驱动程序堆内存。实现必须限定为执行器本地更新,或另设参数服务。
4.批量梯度下降与广播变量 每轮广播当前w。工作节点只读参数。聚合后由驱动程序生成新的w。 销毁或替换旧广播变量。广播变量降低分发成本,但不消除每轮同步屏障。
5.二阶方法,可选择广播变量 聚合 JTJJTr。驱动程序执行分解和线性求解。 说明稠密矩阵的 Θ(d²) 通信和存储。避免显式计算逆矩阵。单独处理第4(b) 题的记号冲突。
6.第7次实验测试 固定数据切分、随机种子、预处理、PCA和停止条件。 同时报告模型质量、运行时间、迭代次数、分区数、稀疏度和资源配置。

未提交:当前没有上述六种实现的可审计代码、日志或结果。本页不提供虚构的基准测试结论。

第6次作业第4(b) 题:提示与目标式的代数冲突

推导A:对J做SVD,可以得到目标式

J=UΣVT 且J满列秩,则:

JTJ=VΣTΣVT

(JTJ)−1=V(ΣTΣ)−1VT

JT=VΣTUT

(JTJ)−1JT=V(ΣTΣ)−1ΣTUT

这与题面目标式完全一致,但它明确使用的是 J=UΣVT

推导B:对JᵀJ做SVD,不能直接得到同一组 Σ 和U

G=JTJ。若直接写 G=UGΣGVGT,则:

G−1=VGΣG−1UGT

Δw=−VGΣG−1UGTJTr

因为G对称半正定,可以取 UG=VG,而 ΣG 的对角项是J的 σi2。但这里的 UGG,VG 不是目标式中J的SVD因子;若不重新定义符号,维度与含义无法同时吻合。

结论与作答步骤

代数冲突:提示要求分解 JTJ,目标式却使用了分解J才自然出现的 ΣTΣUT。当前题面没有提供能让两套符号同时成立的额外定义。

  1. 并列写出上述推导A和推导B。
  2. 明确声明每个U、Σ、V对应J还是 JTJ
  3. 向课程方确认预期分解对象与4(c) 的 Ut 维度。
  4. 如果矩阵秩亏,则使用伪逆或截断方法。不得写出不存在的普通逆矩阵。

不得声称:本页已经消除了题面矛盾,或当前存在经过教师确认的HW6 4(b) 提交解答。

第5–6次作业的常见错误

自测题与答案

1.对3×4矩阵,完整SVD的U、Σ、V分别是什么形状?

答案:U∈ℝ3×3Σ∈ℝ3×4V∈ℝ4×4

2.为什么宽矩阵优先算AAᵀ?

答案:m<nAAT 是m×m,比n×n的 ATA 小。它先给U,再对正 σ 用 vi=ATuii 恢复V。

3. AᵀA的特征向量应放在U还是V?

答案:V。由 ATA=VΣTΣVT

4.若 λ=9,奇异值是多少?

答案:σ=√λ=3,不是9。

5. σ=0时如何补右奇异向量?

答案:null(A) 的正交归一基。不能使用 ATu/σ

6.把u₁ 改成 −u₁ 时,如何保持SVD不变?

答案:同时把对应 v1 改成 −v1。于是 σ(−u)(−v)T=σuvT

7. B=2I的U、V是否唯一?

答案:不唯一。对任意正交Q,U=V=QΣ=2I 都有效。重复奇异子空间可以同步旋转。

8.手算SVD最后要做哪三类检查?

答案:检查 UTU=IVTV=I;检查 Aviiui;检查 UΣVT=A

9.为什么eig(XᵀX) 可能快却更不稳定?

答案:对1000×100的X,XᵀX只有100×100;但 κ2(XTX)=κ2(X)2,会放大小奇异方向的数值困难。

10.解释90% 方差的n如何选?

答案:取最小n,使前n个解释方差比的累计和至少为0.90。必须先按降序排列,并只在特征矩阵上拟合PCA。

11.线性最小二乘的梯度与Hessian矩阵是什么?

答案:r=Xw−y,则 g=XTrH=XTX

12. HW6 4(b) 为什么存在冲突?

答案:目标式由 J=UΣVT 推出;提示却要求对 JTJ 做SVD。后者的奇异因子和 Σ 含义不同,不能在未重新定义符号时直接得到同一目标式。

13.异或树的工作量与计算深度是什么?

答案:工作量为 n−1=Θ(n),计算深度为 Θ(log n)。Brent定理给出 Tp=O(n/p+log n)

14. Spark广播变量解决了什么问题?它没有解决什么问题?

答案:广播变量可以高效分发只读参数,并减少闭包重复传输。广播变量不允许工作节点写入共享参数,也不消除每轮聚合和同步屏障。

15.当前能否报告HW6六种变体的性能排名?

答案:不能。当前工作区没有HW6提交实现、统一实验配置或运行日志。任何排名都会是虚构。

考前最终检查