感知机的反向传播公式推导

感知机的反向传播公式推导

感知机的反向传播公式推导
输入为 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)=(ty)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} wL(w,b)bL(w,b)=2(ty)wy=2(ty)wf=2(ty)wunit=2(ty)by=2(ty)bf=2(ty)bunit
都会面对阶跃函数求导的问题,但是阶跃在零点处是不可导的,所以无法保证上式的正常求解。

那么,怎么办呢?有两个思路:

  • 设计处处可导的**函数,如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)=(yt)(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)=(yt)(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} wL(w,b)bL(w,b)=(yt)x=yt
这里用到了矩阵求导公式 ∂ a T b ∂ a = b \frac{\partial \textbf{a}^T \textbf{b}}{\partial \textbf{a}} = \textbf{b} aaTb=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η(yt)x=wold+η(ty)x=boldη(yt)=bold+η(ty)
其中, η \eta η为学习率。