MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)

1. 多层人工神经网络模型

  • 多层感知机MLP(Multi-Layer Perceptron)也叫多层人工神经网络。一般的,常见的神经网络是如下图所示的层级结构。由输入层、隐藏层(可有多层)和输出层组成。神经网络中最基本的成分是神经元(neuron)。每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”(multi-layer feedforward neural networks),(前馈并不意味着网络中信号不能向后传,而是指网络拓扑结构上不存在环或回路),其中,输入层神经元仅接收外界输入,不进行函数处理;隐藏层和输出层则包含功能神经元,能将接收到的总输入值与一定的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出。若将阈值也作为输入信号在神经网络中标出,则除输出层之外,各层会多出一个固定输入为-1的“哑结点”(dummy node),该节点与下一层的连接权即为阈值。这样权重和阈值的学习就可以统一为权重的学习。为方便后续解释,下图中并未标出哑结点。

  • 下图给出“单隐层网络”模型并解释各层功能及其作用方式:

    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第1张图片
    输入层拥有d个神经元,代表输入样本在d个属性下的值;
    输入层信号通过带权重的连接传递至隐藏层,隐藏层神经元分别接收到各自的总输入值ah(h=1,2…,q),将其与神经元的阈值进行比较,然后通过“激活函数”处理产生相应的输出bh(h=1,2,…,q);
    隐藏层输出信号同样通过带权重的连接传递至输出层,输出层神经元分别接收各自的总输入值co(o=1,2,…,l),并通过激活函数处理产生最后输出y’o(o=1,2,…l),即对该样本x的预测y’(这里的y’为 l 维列向量)。输出层神经元代表分类结果,其个数取决于最终分类标签的个数。
    神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”(connection weight)以及每个功能神经元的阈值;换言之,神经网络“学”到的东西,蕴涵在连接权与阈值中。

  • 为了方便理解,这里举出该神经网络模型的应用实例:识别手写数字。
    假设样本为n个手写数字图像,每个数字图像由28×28像素组成,每个像素由灰度值表示。我们把28×28的像素展开变成一个有784个维度的一维行向量,即一个样本向量,那么此时输入层的神经元个数就会有784个,即图中的d=784。因为是识别单个手写数字,其结果会有0-9这十种情况,因此输出层就会有10个神经元,即图中的 l=10。至于隐藏层的层数以及单元数则作为要优化的额外超参数,可以通过交叉验证技术解决,在此不对其进行详细展开。

  • 关于激活函数:
    理想的激活函数是如下图(a)所示的阶跃函数,它将输入值映射为输出值“0”或“1”,显然“1”对应于神经元兴奋,“0”对应于神经元抑制。然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数,如下图(b)所示。有时,输出层神经元也采用线性激活函数,即直接以输入值c与阈值θ的比较结果作为最后的预测值y’输出。
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第2张图片

2. 算法公式推导

