首页 > 其他分享 >粒子群优化BP神经网络分类模型进行人类活动分类

粒子群优化BP神经网络分类模型进行人类活动分类

时间:2024-06-09 16:28:57浏览次数:26  
标签:粒子 函数 分类 算法 神经网络 BP 神经元

1设计方案

1.1数据采集与处理

首先,采集沙特国王大学利雅得校区收集不同用户在不同活动状态下的IMU传感器数据集。然后,对数据进行预处理,包括去噪、滤波和特征提取等步骤,以提取出对活动识别有用的特征。

1.2 BP神经网络结构设计  

根据IMU传感器数据的特性和活动识别的需求,设计合适的BP神经网络结构。包括确定输入层、隐藏层和输出层的节点数,以及选择合适的激活函数和损失函数等。

1.3 PSO算法优化

利用PSO算法对BP神经网络的权值和阈值初始值进行优化。通过设定合适的粒子群规模、迭代次数和惯性权重等参数,使得PSO算法能够在解空间中快速搜索到最优的权值和阈值初始值。

1.4模型训练与评估

将优化后的权值和阈值初始值代入BP神经网络,使用处理后的IMU传感器数据进行训练。通过交叉验证等方法评估模型的性能,并根据评估结果对模型进行调整和优化。

2.PSO-BP神经网络模型的建立

2.1 BP神经网络模型

2.1.1 BP神经网络

BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络模型之一。它由Rumelhart和McClelland等科学家于1986年提出,其基本原理是通过前向传播和反向传播算法来训练网络,实现对输入数据的学习和预测。

2.1.2 BP神经网络结构

BP神经网络是一种典型的多层前馈网络,主要由输入层、隐藏层和输出层组成。各层之间通过神经元进行连接,每个神经元都接收来自前一层神经元的输入,经过加权求和和激活函数处理后,输出到下一层神经元。如图2-1为典型BP神经网络结构:

图2-1典型BP神经网络结构

  1. 输入层

输入层是BP神经网络的第一个层次,它接收原始数据的输入。输入层神经元的数量取决于输入数据的特征数量。每个输入神经元将输入数据的一个特征值传递给与之相连的隐藏层神经元。在输入层,数据不需要进行任何处理,只是简单地将输入值传递给下一层。

  1. 隐藏层

隐藏层位于输入层和输出层之间,是BP神经网络的核心部分。隐藏层可以有一层或多层,每层的神经元数量可以根据问题的复杂性和数据的特性来确定。隐藏层的主要作用是对输入数据进行非线性变换,提取数据的特征信息,并传递给输出层。在隐藏层,每个神经元接收来自前一层神经元的输入,通过加权求和和激活函数处理后,产生输出值。这些输出值将作为下一层神经元的输入。

隐藏层的神经元数量对神经网络的性能有重要影响。如果神经元数量过少,网络可能无法学习到数据的复杂特征,导致预测或分类效果不佳;如果神经元数量过多,网络可能会过度拟合训练数据,对未知数据的泛化能力降低。因此,确定合适的隐藏层神经元数量是BP神经网络设计中的一个关键问题。

  1. 输出层

输出层是BP神经网络的最后一个层次,它接收来自隐藏层的输出,并产生最终的预测或分类结果。输出层神经元的数量取决于预测或分类任务的需求。对于分类问题,输出层神经元的数量通常与类别数量相等;对于回归问题,输出层通常只有一个神经元,用于产生连续的输出值。

在输出层,每个神经元接收来自隐藏层的输出,通过加权求和和激活函数处理后,产生最终的预测或分类结果。对于分类问题,通常采用Sigmoid或Softmax等激活函数将输出值映射到概率空间;对于回归问题,通常采用线性激活函数或双曲正切等非线性激活函数。本文采用Sigmoid函数:

函数曲线如图2-2所示:

图2-2 Sigmoid函数曲线

2.1.3 BP神经网络的神经元模型

BP神经网络中的神经元是网络的基本处理单元,它模拟了生物神经元的结构和功能。每个神经元接收来自前一层神经元的输入信号,经过加权求和和激活函数处理后,产生输出信号并传递给下一层神经元。

  1. 输入信号

