模式识别与机器学习
课程设计报告
题 目:
BP 算法的实现与改进
学生姓名:
学 号:
指导教师:
高琰
学 院:
自动化学院
专业班级:
2022 年 1 月
I
BP 算法的实现与改进
摘要
反向传播算法是一种计算单个权值变化引起网络性能变化值的较为简单的方法
[1]
。
它是学习神经网络和深度学习的基础。反向传播算法已在图像识别、边缘检测、模式记
忆、XOR 问题、对称性判别和 T-C 匹配等方面得到应用
[1]
,是 IT 技术人员一种强有
力的工具。
本文简单介绍了研究内容和数据集,对 BP 算法、BP 算法的实现,算法改进方案
和改进原理进行说明,给出改进前后的算法在 mnist 手写数据集和 Divorce Predictors
数据集上最好的训练结果,并对改进前后的算法在上述两个数据集上的训练过程和测试
结果进行比较。实验结果表明,本次课程设计中设计的改进前后的 BP 算法在上述两个
数据集上均有较高的识别率。
关键词:BP 算法 交叉熵 损失函数 二次代价 函数 权 重初始化 L2 规范化
II
目录
第 1 章 绪论 ..............................................................1
1.1 研究内容..........................................................1
1.2 数据集............................................................1
1.2.1 mnist 手写数据集.............................................1
1.2.2 Divorce Predictors 数据集....................................1
第 2 章 算法描述与实现 ....................................................2
2.1 BP 算法 ............................................................2
2.1.1 选择 BP 算法的原因 ...........................................2
2.1.2 BP 算法的基本原理............................................2
2.1.3 BP 算法的基本思想............................................2
2.1.4 BP 算法的具体步骤............................................3
2.2 标准 BP 算法(BPNetwork)的实现....................................3
2.3 标准 BP 算法的不足.................................................5
2.4 BP 算法的改进 .....................................................5
2.4.1 引�交叉熵代价函数 ..........................................5
2.4.2 权重初始化 ..................................................7
2.4.3 L2 规范化....................................................8
第 3 章 实验结果与分析 ...................................................10
3.1 参数设置.........................................................10
3.2 实验结果与分析...................................................10
3.2.1 在 mnist 手写数据集上 .......................................10
3.2.2 在 Divorce Predictors 数据集上 ..............................17
第 4 章 结论 .............................................................20
参考文献 .................................................................21
第 1 页 共 21 页
第 1 章 绪论
1.1 研究内容
在本次课程设计中,主要学习和研究了 BP 算法及其改进方案,并将学习
结果付诸实践,成功实现了 BPNetwork 和 BPNetworkPlus 类。这两个网络均在
两个数据集上取得了较高的准确率和 f1。
1.2 数据集
1.2.1 mnist 手写数据集
mnist 数据集为 70000 张 28×28 大小的手写数字灰度图像,标签为图像对
应的数字(0-9)。分为训练集和测试集,训练集大小为 60000,剩下的图像组
成测试集。
1.2.2 Divorce Predictors 数据集
数据集大小为 170,在训练前随机选取 130 个样本作为训练集,剩下的样
本作为测试集。共 54 个特征,对应 54 个问题(例如“如果我们中的一个人在
我们的讨论恶化时道歉,讨论结束?”),特征值代表参与者对相应问题的回答。
标签为 0 或 1,分别对应是否离婚。
第 2 页 共 21 页
第 2 章 算法描述与实现
2.1 BP 算法
2.1.1 选择 BP 算法的原因
(1)BP 算法是迄今最成功的神经网络学习方法。现实任务中使用神经网
络时,大多是在使用 BP 算法进行训练。BP 算法不仅可用于多层前馈神经网络,
还可用于其它类型的神经网络
[2]
。
(2)因为本人最近正在学习和探索 BP 算法和卷积神经网络,所以想趁这
次课程设计学以致用,在完成设计任务的同时巩固所学,加深自己对 BP 算法
和卷积神经网络的理解,同时提高自己的算法和编程能力。
(3)BP 算法的实现与改进恰好符合课程设计任务书选题 a 的要求。
2.1.2 BP 算法的基本原理
先给各权重和偏置赋初值然后开始训练。训练过程中轮流对网络施加各个训
练样本。当某个训练样本作用于神经网络输入端后,计算网络输出,这是一个信
号从输入到隐层再到输出的过程,称作前向过程。计算输出与该样本标签之间的
误差,根据误差对输出层权值的偏导数修正输出层的权值;把误差反向传递到倒
数第二层的各节点上,根据误差对这些节点权值的偏导数修正这些权值,依此类
推,直到把各层的权值都修正一次。对训练集中的其它样本进行同样的训练过程
直到在某一轮训练中总的误差水平达到预先设定的阈值,或者训练时间达到了预
定的上限
[3]
。
2.1.3 BP 算法的基本思想
BP 算法的基本思想是:学习过程由信号的正向传播与误差的反向传播两个
过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输
出层。若输出与期望输出不符,则转入误差的反向传播阶段。即将输出误差以某
种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得
各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向
传播与误差反向传播的各层权值调整过程,是周而复始地进行的。权值不断调整