机器学习基础---神经网络---全连接网络及BP算法

BP神经网络

方法描述

方法思想:
  • 使用复合函数 f ( x ) = f m ( f ( m − 1 ) ( . . . f 1 ( x ) ) ) f(x)=f^m(f^{(m-1)}(...f^1(x))) f(x)=fm(f(m1)(...f1(x)))拟合输入样本集 X X X到标签集 Y Y Y之间的映射
  • 针对一个样本 x i x_i xi进行计算的过程是正向的,从 f 1 ( x ) f^1(x) f1(x) f m ( x ) f^m(x) fm(x)一步步计算,称作正向传播
  • 优化复合函数,即调整每一层函数参数以使得预测结果偏差最小的过程中,需要从结果的误差出发,向前传递误差,进而修改参数,此为反向传播(BP)

相关概念

  • 感知机

在这里插入图片描述

如上图所示,每个圆代表一个神经元,对来自其他神经元的信号输入 x = [ x 1 , x 2 , . . . , x k ] x=[x_1,x_2,...,x_k] x=[x1,x2,...,xk]

经过神经元处理 f = ∑ i = 1 k w i x i + b i a s f=\sum_{i=1}^kw_ix_i+bias f=i=1kwixi+bias得到 f f f,类似于神经元细胞对来自其他神经元细胞的传递的刺激脉冲的累加

再对使用阶跃函数处理 f f f,即根据累加脉冲是否达到阈值判断神经元是否有输出