神经元的输入信号是前一层神经元的输出值。在BP神经网络中,每个神经元都与前一层的所有神经元相连,并接收它们的输出值作为输入信号。这些输入信号通过连接权重进行加权求和,形成神经元的净输入。

  1. 连接权重

连接权重是BP神经网络中的关键参数之一,它决定了神经元之间的连接强度和方向。连接权重的大小和符号反映了神经元之间的相互作用关系。在训练过程中,连接权重将根据误差信号进行更新和调整,以实现网络的优化和学习。

  1. 激活函数

激活函数是神经元的核心部分之一,它决定了神经元的输出值。激活函数将神经元的净输入映射到输出空间,并产生神经元的输出值。常见的激活函数包括Sigmoid函数、Tanh函数、ReLU函数等。这些函数具有不同的特点和适用范围,可以根据具体任务和数据特性进行选择。

  1. 输出信号

神经元的输出信号是激活函数的输出值,它将被传递给下一层神经元作为输入信号。在BP神经网络中,神经元的输出信号是加权求和和激活函数处理后的结果,它反映了神经元对输入数据的处理和响应。

2.1.4 BP神经网络的训练过程

BP神经网络的训练过程是通过反向传播算法来实现的。反向传播算法是一种基于梯度下降的优化算法,它通过计算损失函数对连接权重的梯度来更新权重值,以最小化损失函数并优化网络的性能。

图2-3 BP神经网络的训练过程

  1. 前向传播

在前向传播阶段,输入数据从输入层开始逐层向前传播到输出层。在每个神经元中,输入信号经过加权求和激活函数处理后产生输出信号,并传递给下一层神经元。最终,输出层的神经元产生预测或分类结果。

a.算损失函数

损失函数是衡量预测或分类结果与真实结果之间差异的指标。在BP神经网络中,常用的损失函数包括均方误差(MSE)、交叉熵损失(Cross-Entropy Loss)等。根据预测结果和真实结果计算损失函数的值,并用于后续的反向传播过程。

  1. 反向传播

在反向传播阶段,BP神经网络根据前向传播阶段得到的预测结果和真实结果之间的误差,通过反向传播算法来更新网络的连接权重。反向传播算法的核心是计算损失函数对连接权重的梯度,并利用梯度下降法来更新权重值,以最小化损失函数。

  1. 计算梯度

反向传播算法首先计算损失函数对输出层神经元的偏导数,即损失函数对输出层神经元的输出值的梯度。然后,根据链式法则,逐层计算损失函数对隐藏层神经元和输入层神经元的偏导数,即损失函数对隐藏层神经元和输入层神经元的输出值的梯度。这些梯度反映了网络对输入数据的敏感度和误差的来源。

单个神经元梯度:

损失函数L对的偏导数为:

  1. 更新权重

在得到梯度后,BP神经网络利用梯度下降法来更新连接权重。具体来说,将学习率与梯度相乘,得到权重更新的方向和步长。然后,将当前权重减去学习率与梯度的乘积,得到更新后的权重值。这个过程不断迭代进行,直到满足停止条件(如达到最大迭代次数、损失函数值小于阈值等)。

2.1.5梯度下降法 

BP神经网络中使用的梯度下降法原理是通过迭代的方式,不断调整网络中的权重和偏置(阈值),以最小化损失函数,从而优化神经网络的性能。以下是梯度下降法的详细原理和公式:

  1. 原理概述:

梯度下降法是一种求解无约束最优化问题的常用方法。在标量场中,某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。为了找到最小值,我们沿着梯度的负方向(即函数值下降最快的方向)进行迭代。

在BP神经网络中,梯度下降法用于调整网络的权重和偏置,以最小化网络的输出误差。这是通过计算损失函数关于权重和偏置的梯度,并沿着梯度的负方向更新权重和偏置来实现的。

  1. 公式表示:

梯度下降法的迭代公式可以表示为:  

xnew=xold-αfx#6

其中x表示权重或偏置,f(x)表示损失函数,α是学习率(步长),∇是梯度算子,∇f(x)表示损失函数关于x的梯度。

