假设你有一个模型,其中 (
h
=
w
0
⋅
x
+
B
⋅
A
⋅
x
h = w_0 \cdot x + B \cdot A \cdot x
h=w0⋅x+B⋅A⋅x),这里 (
w
0
w_0
w0 ) 是权重,( B ) 和 ( A ) 是矩阵,
(
x
x
x ) 是输入向量。这样的表达式在神经网络中是常见的,尤其是当你考虑到多层结构和线性变换时。对这样的模型进行梯度计算,可以分解为对每个参数的偏导数。
前提
首先,我们定义模型输出:
h = w 0 ⋅ x + B ⋅ A ⋅ x h = w_0 \cdot x + B \cdot A \cdot x h=w0⋅x+B⋅A⋅x
我们假设损失函数 ( L ) 依然使用均方误差,用于评估预测 ( h ) 和真实目标值 ( y ) 之间的差异:
L
=
1
2
(
h
−
y
)
2
L = \frac{1}{2} (h - y)^2
L=21(h−y)2
梯度计算
-
对 ( w 0 w_0 w0 ) 的偏导:
- 使用链式法则:
∂ L ∂ w 0 = ∂ L ∂ h ⋅ ∂ h ∂ w 0 \frac{\partial L}{\partial w_0} = \frac{\partial L}{\partial h} \cdot \frac{\partial h}{\partial w_0} ∂w0∂L=∂h∂L⋅∂w0∂h - 其中:
∂ L ∂ h = ( h − y ) \frac{\partial L}{\partial h} = (h - y) ∂h∂L=(h−y)
∂ h ∂ w 0 = x \frac{\partial h}{\partial w_0} = x ∂w0∂h=x - 所以:
∂ L ∂ w 0 = ( h − y ) ⋅ x \frac{\partial L}{\partial w_0} = (h - y) \cdot x ∂w0∂L=(h−y)⋅x
- 使用链式法则:
-
对矩阵 ( B ) 的偏导:
- 同样使用链式法则:
∂ L ∂ B = ∂ L ∂ h ⋅ ∂ h ∂ B \frac{\partial L}{\partial B} = \frac{\partial L}{\partial h} \cdot \frac{\partial h}{\partial B} ∂B∂L=∂h∂L⋅∂B∂h - 其中 ( \frac{\partial h}{\partial B} ) 需要使用矩阵乘法的导数规则:
∂ h ∂ B = ( A ⋅ x ) ⊤ \frac{\partial h}{\partial B} = (A \cdot x)^\top ∂B∂h=(A⋅x)⊤ - 所以:
∂ L ∂ B = ( h − y ) ⋅ ( A ⋅ x ) ⊤ \frac{\partial L}{\partial B} = (h - y) \cdot (A \cdot x)^\top ∂B∂L=(h−y)⋅(A⋅x)⊤
- 同样使用链式法则:
-
对矩阵 ( A ) 的偏导:
- 链式法则:
∂ L ∂ A = ∂ L ∂ h ⋅ ∂ h ∂ A \frac{\partial L}{\partial A} = \frac{\partial L}{\partial h} \cdot \frac{\partial h}{\partial A} ∂A∂L=∂h∂L⋅∂A∂h - 计算 ( \frac{\partial h}{\partial A} ) 也需要用到矩阵导数,特别是矩阵相乘的情况:
∂ h ∂ A = B ⊤ ⋅ x \frac{\partial h}{\partial A} = B^\top \cdot x ∂A∂h=B⊤⋅x - 所以:
∂ L ∂ A = B ⊤ ⋅ x ⋅ ( h − y ) \frac{\partial L}{\partial A} = B^\top \cdot x \cdot (h - y) ∂A∂L=B⊤⋅x⋅(h−y)
- 链式法则:
模型参数更新
利用梯度下降法更新每个参数:
- (
w
0
w_0
w0 ) 的更新:
[ w 0 = w 0 − η ⋅ ∂ L ∂ w 0 w_0 = w_0 - \eta \cdot \frac{\partial L}{\partial w_0} w0=w0−η⋅∂w0∂L ] - (
B
B
B) 的更新:
[ B = B − η ⋅ ∂ L ∂ B B = B - \eta \cdot \frac{\partial L}{\partial B} B=B−η⋅∂B∂L] - (
A
A
A ) 的更新:
[ A = A − η ⋅ ∂ L ∂ A A = A - \eta \cdot \frac{\partial L}{\partial A} A=A−η⋅∂A∂L]
这些更新将使得模型在迭代过程中逐步减少预测误差,最终学习到将输入 ( x x x ) 映射到输出 ( y y y ) 的最佳方式。每次迭代都基于当前数据点或数据批次计算梯度,并更新参数,以最小化整个训练集上的损失。
本质是