(1)正向传播(Forward Propagation): 利用正向传播激活神经网络

  • 接下来,我们利用上述的神经网络模型,进一步用数学表达式来详细解释神经网络如何通过正向传播从输入信号输出预测结果的各个步骤:
    首先给定数据集 D:
    在这里插入图片描述
    即数据集D共有n个样本,且输入样本x(i)由 d 个属性描述,输出 l 维实值向量 y(i),如下所示:
    在这里插入图片描述
    在这里插入图片描述 将输入样本用矩阵X表示,输出值用矩阵Y表示:上标代表样本标号,下标代表相应的属性维度及分类维度。
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第3张图片
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第4张图片在输入层输入某一样本在各个属性维度下的值xk(k=1,2,…,d)作为接收信号并通过带权重v的连接传递至隐藏层,成为隐藏层的输入值ah(h=1,2,…q)。下图给出隐藏层的一个神经元如何接收输入层的输出信号:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第5张图片用公式表示为:在这里插入图片描述
    则对应某一样本的隐藏层输入向量为:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第6张图片
    记这里的权重矩阵为V:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第7张图片
    这会是我们之后要学习的连接权之一。
    同理可以写出隐藏层的输入值矩阵A:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第8张图片
    接下来,隐藏层的各个功能神经元将接收到的输入值ah(h=1,2,…,q),与某一阈值γh(h=1,2,…,q)进行比较,然后通过“激活函数”(这里用sigmoid函数)处理产生神经元的输出bh(h=1,2,…,q),用公式表示为:
    在这里插入图片描述
    则对应某一样本的输出层输出向量为:
    在这里插入图片描述其中阈值γ也是我们之后要学习的参数。
    同样可以写出隐藏层输出值矩阵B:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第9张图片之后,隐藏层神经元的输出bh(h=1,2,…,q)继续通过带权重的连接w传递至输出层,成为输出层的输入值co(o=1,2,…,l),下图同样给出输出层的一个神经元如何接收隐藏层的输出信号:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第10张图片用公式表示为:
    在这里插入图片描述
    则对应某一样本的输入层输入向量为:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第11张图片
    记这里的权重矩阵为W:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第12张图片
    这也是我们之后要学习的连接权之一。
    同理可以写出输出层的输入值矩阵C:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第13张图片最后,输入层的各个功能神经元将接收到的输入值co(o=1,2,…,q),与某一阈值θo(o=1,2,…,q)进行比较,然后通过“激活函数”(这里用sigmoid函数)处理产生神经元的输出y’o(o=1,2,…,q),用公式表示为:
    在这里插入图片描述则对应某一样本的输出层输出向量为:
    在这里插入图片描述这里的阈值θ也是我们之后要学习的系数。同样可以写出输出层输出值矩阵Y’:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第14张图片若输出层神经元采用线性激活函数,则输出预测结果y’o(o=1,2,…,q),用公式表示为:在这里插入图片描述则对应某一样本的输出层输出向量为:
    在这里插入图片描述以及输出层的输出值矩阵Y’:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第15张图片
  • 以上就是“单隐层神经网络”中输入信号如何通过各层的处理最后输出预测结果的正向传播激活网络的全过程。这里将其简单总结如下图所示:MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第16张图片
    (2)逆向传播(BackPropagation,简称BP): 利用逆向传播学习神经网络的权重系数及阈值
  • BP是一种迭代学习算法,在迭代的每一轮中采用广义的感知机(perceptron)学习规则对参数进行更新估计,即任意参数w的更新方式为:
    在这里插入图片描述
    其中Δw是所谓“目标函数”(objective function)关于该参数的梯度(偏导)。若要使目标函数的迭代值与迭代数成反比,即随着迭代的进行,目标函数值越来越小,则目标函数要为凹函数拥有全局最小值用于收敛并采用负梯度下降更新权重;反之,若要使目标函数的迭代值与迭代数成正比,则目标函数为凸函数具有全局最大值同样用于收敛并用正梯度上升更新权重。具体如下图所示:MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第17张图片
    BP算法采用误差函数J(v,w,γ,θ)为目标函数,又称为“代价函数”(cost function),其数学表达式为:在这里插入图片描述
    既为误差函数,则必然要求其值随着迭代的进行而下降,从而找到能使代价函数为全局最小值的权重,因此代价函数为凹函数,采用梯度下降(gradient descent)策略,则Δw可以表示为:
    在这里插入图片描述其中,η为学习率,控制梯度下降的步长。当学习率很小时会使收敛缓慢,学习率过大则会增加忽略全局最小值的可能性。因此学习率η也是算法在实际运用中需要调优的超参数。
    此外需要注意的一点是,多层神经网络的代价函数与自适应线性神经元(Adaline)以及逻辑回归(logistic regression)这样的单层网络的代价函数相比更为复杂。单层网络的代价函数与参数相关的误差表面就如同上图所示一样通常是光滑的、无突起的。而多层神经网络的代价函数是复杂嵌套函数,维度更高,其误差表面有许多突起,即拥有许多局部极小值,如下图所示:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第18张图片
    因此,要想找到全局最小值就必须克服这些局部极小值。神经网络参数化通常所面临的挑战就是处理高维特征空间的大量权重系数。
    微积分中的链式规则就是一种计算复杂嵌套函数导数的方法,如 F(x)=f(g(h(u(v(x))))) 应用链式法则的求导为:
    在这里插入图片描述
    计算机代数已经开发出了一套非常有效地解决这类问题的技术,也就是所谓的自动微分。自动微分有正向和反向两种模式,反向传播仅仅是反向模式自动微分的特例。关键是正向模式应用链式法则可能相当昂贵,因为要与每层的大矩阵(雅可比矩阵)相乘,最终乘以一个向量以获得输出。反向模式的技巧是从右往左:用一个矩阵乘以一个向量,从而产生另一个向量,然后再乘以下一个矩阵,以此类推。矩阵向量乘法比矩阵矩阵乘法在计算成本上要便宜得多,这就是为什么反向传播算法是神经网络训练中最常用的算法之一。
    根据上述分析,本质上可以认为BP算法是一种计算多层神经网络复杂成本函数的偏导数的非常有效的方法,其目标是利用这些导数来学习权重系数,以实现多层人工神经网络的参数化。
    接下来我们开始利用微积分的链式规则来逐步推导BP算法中的权重更新公式,以上述所介绍的“单隐层神经网络”模型为例。
    首先,这里我们需要更新的权重系数有四个,它们分别是:两个权重矩阵V、W,以及两组阈值向量γ和θ,我们对它们采用如下所示的广义感知机学习规则以及负梯度下降进行迭代更新:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第19张图片从神经网络的右往左对代价函数J(v,w,γ,θ)进行求导,首先会遇到的是隐藏层的权重矩阵W以及阈值向量θ。这里首先写出代价函数J(v,w,γ,θ)的完整嵌套函数形式:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第20张图片根据上式可写出代价函数关于权重w以及阈值θ的负梯度:
    在这里插入图片描述
    在这里插入图片描述
    其中:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第21张图片
    值得一提的是,有些多层神经网络的输出层使用的激活函数为线性激活函数,而非Sigmoid函数,此时,权重w以及阈值θ的偏导则为:
    在这里插入图片描述
    在这里插入图片描述
    其中:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第22张图片若设输出层的误差δ1o(o=1,2,…,l)为:
    在这里插入图片描述
    或者当输出层神经元的激活函数为线性激活函数时δo(o=1,2,…,l)可表示为:
    在这里插入图片描述
    则Δw和Δθ可以表示为:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第23张图片
    接下来,继续从右往左求导,得到权重v和阈值γ的负梯度:
    在这里插入图片描述
    在这里插入图片描述其中:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第24张图片若输出层神经元的激活函数为线性激活函数,则权重v和阈值γ的负梯度可表示为:
    在这里插入图片描述
    在这里插入图片描述
    其中:
    在这里插入图片描述若设隐藏层的误差δ2h(h=1,2,…,q)为:
    在这里插入图片描述
    其中δ1o(o=1,2,…,l)为:
    在这里插入图片描述
    或者当输出层神经元的激活函数为线性激活函数时δ2h(h=1,2,…,q)可表示为:
    在这里插入图片描述
    其中δ1o(o=1,2,…,l)为:
    在这里插入图片描述
    则Δv和Δγ可以表示为:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第25张图片
  • 至此推导出所有参数的负梯度,将各个参数的权重更新总结如下:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第26张图片
    其中:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第27张图片
    用矩阵表示为:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第28张图片
    其中:
    MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)_第29张图片