在BP神经网络中,损失函数通常是网络输出与实际标签之间的某种差异度量(如均方误差)。对于每个权重和偏置,我们都需要计算其对应的梯度,并根据迭代公式进行更新。

  1. 实现步骤:
  1. 初始化权重和偏置:在开始训练之前,为神经网络的每个连接随机设置初始权重和偏置。
  2. 前向传播:将输入数据通过网络进行前向传播,计算每个神经元的输出。
  3. 计算损失:根据网络输出和实际标签计算损失函数的值。
  4. 反向传播:根据链式法则计算损失函数关于每个权重和偏置的梯度。
  5. 更新权重和偏置:使用梯度下降法的迭代公式更新每个权重和偏置。
  6. 迭代优化:重复上述步骤,直到满足停止条件(如达到最大迭代次数或损失函数值小于某个阈值)。

总之,梯度下降法是BP神经网络中用于优化网络权重和偏置的重要算法。通过不断迭代和调整网络参数,可以使网络的输出误差最小化,从而提高神经网络的性能。

2.2粒子群算法

        粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,其基本原理模拟了生物群体中的信息传递和合作行为。粒子群算法将问题的潜在解表示为一群粒子,每个粒子代表一个候选解。每个粒子具有三个主要属性:速度、位置和适应度。速度表示粒子在搜索空间中的移动方向和速度,位置表示当前解,而适应度则通过适应度函数计算得到,用于评估粒子的优劣

2.2.1粒子群算法基本理论

  1. 初始化粒子群:随机初始化一群粒子,为每个粒子随机分配一个初始位置和速度。
  2. 评估粒子适应度:根据特定问题的目标函数,计算每个粒子的适应度值。
  3. 更新个体最优解:对于每个粒子,记录其个体历史最优解,即该粒子达到的最好解。
  4. 更新全局最优解:从所有粒子的个体历史最优解中选取适应度最好的解作为全局最优解。
  5. 更新粒子速度和位置:根据粒子当前位置、速度和个体、全局最优解,通过调整速度和位置来更新粒子的状态。更新公式为:
    • 速度更新:

    • 位置更新:

其中,v(i+1)为粒子下一时刻速度,x(i+1)为粒子下一时刻位置,w为惯性权重,c1、c2为加速因子,r1、r2为随机数,p(i)为个体历史最优解,g(i)为全局最优解。

2.2.2算法流程

  1. 重复步骤b至e,直到满足停止条件(如达到预定迭代次数或找到满意解)。
  2. 初始化种群:随机生成一组初始解作为初始种群。
  3. 计算适应度:根据问题的目标函数计算种群中每个个体的适应度值。
  4. 选择操作:根据适应度值选择一部分优秀的个体作为父代。
  5. 交叉操作:对父代个体进行交叉操作,生成新的子代个体。
  6. 变异操作:对子代个体进行变异操作,增加种群的多样性。
  7. 迭代进化:重复选择、交叉和变异操作,形成新的种群,直到满足终止条件(如达到最大迭代次数、找到满足要求的解等)。

通过以上步骤的迭代进化,粒子群算法能够逐步逼近问题的最优解。

图1-4粒子群算法流程图

2.2.3.核心思想

粒子群算法的核心思想是通过群体中个体之间的协作和信息共享来寻找最优解。在搜索过程中,每个粒子都会跟踪两个“极值”:个体极值(P_best)和群体极值(G_best)。个体极值是粒子自身历史最优解,而群体极值则是整个粒子群历史最优解。粒子根据这两个极值以及自身速度和位置来更新自己的状态,从而逐渐搜索到全局最优解附近的解空间。

2.2.4伪代码

       以下是粒子群算法的伪代码:

粒子群算法伪代码

初始化阶段: 

设置粒子群规模 N 

设置迭代次数 MaxIter 

对于每个粒子 i(i = 1 到 N): 

    随机初始化粒子位置 x(i) 

    随机初始化粒子速度 v(i) 

    初始化个体最优位置 pbest(i) = x(i) 

    计算个体最优适应度值 fbest(i) 

初始化全局最优位置 gbest = x(g),其中 g 使得 fbest(g) 是所有个体最优中的最小值 

迭代阶段: 

