文章目录

  • 1、2层前馈神经网络模型
  • (1) 单个样本
  • (2) 多个样本时的矩阵表示
  • 2、2层前馈NN的误差反向传播(BP)算法
  • (1) 单个样本
  • (2) 多个样本时的矩阵表示
  • 3、BP多层前馈网络



本文主要参考文献如下:


1、吴恩达《深度学习》视频。


2、周志华. 《机器学习》3.2.清华大学出版社。


3、陈明等,《MATLAB神经网络原理与实例精解》,清华大学出版社。

这部分强烈推荐吴恩达的《深度学习》视频,讲解得非常浅显易懂。

  前面介绍的Logistic回归,实际上就构成了一个神经元。如果有多个层,同时每个层有多个神经元,就形成了多层神经网络。我们这里所说的BP神经网络,实际上是多层前馈神经网络+误差反向传播算法,换句话说前者计算神经网络的输出,后者则根据估计输出与实际输出的误差,从后往前逆向更新每一层的参数。我们想从一个简单的两层BP网络入手,再推广到多层的情况。

1、2层前馈神经网络模型

BP神经网络 流程 bp神经网络视频_神经网络BP神经网络 流程 bp神经网络视频_神经网络模型_02BP神经网络 流程 bp神经网络视频_机器学习_03,前馈NN模型如图1所示,我们从输出层向后,逐层推导其输出BP神经网络 流程 bp神经网络视频_BP神经网络 流程_04

BP神经网络 流程 bp神经网络视频_神经网络模型_05


图1 多层前馈神经网络模型

(1) 单个样本

  我们先来推导单个样本是BP网络的前馈输出。

  • 输入层
    BP神经网络 流程 bp神经网络视频_机器学习_06
  • 隐含层
    BP神经网络 流程 bp神经网络视频_深度学习_07其中,每一行对应一个神经元的加权系数。显然,每个神经元会进行两步运算,第一步是线性叠加
    BP神经网络 流程 bp神经网络视频_机器学习_08第二步为激活函数,因此隐含层的输出为
    BP神经网络 流程 bp神经网络视频_深度学习_09这里的BP神经网络 流程 bp神经网络视频_机器学习_10为激活函数,后面我们设其为sigmoid函数。
  • 输出层
      由于BP神经网络 流程 bp神经网络视频_神经网络模型_11,即只有一个输出,因此可以得到
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_12同样需要两步处理,第一步
    BP神经网络 流程 bp神经网络视频_神经网络_13第二步输出为
    BP神经网络 流程 bp神经网络视频_机器学习_14因此,对于二分类问题,与Logistic回归类似,我们会将BP神经网络 流程 bp神经网络视频_神经网络模型_15作为BP神经网络 流程 bp神经网络视频_神经网络模型_16的概率进行判决。

(2) 多个样本时的矩阵表示

BP神经网络 流程 bp神经网络视频_神经网络模型_17个样本输入的情况。

  • 输入层
      显然输入层不再是向量,而变成矩阵。
    BP神经网络 流程 bp神经网络视频_机器学习_18
  • 隐含层
      隐含层的参数不受样本数的影响,重写如下
    BP神经网络 流程 bp神经网络视频_神经网络_19因此,可以得到
    BP神经网络 流程 bp神经网络视频_神经网络模型_20则隐含层的输出为
    BP神经网络 流程 bp神经网络视频_机器学习_21
  • 输出层
      同样,参数矩阵与单样本时相同,即
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_22可以得到
    BP神经网络 流程 bp神经网络视频_深度学习_23最后输出为
    BP神经网络 流程 bp神经网络视频_神经网络模型_24

2、2层前馈NN的误差反向传播(BP)算法

BP神经网络 流程 bp神经网络视频_BP神经网络 流程_25BP神经网络 流程 bp神经网络视频_深度学习_26。我们继续考虑图1中的两层网络,同样分成单个样本和多个样本两种情况。

(1) 单个样本

BP神经网络 流程 bp神经网络视频_神经网络模型_27。下面我们推导如何从右往左逐层更新参数BP神经网络 流程 bp神经网络视频_BP神经网络 流程_28BP神经网络 流程 bp神经网络视频_神经网络模型_29BP神经网络 流程 bp神经网络视频_神经网络模型_30BP神经网络 流程 bp神经网络视频_BP神经网络 流程_31。当然这中间也会涉及到BP神经网络 流程 bp神经网络视频_神经网络模型_32BP神经网络 流程 bp神经网络视频_神经网络模型_33BP神经网络 流程 bp神经网络视频_深度学习_34BP神经网络 流程 bp神经网络视频_神经网络_35的变化。

BP神经网络 流程 bp神经网络视频_神经网络模型_36


图2 图1中2层NN的误差反向传播算法模型

  • 代价函数
    与Logistic回归类似,这里代价函数定义为对数似然函数,即
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_37这里BP神经网络 流程 bp神经网络视频_神经网络_38,由于只有一个输出单元,因此为标量。
  • BP神经网络 流程 bp神经网络视频_神经网络_39
    由于BP神经网络 流程 bp神经网络视频_神经网络_38为标量,因此根据(21)有
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_41
  • BP神经网络 流程 bp神经网络视频_神经网络模型_42
    进一步,我们知道BP神经网络 流程 bp神经网络视频_机器学习_43,这里考虑Sigmoid函数,即BP神经网络 流程 bp神经网络视频_神经网络模型_44,因此有
    BP神经网络 流程 bp神经网络视频_神经网络_45

