计算一个简单的两层感知机的梯度
损失函数:
L=12K∑i=1K‖yi−W2W1xi‖22=12K‖Y−W2W1X‖2F
L
=
1
2
K
∑
i
=
1
K
‖
y
i
−
W
2
W
1
x
i
‖
2
2
=
1
2
K
‖
Y
−
W
2
W
1
X
‖
F
2
其中:
YX=[y1,y2,...,yK]=[x1,x2,...,xK]
Y
=
[
y
1
,
y
2
,
.
.
.
,
y
K
]
X
=
[
x
1
,
x
2
,
.
.
.
,
x
K
]
计算梯度:
∂L∂(Y−W2W1X)=1K(Y−W2W1X)
∂
L
∂
(
Y
−
W
2
W
1
X
)
=
1
K
(
Y
−
W
2
W
1
X
)
∂L∂(W2W1X)=1K(W2W1X−Y)
∂
L
∂
(
W
2
W
1
X
)
=
1
K
(
W
2
W
1
X
−
Y
)
∂L∂(W2W1)=1K(W2W1X−Y)X⊤
∂
L
∂
(
W
2
W
1
)
=
1
K
(
W
2
W
1
X
−
Y
)
X
⊤
∴∂L∂W1∂L∂W2=1KW2⊤(W2W1XX⊤−YX⊤)=W2⊤(W2W1Cxx−Cyx)=1K(W2W1XX⊤−YX⊤)W1⊤=(W2W1Cxx−Cyx)W1⊤
∴
∂
L
∂
W
1
=
1
K
W
2
⊤
(
W
2
W
1
X
X
⊤
−
Y
X
⊤
)
=
W
2
⊤
(
W
2
W
1
C
x
x
−
C
y
x
)
∂
L
∂
W
2
=
1
K
(
W
2
W
1
X
X
⊤
−
Y
X
⊤
)
W
1
⊤
=
(
W
2
W
1
C
x
x
−
C
y
x
)
W
1
⊤
其中:
CxxCyx=1K∑i=1Kxix⊤i=1K∑i=1Kyix⊤i
C
x
x
=
1
K
∑
i
=
1
K
x
i
x
i
⊤
C
y
x
=
1
K
∑
i
=
1
K
y
i
x
i
⊤