跳转至

线性变换:\(z=W^{\mathsf T}x+b\) 的转置从哪来、靠维度判别

  • 章节:第23章 · 前馈神经网络(前向传播 / 填空·简答·计算题)
  • 一句话:跟 AI 学时见 \(z=Wx+b\),回课本/课件见 \(z=W^{\mathsf T}x+b\),以为符号不一致。其实差别只在「\(W\) 摆成什么形状」,本课程约定写转置 \(W^{\mathsf T}x\),要不要转置用维度对接判。

我问的问题(疑问)

  1. \(z=Wx+b\)\(z=W^{\mathsf T}x+b\) 到底写哪个?是不是两个都行?
  2. 有人写成 \(W\cdot x\)(中间一个点),这个「点乘」是另一种运算吗?
  3. 怎么判断该不该转置?

正确答案

① 三个「不变量」先钉死

设这一层有 \(n\) 个输入、\(m\) 个神经元(输出)。单向网络里这三者形状雷打不动:

\[\boldsymbol x:(n\times1),\qquad \boldsymbol z:(m\times1),\qquad \boldsymbol b:(m\times1)\]

输入、输出、偏置永远是竖着的列向量\(\boldsymbol b\) 永远跟 \(\boldsymbol z\) 同形(一个神经元配一个偏置)。唯一会变形状的只有 \(\boldsymbol W\)

② 本课程约定:\(\boldsymbol W\) 摆成(输入 × 神经元),所以写转置

老师/课件把 \(\boldsymbol W\) 定为 \((n\times m)\)输入 × 神经元,每一是一个神经元的权重向量。要让它把 \(\boldsymbol x\)(输入)映成 \(\boldsymbol z\)(神经元),必须翻成 \((m\times n)\),故写 \(\boldsymbol W^{\mathsf T}\)

\[\boldsymbol z=\boldsymbol W^{\mathsf T}\boldsymbol x+\boldsymbol b,\qquad \boldsymbol h=a(\boldsymbol z)\]

转置纯粹是数学上让维度对得上逼出来的,不是物理意义。

③ 两种记法 = 同一个东西(矩阵看 vs 嵌套向量看)

老师两种写法都收(JJM 转达),它俩等价:

\[\underbrace{\boldsymbol W^{\mathsf T}\boldsymbol x}_{\text{矩阵记法}}\;\equiv\;\underbrace{\bigl\{\,\boldsymbol w_j\cdot\boldsymbol x\,\bigr\}_{j=1}^{m}}_{\text{嵌套向量/内积记法}}\]
  • 看作矩阵\(\boldsymbol W^{\mathsf T}\boldsymbol x\),走矩阵乘。
  • 看作嵌套向量(每个元素是一个神经元的权重向量 \(\boldsymbol w_j\))→ 每个神经元各自做内积 \(z_j=\boldsymbol w_j\cdot\boldsymbol x=\sum_i w_{ji}x_i\),即「点乘」。

矩阵乘的定义本就是「输出第 \(j\) 个分量 = 第 \(j\) 行跟 \(\boldsymbol x\) 的内积」,所以这俩是同一个 \(\boldsymbol z\) 的粗看与细看,不是两种算法。单个神经元时课件直接写 \(z=\boldsymbol w^{\mathsf T}\boldsymbol x+b\)\(\boldsymbol w^{\mathsf T}\boldsymbol x=\boldsymbol w\cdot\boldsymbol x\),向量内积)。

④ 只记一种 + 维度判别法 ⭐

决策:能写就写转置 \(\boldsymbol z=\boldsymbol W^{\mathsf T}\boldsymbol x+\boldsymbol b\)

要不要转置不用背,用内维对接(矩阵乘要求「内侧两维相等」,乘出「外侧两维」):

\[\underbrace{\boldsymbol W^{\mathsf T}}_{(m\times n)}\,\underbrace{\boldsymbol x}_{(n\times1)}\;\longrightarrow\;(m\times1)=\boldsymbol z\]