事实上,一般来说输出层的激活函数都用Sigmoid函数。

由此,得到
BP神经网络 流程 bp神经网络视频_BP神经网络 流程_46

  • BP神经网络 流程 bp神经网络视频_神经网络_47BP神经网络 流程 bp神经网络视频_神经网络模型_48
    再进一步,根据(6),有
    BP神经网络 流程 bp神经网络视频_深度学习_49

BP神经网络 流程 bp神经网络视频_深度学习_50因此,这里BP神经网络 流程 bp神经网络视频_机器学习_51是标量函数,对行向量BP神经网络 流程 bp神经网络视频_神经网络_52求偏导,仍为行向量,即
BP神经网络 流程 bp神经网络视频_神经网络_53

因而,可以得到
BP神经网络 流程 bp神经网络视频_深度学习_54

  • BP神经网络 流程 bp神经网络视频_神经网络_55
    根据(6),有BP神经网络 流程 bp神经网络视频_神经网络_56,因此
    BP神经网络 流程 bp神经网络视频_神经网络_57

BP神经网络 流程 bp神经网络视频_深度学习_50因此,这里BP神经网络 流程 bp神经网络视频_机器学习_51是标量函数,对列向量BP神经网络 流程 bp神经网络视频_BP神经网络 流程_60求导,仍为列向量,即
BP神经网络 流程 bp神经网络视频_深度学习_61

  • BP神经网络 流程 bp神经网络视频_深度学习_62
    根据(4.4),由于BP神经网络 流程 bp神经网络视频_深度学习_63,若考虑Sigmoid函数,有
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_64这里BP神经网络 流程 bp神经网络视频_机器学习_65表示逐项相乘。

注意这里BP神经网络 流程 bp神经网络视频_神经网络模型_66,因此是逐项把BP神经网络 流程 bp神经网络视频_神经网络_67求导,再代回向量中。上式考虑Sigmoid函数,注意乘法为逐项相乘,才能保证向量维度不变。

因此
BP神经网络 流程 bp神经网络视频_BP神经网络 流程_68

  • BP神经网络 流程 bp神经网络视频_机器学习_69BP神经网络 流程 bp神经网络视频_深度学习_70
    根据(3),即BP神经网络 流程 bp神经网络视频_神经网络模型_71

BP神经网络 流程 bp神经网络视频_机器学习_72
似乎这里只取其中一个行向量,即
BP神经网络 流程 bp神经网络视频_深度学习_73


BP神经网络 流程 bp神经网络视频_深度学习_74

(2) 多个样本时的矩阵表示

BP神经网络 流程 bp神经网络视频_神经网络模型_17个样本的情况。,如图3所示。

BP神经网络 流程 bp神经网络视频_神经网络模型_76


图3 $m$个样本的2层前馈NN反向传播模型

  • 代价函数
      对于BP神经网络 流程 bp神经网络视频_BP神经网络 流程_77个样本,我们定义代价函数为
    BP神经网络 流程 bp神经网络视频_深度学习_78我们把BP神经网络 流程 bp神经网络视频_BP神经网络 流程_77个样本表示成矩阵形式,有
    BP神经网络 流程 bp神经网络视频_机器学习_80因此,可以得到
    BP神经网络 流程 bp神经网络视频_深度学习_81由于
    BP神经网络 流程 bp神经网络视频_神经网络_82这里考虑Sigmoid函数,即BP神经网络 流程 bp神经网络视频_神经网络模型_83,因此有
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_84由此,得到
    BP神经网络 流程 bp神经网络视频_神经网络模型_85因此,有
    BP神经网络 流程 bp神经网络视频_神经网络_86
    进一步,由于
    BP神经网络 流程 bp神经网络视频_神经网络_87因此
    BP神经网络 流程 bp神经网络视频_神经网络模型_88
    同样,由于
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_89因此
    BP神经网络 流程 bp神经网络视频_深度学习_90
    进一步,由于
    BP神经网络 流程 bp神经网络视频_BP神经网络 流程_91我们可以得到
    BP神经网络 流程 bp神经网络视频_神经网络模型_92
    BP神经网络 流程 bp神经网络视频_机器学习_93

3、BP多层前馈网络

BP神经网络 流程 bp神经网络视频_神经网络_94层NN,输入个数为BP神经网络 流程 bp神经网络视频_机器学习_95,第BP神经网络 流程 bp神经网络视频_BP神经网络 流程_96层神经元个数为BP神经网络 流程 bp神经网络视频_机器学习_97,共有BP神经网络 流程 bp神经网络视频_神经网络模型_17个数据样本的情况。

BP神经网络 流程 bp神经网络视频_BP神经网络 流程_96层而言,BP神经网络 流程 bp神经网络视频_神经网络_100,有
BP神经网络 流程 bp神经网络视频_深度学习_101其中,每一行对应当前层每个神经元的加权系数,因此,可以得到
BP神经网络 流程 bp神经网络视频_神经网络模型_102这里BP神经网络 流程 bp神经网络视频_神经网络_103当前层(第BP神经网络 流程 bp神经网络视频_BP神经网络 流程_96层)的输出为
BP神经网络 流程 bp神经网络视频_BP神经网络 流程_105这里的BP神经网络 流程 bp神经网络视频_机器学习_106为第BP神经网络 流程 bp神经网络视频_BP神经网络 流程_96层的激活函数。参数更新则按照下式进行:

BP神经网络 流程 bp神经网络视频_机器学习_108