MLE · CodeSignal OA Numerical Answer

Coinbase MLE OA 两层网络前向计算:ReLU 到 Sigmoid

填空题给两层网络与激活函数;按输入、权重、偏置、ReLU、Sigmoid 顺序手算并避免维度/四舍五入错误。

题目重点:填空题给两层网络与激活函数;按输入、权重、偏置、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 标量。
  • 中间不提早四舍五入,最后按题面规则保留四位小数。

解题路线

  1. 先标各矩阵形状并按行做第一层点积,逐神经元加 bias;将负数 ReLU 为 0,正数原样保留。
  2. 再做输出层加权和 z2,最后算 1/(1+exp(-z2));输出是概率样值,不自动阈值化成类别。
  3. 训练例 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。
  4. 检查常见错误:把 W1 与 W2 相乘顺序颠倒、ReLU 放在输出层、sigmoid 对每个 hidden 分量独立做,或忘记 bias。
  5. 如果原题给的是 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 如何数值稳定计算?
✓已复制微信号!