感知机的反向传播公式推导
感知机的反向传播公式推导
输入为
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
\textbf{x} = \left[ x_1, x_2, \cdots, x_n \right]^T
x=[x1,x2,⋯,xn]T,权重为
w
=
[
w
1
,
w
2
,
⋯
,
w
n
]
T
\textbf{w} = \left[ w_1, w_2, \cdots, w_n \right]^T
w=[w1,w2,⋯,wn]T,偏置为
b
b
b(上图没有画出)。
感知器前向传播得到预测值
y
=
f
(
w
T
x
+
b
)
=
u
n
i
t
(
w
T
x
+
b
)
y = f(\textbf{w}^T \textbf{x} + b) = unit(\textbf{w}^T \textbf{x} + b)
y=f(wTx+b)=unit(wTx+b)
其中
f
(
x
)
=
u
n
i
t
(
x
)
f(x)=unit(x)
f(x)=unit(x),是阶跃函数,如下图:
假如真实值为
t
t
t,如果损失函数采用差值
L
(
w
,
b
)
=
(
t
−
y
)
2
L(\textbf{w},b) = (t-y)^2
L(w,b)=(t−y)2,在计算后向传播的时候做求导
∂
L
(
w
,
b
)
∂
w
=
−
2
(
t
−
y
)
∂
y
∂
w
=
−
2
(
t
−
y
)
∂
f
∂
w
=
−
2
(
t
−
y
)
∂
u
n
i
t
∂
w
∂
L
(
w
,
b
)
∂
b
=
−
2
(
t
−
y
)
∂
y
∂
b
=
−
2
(
t
−
y
)
∂
f
∂
b
=
−
2
(
t
−
y
)
∂
u
n
i
t
∂
b
\begin{aligned} \frac{\partial L(\textbf{w},b)}{\partial \textbf{w}} &= -2(t-y)\frac{\partial y}{\partial \textbf{w}} = -2(t-y)\frac{\partial f}{\partial \textbf{w}} = -2(t-y)\frac{\partial unit}{\partial \textbf{w}} \\ \frac{\partial L(\textbf{w},b)}{\partial b} &= -2(t-y)\frac{\partial y}{\partial b} = -2(t-y)\frac{\partial f}{\partial b} = -2(t-y)\frac{\partial unit}{\partial b} \end{aligned}
∂w∂L(w,b)∂b∂L(w,b)=−2(t−y)∂w∂y=−2(t−y)∂w∂f=−2(t−y)∂w∂unit=−2(t−y)∂b∂y=−2(t−y)∂b∂f=−2(t−y)∂b∂unit
都会面对阶跃函数求导的问题,但是阶跃在零点处是不可导的,所以无法保证上式的正常求解。
那么,怎么办呢?有两个思路:
-
设计处处可导的**函数,如sigmoid**函数。
-
设计损失函数,能达到类似的效果。
这里采用的是设计损失函数,我们希望损失函数能达到这样一种效果:预测正确时损失为0,预测错误时才有损失,而且预测值与真实值相差越大,损失也越大。
依照这个逻辑,
-
当 t = y t=y t=y时, L ( w , b ) = 0 L(\textbf{w},b)=0 L(w,b)=0;
-
当 t ≠ y t \ne y t=y时,
-
如果 t = 0 t=0 t=0,那么 y = 1 y=1 y=1, w T x + b > 0 \textbf{w}^T \textbf{x} + b > 0 wTx+b>0, wx + b \textbf{w} \textbf{x} + b wx+b越大,与真实值相差就越大;
-
如果 t = 1 t=1 t=1,那么 y = 0 y=0 y=0, wx + b < 0 \textbf{w} \textbf{x} + b < 0 wx+b<0, w T x + b \textbf{w}^T \textbf{x} + b wTx+b越小(也就是 − ( w T x + b ) -(\textbf{w}^T \textbf{x} + b) −(wTx+b)越大),与真实值相差就越大。
那么,可以用下式表示损失
L ( w , b ) = { w T x + b , t = 0 , y = 1 − ( w T x + b ) , t = 1 , y = 0 L(\textbf{w},b) = \left\{ \begin{aligned} \textbf{w}^T \textbf{x} + b,& \quad t=0,y=1 \\ -(\textbf{w}^T \textbf{x} + b),& \quad t=1,y=0 \end{aligned} \right. L(w,b)={wTx+b,−(wTx+b),t=0,y=1t=1,y=0
可以合并写为
L ( w , b ) = ( y − t ) ( w T x + b ) L(\textbf{w},b) = (y-t)(\textbf{w}^T \textbf{x} + b) L(w,b)=(y−t)(wTx+b)
你会发现这个式子已经兼容了当 t = y t=y t=y时, L ( w , b ) = 0 L(\textbf{w},b)=0 L(w,b)=0的情况。 -
我们用 L ( w , b ) = ( y − t ) ( w T x + b ) L(\textbf{w},b) = (y-t)(\textbf{w}^T \textbf{x} + b) L(w,b)=(y−t)(wTx+b)来做反向传播的推导:
对参数
w
\textbf{w}
w和
b
b
b的梯度为
∂
L
(
w
,
b
)
∂
w
=
(
y
−
t
)
x
∂
L
(
w
,
b
)
∂
b
=
y
−
t
\begin{aligned} \frac{\partial L(\textbf{w},b)}{\partial \textbf{w}} &= (y-t) \textbf{x} \\ \frac{\partial L(\textbf{w},b)}{\partial b} &= y-t \end{aligned}
∂w∂L(w,b)∂b∂L(w,b)=(y−t)x=y−t
这里用到了矩阵求导公式
∂
a
T
b
∂
a
=
b
\frac{\partial \textbf{a}^T \textbf{b}}{\partial \textbf{a}} = \textbf{b}
∂a∂aTb=b。
那么权重更新公式为
w
n
e
w
=
w
o
l
d
−
η
(
y
−
t
)
x
=
w
o
l
d
+
η
(
t
−
y
)
x
b
n
e
w
=
b
o
l
d
−
η
(
y
−
t
)
=
b
o
l
d
+
η
(
t
−
y
)
\begin{aligned} \textbf{w}_{new} &= \textbf{w}_{old} - \eta (y-t) \textbf{x} = \textbf{w}_{old} + \eta (t-y) \textbf{x} \\ b_{new} &= b_{old} - \eta (y-t) = b_{old} + \eta (t-y) \end{aligned}
wnewbnew=wold−η(y−t)x=wold+η(t−y)x=bold−η(y−t)=bold+η(t−y)
其中,
η
\eta
η为学习率。