中间 \(n\) 对上、消掉,剩外侧 \((m\times1)\) 正好是 \(\boldsymbol z\)。若不转置直接拿 \(\boldsymbol W\,(n\times m)\)\(\boldsymbol x\,(n\times1)\),内侧是 \(m\)\(n\),对不上 → 乘不了。所以在本课程的 \(\boldsymbol W\) 形状下,只有 \(\boldsymbol W^{\mathsf T}\boldsymbol x\) 合法。

易错点 / 为什么错

  • \(\cdot\)」只是乘号(矩阵乘或向量内积),不是逐元素乘 \(\odot\)。反向传播里 \(\partial L/\partial z=\partial L/\partial h\odot a'(z)\) 那个 \(\odot\) 才是逐元素,别和这里的点混。
  • 老师说的 \(\boldsymbol W\cdot\boldsymbol x\)内积记法,合法)≠ 课本式 23.43 的 \(\boldsymbol W\boldsymbol x\)(把 \(\boldsymbol W\) 摆成 \((m\times n)\)=神经元×输入的另一种矩阵摆法)。后者老师没用,别拿本课程的 \(\boldsymbol W\) 去套 \(\boldsymbol W\boldsymbol x\)(维度非法)。
  • 单神经元 \(\boldsymbol w^{\mathsf T}\boldsymbol x\) 里的转置是向量转置(把竖的权重躺成横的去点 \(\boldsymbol x\)),跟「整个矩阵 \(\boldsymbol W\) 要不要转置」是两码事。
  • 带不带转置由 \(\boldsymbol W\) 的摆法决定,不由「用了内积」决定——内积只是放大看,不是能避开转置的写法。
  • 校验钩子:梯度形状 = 参数形状,故 \(\partial L/\partial \boldsymbol W\) 也是 \((n\times m)\),跟 \(\boldsymbol W\) 同形;写完梯度可拿这个反查。

出处

  • 课件(老师 PPT,OCR):slide_002 单神经元 \(z=\boldsymbol w^{\mathsf T}\boldsymbol x+b\);slide_003 双层网络矩阵形式 \(\boldsymbol h^{(1)}=a(\boldsymbol W^{(1)\mathsf T}\boldsymbol x+\boldsymbol b^{(1)})\)\(\boldsymbol y=g(\boldsymbol W^{(2)\mathsf T}\boldsymbol h^{(1)}+\boldsymbol b^{(2)})\),分量式 23.5 \(h_j^{(1)}=a(\sum_i w_{ji}^{(1)}x_i+b_j^{(1)})\);slide_006 输出层(回归)\(z=\boldsymbol w^{(s)\mathsf T}\boldsymbol h^{(s-1)}+b^{(s)}\)
  • 课本(李航《机器学习方法》,OCR):p.394 式 23.43 \(z_j^{(t)}=\sum_i w_{ji}^{(t)}h_i^{(t-1)}+b_j^{(t)}\)(分量式,与课件一致);矩阵形式课本部分章节写成不带转置的 \(\boldsymbol W\boldsymbol x\)\(\boldsymbol W\)\(m\times n\)),与课程约定互为转置、等价。
  • 老师口头(JJM 转达):\(z=\boldsymbol W\cdot\boldsymbol x+b\)\(z=\boldsymbol W^{\mathsf T}\boldsymbol x+b\) 两种记法都可;本课程默认 / 课件房规为转置形式。

备注

  • 「嵌套向量 / 内积记法」与「矩阵记法」是同一运算的两种书写,非两种约定。
  • 本条只记一种落笔法:考试一律写 \(\boldsymbol z=\boldsymbol W^{\mathsf T}\boldsymbol x+\boldsymbol b\),靠维度判别确认转置方向。相关:[[反向传播-接力棒与内积外积]](其权重梯度 \(x\delta^{\mathsf T}\) 即本条 \(z=W^{\mathsf T}x\) 约定下的形式)。