事实上,感知机是一个线性二分类模型,也可以表示为 f ( x ) = s i g n ( w T x + b ) f(x)=sign(w^Tx+b) f(x)=sign(wTx+b),与寻找超平面将线性可分样本分开等价

  • 多层感知机(全连接神经网络)

    全连接神经网络,可以视作是由多个感知机构成的
    在这里插入图片描述

    中间层称作隐藏层,可以有多个

  • 激活函数

    • 神经元累加脉冲的步骤可以用矩阵乘 W ⋅ x W·x Wx表示,将多层直接联系起来有 f ( x ) = W m W m − 1 . . . W 1 x f(x)=W_mW_{m-1}...W_1x f(x)=WmWm1...W1x,其仍然是一个仿射变换

    • 因此为了实现对非线性映射的拟合,可以选择在每一层输出处引入一个非线性变换,即激活函数

    • 常用的激活函数有:

      • Relu
        R e l u ( x ) = { 0         x ≤ 0 x         x > 0 Relu(x)=\begin{cases} 0 \ \ \ \ \ \ \ x\leq0\\ x \ \ \ \ \ \ \ x>0 \end{cases} Relu(x)={0       x0x       x>0
        在这里插入图片描述

      • sigmoid函数
        s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac1{1+e^{-x}} sigmoid(x)=1+ex1
        在这里插入图片描述

      • tanh函数
        t a n h ( x ) = 1 − e − 2 x 1 + e − 2 x tanh(x)=\frac{1-e^{-2x}}{1+e^{-2x}} tanh(x)=1+e2x1e2x
        在这里插入图片描述

方法推导

  • 反向传播

  • 如图,是 l l l层全连接网络

在这里插入图片描述

令:第 l − 1 l-1 l1层与第 l l l层之间的权重向量为 w l w^l wl,偏置向量为 b l b^l bl,第 l l l层未激活的累加信号向量 Z l Z^l Zl,第 l l l层激活后的累加信号向量 α l \alpha^l αl

前向传播的过程可以用迭代的方式表示为:
α l = σ ( Z l ) = σ ( W l α l − 1 + b l )        ( l = 2 , 3 , . . . , L ) α 1 = x \alpha^l=\sigma(Z^l)=\sigma(W^l\alpha^{l-1}+b^l) \ \ \ \ \ \ (l=2,3,...,L)\\ \alpha^1=x αl=σ(Zl)=σ(Wlαl1+bl)      (l=2,3,...,L)α1=x

  • 定义损失函数为平方损失函数:
    J ( W , b , x , y ) = 1 2 ∣ ∣ α L − y ∣ ∣ 2 2 = 1 2 ∣ ∣ σ ( W L α L − 1 + b L ) − y ∣ ∣ 2 J(W,b,x,y)=\frac12||\alpha^L-y||_2^2=\frac12||\sigma(W^L\alpha^{L-1}+b^L)-y||^2 J(W,b,x,y)=21αLy22=21σ(WLαL1+bL)y2

  • 求解损失函数梯度:
    ∂ J ( W , b , x , y ) ∂ W L = [ ( α L − y ) ⋅ σ ′ ( Z L ) ] ( α L − 1 ) T ∂ J ( W , b , x , y ) ∂ b L = ( α L − y ) ⋅ σ ′ ( Z L ) ∂ J ( W , b , x , y ) ∂ Z L = ( α L − y ) ⋅ σ ′ ( Z L ) 此 处 ( α L − y ) ⋅ σ ′ ( Z L ) 为 相 应 位 置 元 素 相 乘 \begin{aligned} &\frac{\partial J(W,b,x,y)}{\partial{W^L}}=[(\alpha^L-y)·\sigma'(Z^L)](\alpha^{L-1})^T\\ &\frac{\partial J(W,b,x,y)}{\partial{b^L}}=(\alpha^L-y)·\sigma'(Z^L)\\ &\frac{\partial J(W,b,x,y)}{\partial{Z^L}}=(\alpha^L-y)·\sigma'(Z^L)\\ \end{aligned} 此处(\alpha^L-y)·\sigma'(Z^L)为相应位置元素相乘 WLJ(W,b,x,y)=[(αLy)σ(ZL)](αL1)TbLJ(W,b,x,y)=(αLy)σ(ZL)ZLJ(W,b,x,y)=(αLy)σ(ZL)(αLy)σ(ZL)

    记 : δ L = ∂ J ( W , b , x , y ) ∂ Z L = ( α L − y ) ⋅ σ ′ ( Z L ) 记:\delta^L=\frac{\partial J(W,b,x,y)}{\partial{Z^L}}=(\alpha^L-y)·\sigma'(Z^L) δL=ZLJ(W,b,x,y)=(αLy)σ(ZL)

  • Z l = W l α l − 1 + b l Z^l=W^l\alpha^{l-1}+b^l Zl=Wlαl1+bl
    ∂ J ( W , b , x , y ) ∂ W l = ∂ J ( W , b , x , y ) ∂ Z l ∂ Z l ∂ W l = δ l ( α l − 1 ) T ∂ J ( W , b , x , y ) ∂ b l = ∂ J ( W , b , x , y ) ∂ Z l ∂ Z l ∂ b l = δ l \begin{aligned} &\frac{\partial{J(W,b,x,y)}}{\partial{W^l}}=\frac{\partial J(W,b,x,y)}{\partial{Z^l}}\frac{\partial Z^l}{\partial{W^l}}=\delta^l(\alpha^{l-1})^T\\ &\frac{\partial{J(W,b,x,y)}}{\partial{b^l}}=\frac{\partial J(W,b,x,y)}{\partial{Z^l}}\frac{\partial Z^l} {\partial{b^l}}=\delta^l \end{aligned} WlJ(W,b,x,y)=ZlJ(W,b,x,y)WlZl=δl(αl1)TblJ(W,b,x,y)=ZlJ(W,b,x,y)blZl=δl


  • δ l = ∂ J ( W , b , x , y ) ∂ Z l = ( ∂ Z l + 1 ∂ Z l ) T δ l + 1 \delta^l=\frac{\partial J(W,b,x,y)}{\partial{Z^l}}=(\frac{\partial Z^{l+1}}{\partial{Z^l}})^T\delta^{l+1} δl=ZlJ(W,b,x,y)=(ZlZl+1)Tδl+1

    Z l + 1 = W l + 1 α l + b l + 1 = W l + 1 σ ( Z l ) + b l + 1 ∂ Z l + 1 ∂ Z l = W l + 1 σ ′ ( Z l ) Z^{l+1}=W^{l+1}\alpha^l+b^{l+1}=W^{l+1}\sigma(Z^l)+b^{l+1}\\ \frac{\partial Z^{l+1}}{\partial{Z^l}}=W^{l+1}\sigma'(Z^l) Zl+1=Wl+1αl+bl+1=Wl+1σ(Zl)+bl+1ZlZl+1=Wl+1σ(Zl)

  • 即可以从第L层开始,计算 δ L \delta^L δL,一层层向前计算 δ l \delta^l δl,进而求得损失函数对第l层 W l W^l Wl b l b^l bl的偏导

方法流程

  • 初始化每一层 W , b W,b W,b

  • 输入 α 1 = x \alpha^1=x α1=x

  • 前向传播
    α i , l = σ ( W l α i , l − 1 + b l ) \alpha^{i,l}=\sigma(W^{l}\alpha^{i,l-1}+b^{l}) αi,l=σ(Wlαi,l1+bl)

  • 计算:
    δ L = ( α L − y ) ⋅ σ ′ ( Z L ) \delta^L=(\alpha^L-y)·\sigma'(Z^L) δL=(αLy)σ(ZL)

  • l = L − 1 l=L-1 l=L1 l = 2 l=2 l=2,反向逐层计算:
    δ i , l = W l + 1 δ i , l + 1 ⋅ σ ′ ( z i , l ) \delta^{i,l}=W^{l+1}\delta^{i,l+1}·\sigma'(z^{i,l}) δi,l=Wl+1δi,l+1σ(zi,l)
    更新:
    W l = W l − η ∑ i = 1 m δ i , l ( α i , l − 1 ) T b l = b l − η ∑ i = 1 m δ i , l W^l=W^l-\eta\sum_{i=1}^m\delta^{i,l}(\alpha^{i,l-1})^T\\ b^l=b^l-\eta\sum_{i=1}^m\delta^{i,l} Wl=Wlηi=1mδi,l(αi,l1)Tbl=blηi=1mδi,l

  • 满足误差条件后结束,否则返回第三步

  • 得到所有的 W , b W,b W,b,对新样本前向传播求解

参考资料

【1】[神经网络反向传播矩阵求导][https://zhuanlan.zhihu.com/p/83859554?from_voters_page=true]

【2】[矩阵求导术(上)][https://zhuanlan.zhihu.com/p/24709748]

【3】[BP算法的矩阵推导][https://blog.csdn.net/qq_35269774/article/details/88585053]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值