题目重点:填空题给两层网络与激活函数;按输入、权重、偏置、ReLU、Sigmoid 顺序手算并避免维度/四舍五入错误。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练模型 z1=W1x+b1、h=ReLU(z1)、z2=W2h+b2、p=Sigmoid(z2),输出一维;若真实题 ReLU/Sigmoid 顺序或 bias 不同,需按给定图重算。
- 列向量约定:x∈R^d,W1∈R^(m×d),b1∈R^m,W2∈R^(1×m),b2 标量。
- 中间不提早四舍五入,最后按题面规则保留四位小数。
解题路线
- 先标各矩阵形状并按行做第一层点积,逐神经元加 bias;将负数 ReLU 为 0,正数原样保留。
- 再做输出层加权和 z2,最后算 1/(1+exp(-z2));输出是概率样值,不自动阈值化成类别。
- 训练例 x=(1,2),W1 行分别 (1,-1)、(0.5,0.5),b1=(0,0):z1=(-1,1.5),h=(0,1.5)。W2=(2,-1),b2=0.5:z2=-1,p≈0.2689。
- 检查常见错误:把 W1 与 W2 相乘顺序颠倒、ReLU 放在输出层、sigmoid 对每个 hidden 分量独立做,或忘记 bias。
- 如果原题给的是 batch 输入,逐行执行相同前向,并核求的是某一行/均值/整体输出。
手动走一遍
训练例第一层第二个神经元 0.5×1+0.5×2=1.5;第一个 1−2=−1→ReLU 0。输出 logit 2×0−1×1.5+0.5=−1,Sigmoid(-1)=0.268941…,四位小数为 0.2689。题目没有这些数值。
规模与取舍
单样本 dense 两层 O(md+m)≈O(md) 乘加,额外 O(m) hidden 空间;batch B 条 O(Bmd)。小型手算重点是维度与顺序。
易错点与追问
容易失分的边界
- 把题目没有的权重当作已知原题。
- ReLU(−1) 算成 −1 而不是 0。
- 输出 sigmoid 前忘加第二层 bias。
- 中间先截四位,最终答案产生舍入误差。
继续深挖
- 如果隐藏层有 softmax 会怎样?
- 如何检查 W1/W2 形状?
- 大正/负 logit 的 Sigmoid 如何数值稳定计算?