对于每个迭代次数 t(t = 1 到 MaxIter): 

    对于每个粒子 i(i = 1 到 N): 

        计算当前粒子位置的适应度值 f(i) 

        如果 f(i) < fbest(i),则更新 pbest(i) = x(i),fbest(i) = f(i) 

        如果 f(i) < f(gbest),则更新 gbest = x(i) 

        根据以下公式更新粒子的速度和位置: 

        v(i) = w * v(i) + c1 * rand() * (pbest(i) - x(i)) + c2 * rand() * (gbest - x(i)) 

        x(i) = x(i) + v(i) 

        (注意:可能需要限制v(i)和x(i)的值在搜索空间内)  

    (可选)根据问题的需要,对速度或位置进行边界处理,确保在搜索空间内 

    (可选)随着迭代次数的增加,可以动态调整惯性权重 w 

结束条件:  如果达到最大迭代次数 MaxIter 或满足其他停止条件,则结束算法 

输出阶段:  输出全局最优解 gbest 和其对应的适应度值 f(gbest)

2.3粒子群算法优化BP神经网络模型

通过以上理论基础可以建立粒子群算法优化BP神经网络模型,算法流程如图2-5所示:

图2-5粒子群算法优化BP神经网络算法

3.粒子群算法优化BP神经网络模型的求解

3.1.超参数优化结果

本文通过粒子群算法优化得到BP神经网络参数最优值,如表1所示:

表1

参数

说明

数值

LayerSizes

隐藏层的大小

(24,4)

Lambda

权重衰减因子

0.001

经过优化后的模型分类能力具有较大提升。

3.2优化曲线

如图3-1即为粒子群算法优化BP神经网络的过程:

图3-1优化曲线

由图2-1可以观察到:

  1. 随着迭代次数的增加(从1到30),适应度值(fitness)逐渐降低,这表明优化算法在逐渐逼近最优解。然而,值得注意的是,在迭代的后半段,适应度值的下降速度明显放缓,这可能意味着算法已经接近或达到了局部最优解。
  2. 图中适应度值的范围从约0.085下降到0.013,说明粒子群算法能够在给定的迭代次数内将适应度值降低到一个相对较小的范围内。然而,这个范围是否满足实际需求或是否接近全局最优解,需要根据具体的应用场景来确定。
  3. 图中显示了30次迭代。在某些情况下,更多的迭代次数可能能够找到更好的解,但也可能导致过拟合或增加计算成本。因此,需要根据实际情况权衡迭代次数和求解质量。
  4. 从图中可以看出,适应度值的变化趋势是稳定的,没有出现大的波动或跳跃,这表明优化算法具有较好的稳定性。

3.3基于粒子群算法优化BP神经网络的人类活动二分类结果

本文利用经过训练后的粒子群算法优化BP神经网络模型对人类活动进行分类,预测结果如图3-2所示:

图3-2 人类活动二分类结果

由图3-2可以看出粒子群算法优化BP神经网络模型由于数据量过大泛化效果收到影响,总体拟合效果较好。

4.粒子群算法优化BP神经网络模型评价

4.1模型评价指标

表2所列即是对粒子群算法优化BP神经网络模型进行评价的评价指标:

表2

评价指标

说明

计算公式

数值

accuracy

准确率

(TP + TN) / (TP + FP + TN + FN)

0.96656

precision

精确度

TP / (TP + FP)

0.89826

recall

召回率

TP / (TP + FN)

0.86773

F1

F1值

2 * Precision * Recall / (Precision + Recall)

0.88225

specificity

特异度

TN / (TN + FP)

0.86773

    经过对粒子群算法优化后的BP神经网络模型进行评价,从给出的评价指标来看,这个分类模型在准确率、精确度、召回率、F1值和特异度方面都展现出了相对不错的性能。准确率达到0.96656,表明模型在整体上能够正确识别出大部分样本,这在许多实际应用中已经是一个相当高的水平。精确度达到0.89826,说明模型在预测为正例的样本中,真正为正例的比例较高,即预测结果较为可靠。

    然而,尽管模型的整体表现不俗,但召回率和特异度相对较低,分别为0.86773。这意味着模型在识别所有正例样本和负例样本时,可能会漏掉一部分正例或误判一部分负例。

    F1值作为精确度和召回率的调和平均数,也反映了模型在精确性和完整性之间的权衡。在这个例子中,F1值为0.88225,接近0.9,表明模型在两者之间取得了相对较好的平衡。

    综上所述,这个分类模型在整体性能上表现良好,能够较为准确地识别出样本的类别。

