一、神经元模型
神经网络(neural networks) 中最基本的成分是神经元(neuron) 模型,在这个模型中,神经元接收到来自 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection) 进行传递,神经元接收到的总输入值将于神经元的阈值进行比较,然后通过激活函数(activation function) 处理以产生神经元的输出。
理想的激活函数是阶跃函数,常用的激活函数是 Sigmoid :
在这里插入图片描述

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。
二、感知机与多层网络
感知机(Perceptron) 由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是 M-P 神经元,亦称阈值逻辑单元(threshold logic unit)。
在这里插入图片描述

感知机能容易地实现逻辑与、或、非运算。假定 是阶跃函数,,则:
- 与():令 则 ,仅在 时, ;
- 或():令 则 ,当 或 时, ;
- 非():令 ,则 ,当 时, ;当 时, 。
更一般地,给定训练数据集,权重 以及阈值 可通过学习得到。阈值 可以看作一个固定输入为 的哑结点(dummy node) 所对应的连接权重 ,这样,权重和阈值的学习就可统一为权重的学习。对训练样例 ,若当前感知机的输出为 ,则感知机学习规则如下:
其中 称为学习率(learning rate)。从上式中可以发现,若预测正确,则感知机不发生变化,否则将根据错误的程度进行权重调整。
由于感知机的结构过于简单,只能用于解决线性可分的问题。面对复杂的非线性问题时,需要考虑多层功能神经元。包含隐层即为多层网络,神经网络的学习过程就是根据训练数据来调整神经元之间的连接权(connection weight) 以及每个功能神经元的阈值。
三、误差逆传播算法
多层网络的学习能力比单层感知机强很多,但要训练多层网络,式 5.1 显然过于简单,因此需要使用误差逆传播(BackPropagation, BP)算法。
给定数据集 ,即输入示例由 各属性描述,输出 维实值向量:
在这里插入图片描述

上图给出了一个拥有 各输入神经元、 个输出神经元、 个隐层神经元的多层前馈网络结构,其中输出层第 个神经元的阈值用 表示,隐层第 个神经元的阈值用 表示。输入层第 个神经元与隐层第 个神经元之间的连接权维 ,隐层第 个神经元与输出层第 个神经元之间的连接权为 。记隐层第 个神经元接收到的输入为 ,输出层第 个神经元接收到的输入为 ,其中 为隐层第 个神经元的输出。假设隐层和输出层神经元都是用 Sigmoid 函数。
对训练例 ,假定神经网络的输出为 ,即输出层第 个神经元的输入与阈值的差函数:
则网络在 上的均方误差为:
上图网络中有 个参数需确定:输入层到隐层的 个权值、隐层到输出层的 个权值、 个隐层神经元的阈值、 个输出层神经元的阈值。BP 是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,即与式 5.1 类似,任意参数 的更新估计式如下:
以隐层到输出层的连接权 为例来进行推导,BP 算法基于梯度下降(gradient descent) 策略,以目标的负梯度方向对参数进行调整。对式 5.4 的误差 ,给定学习率 ,有:
注意到 先影响到第 个输出层神经元的输入值 ,再影响到其输出值 ,然后影响到 ,有:
根据 的定义,显然有:
由 Sigmoid 函数的性质得:
因此由式 5.3 和式 5.4 有:
将式 5.10 和 5.8 代入式 5.7 和 5.6 ,得到 的更新公式:
类似可得:
式 5.13 和 5.14 中:
学习率 控制着算法每一轮迭代中的更新步长,若太大则容易振荡,太小则收敛速度又会过慢。在精细调解过程中,可令式 5.11 和 5.12 中的学习率不同,BP 算法的工作流程如下:
在这里插入图片描述

