目录
一、BP神经网络基础知识
1.BP神经网络
2.隐含层选取
3.激活函数
4.正向传递
5.反向传播
6.不拟合与过拟合
二、BP神经网络设计流程
1.数据处理
2.网络搭建
3.网络运行过程
三、BP神经网络优缺点与改进方案
1.BP神经网络的优缺点
2.改进方案
一、BP神经网络基础知识
1.BP神经网络
BP神经网络,全称为反向传播(Backpropagation)神经网络,是一种基于监督学习的多层前馈神经网络。它通过使用反向传播算法来训练网络,以最小化输出层与期望输出之间的误差。这种网络模型通过调整神经元之间的连接权重和阈值,来学习输入与输出之间的复杂映射关系。
信息因子从输入层、隐含层、输出层依次正向传递,误差因子则反向传播,通过损失函数不断调整之间的权重值,从而减小损失,从而使预测结果更接近真实值。BP神经网络结构如下图:
2.隐含层选取
一般在BP神经网络中,输入层和输出层都为一层,并且节点数量都比较确定,而隐含层中层数和节点数量的选取方法对于模型的性能是比较重要的。
隐含层中层数的选取一般一两层就足够,并不是说隐含层越多越好,如果需要更精确的结果,则不断的尝试用不同层数来测试网络的性能,从中选取较为合适的层数。隐含层中节点数量的选取一般通过经验公式来确定:
s为隐含层的层数,m、n分别为输入层与输出层的因子数量,c为[1,10]之间的一个任意常数。
3.激活函数
在BP神经网络模型中,需要考虑到激活函数的选取,一般激活函数有以下三种:
- Sigmoid函数
Sigmoid函数又称S型函数,它的取值范围在(0,1)之间,单调连续,处处可微。
Sigmoid函数在处理回归问题时效果较好,因为它能够将输出限制在(0,1)之间,适用于需要概率输出的场景。然而,Sigmoid函数在输入较大或较小时,梯度接近于0,容易导致梯度消失问题,影响网络的训练效果。Sigmoid函数常用于隐藏层和二分类的输出层。
- Tanh函数
Tanh函数是双曲正切函数,它的取值范围在(-1,1)之间,也是单调连续,处处可微。
Tanh函数可以看作是Sigmoid函数的变体,它解决了Sigmoid函数输出不是以0为中心的问题。然而,Tanh函数同样存在梯度消失的问题。
- ReLU函数
ReLU(Rectified Linear Unit)函数是修正线性单元函数。
relu函数是一个通用的激活函数,针对Sigmoid函数和tanh的缺点进行改进的,目前在大多数情况下使用。
4.正向传递
正向传递是数据从输入层到输出层的传播过程。
如上图有n个输入值,并且每个节点对应的权重值为,sum节点的阈值为b,则,sum通过激活函数t,输出节点的结果r。
上图只为所有神经元中的其中一个神经元的传播过程,其余皆为一样的过程,每层向前传播的过程基本一样。
5.反向传播
反向传播是从输出层到输入层的过程,基于梯度下降法,通过计算损失函数关于网络参数的梯度,并将这些梯度反向传播回网络,以更新网络的权重与阈值。并通过调整网络中的权重和阈值来最小化网络输出与目标输出之间的误差。这个过程通过迭代进行,直到达到某个停止条件,如损失函数收敛或者达到预设的训练次数。
从输出层开始,根据链式法则计算每个神经元的梯度(即误差关于该神经元参数的偏导数)。梯度表示了参数变化对损失函数的影响程度,用于指导参数的更新方向,通过网络的每一层反向传播,直到输入层。权重和偏置的更新目的是减小损失函数的值,使网络预测更加准确。
6.不拟合与过拟合
- 不拟合
出现数据不拟合的情况时,需要调整网络的结构以及初始化的参数。
- 过拟合
出现过拟合说明数据量太小,需要加大样本的数量,防止过拟合现象。
二、BP神经网络设计流程
1.数据处理
- 数据收集
从各种来源收集相对应研究方向的原始数据。这些来源包括:数据文件、音频、图像,视频等。
- 数据预处理
数据清洗:检查并处理异常数据,一般称为噪声。处理白噪声,即处理有规律性的垃圾数据,一般会使用小波变换和频率域滤波。
数据转换:处理音频数据时,使用音频处理技术得出音频每个时段的振幅与频率数据,使用归一化处理,使数据归一到[0,1]之间,可减小异常值的影响,并使数据在后续处理中更方面。
- 数据存储
处理过的数据被存放在数据库或其他类型的数据存储系统中,以便后续的使用。
- 数据分割
将数据集分割为训练集和测试集。训练集用于训练模型,一般使用网上数据;测试集用于评估模型性能,一般使用线下收集的真实数据。
2.网络搭建
- 确定输入与输出
首先明确你输入的数据是什么,并明确输入数据的方式,输出是你希望神经网络预测得出的目标。例如:输入的数据有振幅、频率与加速度三种类型数据,输出的是预测故障的类别。
输入的方式选择标量、向量还是张量,一般选用向量。多个向量组成的数组成为矩阵,神经网络便是用矩阵来运算的。
- 设计网络的结构
根据当前情景选择合适的神经网络类型,比如:全连接神经网络(FCN)、卷积神经网络(CNN)、BP神经网络等。确定输入层与输出层的节点数量和隐含层的层数与其节点数量。输入层相当于输入特征的数量,输出层相当于输出的维度。选定激活函数,如:Sigmoid函数、Tanh函数、ReLU函数。
- 初始化参数
初始化网络中的权值与阈值。一般可使用随机初始化的方法来进行初始值的设置。
3.网络运行过程
- 前向传播
将数据输入神经网络模型中,按照模型结构,数据值乘以权重加上阈值,从输入层、隐含层、输出层依次向前进行权值的计算与更新,最后通过激活函数的计算得到每个神经元的输出,在输出层输出结果。
- 计算损失函数
根据输出层的输出和真实标签数据,计算损失函数(或代价函数)的值。损失函数用于衡量预测值与实际值之间的差异,常用的损失函数包括均方误差(MSE)和交叉熵损失(Cross Entropy Loss)等。目的是减小损失,使得到的结果数据更接近真实值。
- 反向传播
利用损失函数的梯度信息,从输出层开始向输入层反向传播误差,逐层计算每个权重和阈值的梯度,并根据梯度不断调整权重和阈值,依此收敛到一个范围,减小损失函数的值。
- 重复训练
数据通过上述过程重复计算,直到达到可接受的程度或达到迭代的次数。因为BP神经网络属于有监督的神经网络模型,在多次训练过程中,我们需要手动调整因子数量,隐含层数量等,以求使BP神经网络模型达到最优。
三、BP神经网络优缺点与改进方案
1.BP神经网络的优缺点
- 优点:
特别适合于解决复杂的非线性问题;自学习和自适应能力较强;具有一定的泛化能力。
- 缺点:
学习速度较慢;容易陷入局部最小值;网络结构选择困难等。
2.改进方案
可以引入粒子群优化算法来对BP神经网络进行优化。粒子群优化算法能够加速模型的收敛速度,克服BP神经网络易陷入局部最优解的问题。它提供了一种更全局的搜索策略,更够更好的逼近最优解,适合优化各种分类预测问题。