3. 关于算法的实际应用

  • 关于每次参数更新所针对的数据集大小对模型学习的影响:
    在实际应用中,一般来说标准BP算法每次更新只针对单个样例,即上述推导过程中的样本个数n=1的情况。在这种情况下,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象。
    与之相对应的累积BP算法直接针对整体训练集的总误差,即n>>1的情况。在这种情况下,每更新一次权重系数,算法都要读取整个训练集的数据一遍,因此其参数更新频率会非常缓慢。
    在实际应用中,我们可以采取折中的方式,即采用小批量(mini-batch)的数据读取方式,每次只读取总训练数据的一小部分数据来更新参数。这样既可以提高计算效率,也能够更快地进行参数更新。

  • 关于BP神经网络的“过拟合”(overfitting)问题:
    除此之外,多层神经网络由于其强大的表示能力而经常遭遇“过拟合”(overfitting),即模型在训练集上表现良好但无法概括未见过的新数据或测试数据的情况。在这种情况下,我们也称模型具有”高方差“(high variance)的属性,即模型对训练数据的随机性很敏感。
    有两种策略常用来缓解BP网络的过拟合问题:
    第一种策略是"早停"(early stopping):将数据分成训练集和验证集,训练集用来计算梯度、更新权重和阈值,验证集用来估计误差。若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
    第二种策略是"正则化"(regularization):其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和(L2正则化)。由于过拟合问题通常是由于训练后的模型表达式过于复杂所导致的,因此通过调整正则项系数λ使该正则项经过微分后能够不同程度地降低各个权重系数值以减少各个特征对结果的影响从而使模型得到不同程度的简化,就能最终达到抵抗模型过拟合的效果。

4. 参考文献

  • [1] 周志华. 机器学习(第1版)[M]. 出版地:北京市清华大学学研大厦A座, 出版单位:清华大学出版社, 出版年份:2016, 起止页码:97-106.
  • [2] Sebastian Raschka,Vahid Mirijalili. Python机器学习(第2版)[M]. 出版地:北京市西城区百万庄大街22号, 出版单位:机械工业出版社, 出版年份:2019, 起止页码:238-261.

你可能感兴趣的:(MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解))