需要注意的是,BP 算法的目标是要最小化训练集 上的累计误差:
但是“标准的BP算法”每次仅针对一个训练样例更新连接权和阈值,也就是说上图中的算法更新规则是基于单个 推导得到的。如果类似地推导出基于累计误差最小化的更新规则,就得到了累计误差逆传播算法(accumulated error backpropagation)。累计 BP 算法与标准 BP 算法都很常用。
一般来说,标准 BP 算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能相互抵消。因此为了达到同样的效果,标准 BP 算法往往需要进行更多次数的迭代。累计 BP 算法直接针对累计误差最小化,它在读取整个训练集 一遍后才对参数进行更新,其参数更新的频率较低,但是当累计误差下降到一定程度之后,进一步下降会非常缓慢,此时标准 BP 往往可以更快获得更好的解,尤其是在大样本数据的情况下。
有人已经证明,只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数,但是如何设置隐层神经元个数仍然没有定论,实际中常常采用试错法(trial-by-error)。
由于 BP 强大的表示能力,因此经常遭遇过拟合现象。为解决这个问题,一种策略是早停(early stopping):将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。第二种策略是正则化(regularization):在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。仍令 表示第 个训练样例上的误差, 表示连接权和阈值,则误差目标函数变为:
其中 用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。
四、全局最小与局部极小
实际上 BP 的优化目标即为寻找一组最优参数使得 最小,在求解过程中会遇到两种“最优”:局部最优(local minimum) 和全局最优(global minimum)。对 和 ,若存在 使得:
都有 成立,则 为局部极小解;弱队参数空间中的任意 都有 ,则 为全局最小解。
基于梯度的搜索是使用最为广泛的参数寻优方法。在此类方法中,从某些初始解出发,迭代寻找最优参数值。每次迭代中,首先计算误差函数在当前点的梯度;然后根据负梯度的方向搜索;若误差函数在当前点的梯度为零,则已达到局部极小,更新量将为零。
在实际任务中,为跳出局部极小从而接近全局最小,可以采用以下策略“
- 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。
- 模拟退火(simulated annealing):在每一步都以一定的概率接收比当前解更差的结果,迭代过程中,接收次优解的概率要逐渐降低,从而保证算法稳定。
- 使用随机梯度下降:随机梯度下降在计算梯度时加入了随机因素,因此即便在局部极小点,所计算的梯度可能不为零,因此有助于跳出局部极小继续搜索。
- 遗传算法(genetic algorithms)
五、深度学习
对神经网络模型,提高容量(capacity) 的一个简单方法是增加隐层数目。虽然单隐层的多层前馈网络已具有强大的学习能力,但从复杂度的角度来看,增加隐层数目更有效。因为增加隐层数不尽增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。然而多因曾神经网络难以直接用经典算法进行训练,因为误差在多隐层内逆传播时,往往会发散(diverge) 而不能收敛到稳定状态。
无监督逐层训练(unsupervised layer-wise training) 是多隐层网络训练的有效手段,其基本思想是每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入,这称为预训练(pre-training);在预训练全部完成后,在对整个网络进行微调(fine-tuning)。
预训练与微调的做法可以看作将大量参数分组,对每组先找到局部来看比较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。
另一种策略是权共享(weight sharing),即让一组神经元使用相同的连接权。这个策略在卷积神经网络(Convolutional Neural Network, CNN) 中发挥很大的作用。
通俗来看,深度学习实际上就是将低层的特征转化为高层特征后,用简单模型来完成分类等学习任务。由此可将深度学习理解为进行特征学习(feature learning) 或表示学习(representation learning)。
原创存证 · 本地哈希 · ea7657b5562d...
算法:SHA-256
时间:2026-10-21
哈希:
ea7657b5562d994826b5de24eb664f61b1270954732431b59b96d3e5d3d402f3该信息用于辅助证明当前内容版本,不等同于法律公证或版权登记。
- 作者:BeZer0
- 链接:https://blog.bezer0.cn/learn-deep-learning/learn-deep-learning-5
- 声明:本文为原创文章,采用 CC BY-NC-SA 4.0 协议,转载请注明作者和原文链接。