4.2模型训练效果评价

    如图4-1、图4-2、图4-3分别是粒子群算法优化后的BP神经网络模型在训练集、验证集、测试集上的测试结果:

图4-1训练集测试效果

图4-2验证集测试效果

图4-3测试集测试效果

     从图4-1、图4-2、图4-3可以明显看出拟合值与真实值非常接近,说明粒子群算法优化后的BP神经网络模型对真实值的拟合能力极强。

标签:粒子,函数,分类,算法,神经网络,BP,神经元
From: https://blog.csdn.net/m0_65963495/article/details/139563044

相关文章

  • 基于粒子群算法优化BP神经网络的PID控制算法(Matlab代码实现)
     ......
  • bin下的bpl 与 redist下的bpl 区别
    由于我们是host+bpl开发,需要在delphi的安装目录寻找,我们需要的带的包,搜索发现很多包有2份,bin目录下有一份,redist目录下还有一份,通过下图可以看到这2份的大小是一致的,那么他们是一模一样的吗;我把他们复制出来,用在线MD5来看他们的MD5,发现这2份是一样的!......
  • C++ OpenCV 图像分类魔法:探索神奇的模型与代码
    ⭐️我叫忆_恒心,一名喜欢书写博客的研究生......
  • 基于51垃圾箱自动分类_加料机_快递物流分拣器系统设计
    **单片机设计介绍,基于51垃圾箱自动分类_加料机_快递物流分拣器系统设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于51单片机的垃圾箱自动分类、加料机及快递物流分拣器系统设计概要如下:一、系统组成核心控......
  • Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列
    %步骤1:准备数据%假设你已经准备好了股票价格的训练数据和测试数据%训练数据:train_data,包含n个训练样本,每个样本有m个时间步长的特征%训练标签:train_labels,包含n个训练样本的目标值(股票价格)%测试数据:test_data,包含k个测试样本,每个样本有m个时间步长的特征%测试标......
  • 机器学习笔记(3): 神经网络初步
    神经网络应该由若干神经元组成。前面的每一个神经元都会给到一个参数,将传递的所有参数看作一个向量\(\vecx\),那么此神经元的净输入为:\[z=x\omega+b\]其中\(\omega\)称为权重向量。这里认为\(x\)是行向量,而\(\omega\)是列向量。神经元还有一个激活函数\(f(\c......
  • 设计模式-设计模式分类
    概述23种设计模式,分为创建型模式、结构型模式和行为型模式。另外,近来这一清单又增加了一些类别,例如,并发型模式、线程池模式、JavaEE企业技术的多层应用程序上的模式等。一、创建型模式1.工厂方法模式(FactoryMethod)定义一个接口用于创建对象,但是让子类决定初始化哪......
  • JAVA计算机毕业设计基于的垃圾分类管理系统(附源码+springboot+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着城市化进程的加速和人口的增长,垃圾问题已经成为影响城市可持续发展的一大挑战。传统的垃圾处理方式不仅效率低下,而且往往对环境造成二次污染。近......
  • 【BP时序预测】基于鱼鹰算法OOA优化BP神经网络实现温度数据预测算法研究附matlab代码
    以下是一个大致的步骤和MATLAB代码框架:数据准备:准备用于训练和测试的温度数据集。初始化BP神经网络:定义神经网络的结构(如隐藏层的数量和每层的神经元数量)。定义适应度函数:这是优化算法的目标函数,它应该根据神经网络的预测性能(如均方误差MSE)来评估神经网络的权重和偏置。......
  • 神经网络-激活函数
    深度学习中的激活函数与神经网络初始化在深度学习中,激活函数和网络的初始化对于模型的性能和收敛性至关重要。本文将探讨不同类型的激活函数,并展示如何使用PyTorch进行神经网络参数的初始化。激活函数对比激活函数是神经网络中的关键组成部分,它们在神经元之间引入非线性,使得......