当前课程知识点:智能控制 > 第六章 典型神经网络 > 6.2 BP神经网络 > 6.2.1.2 BP神经网络简介(中)
下面我们来看一下
BP算法的步骤
第一步 初始化
首先我们要确定它的结构
千万别忘了
BP神经网络的输入
它的维数和输出的维数
是由这个问题的本身来决定的
那么隐含层它是一层还是多层
那么隐含层有多少个神经元
这是根据经验来确定的
那么事先我们会确定
BP神经网络的一个结构
结构确定了
它的权值和阈值都可以确定
有哪些权值、阈值需要调整
那么在初始化的时候
首先要置所有的权值和阈值
为一个较小的随机数
范围为正 负1之间
有的时候可能会在0到1之间
这根据问题的不同而决定
事先要给定计算的精度要求
也就是最终我训练
误差要达到多少的时候才能停止下来
或者是最大学习次数
我学习多少次
这个值就会停止
这是初始化
那么有了初始化之后
初始参数之后
我们就可以进行第二步
提供训练样本
那么一般的在用BP神经网络
或者其他神经网络训练的时候
我们会事先采集一些样本
把这些样本
比如一百个样本
我前80个用来训练
后20个用来进行测试
训练干什么
我就把样本以及它期望的输出
告诉BP神经网络
我想建立这些训练样本
和它期望的输出这样一种
非线性映射关系
然后你就通过你的算法
进行调整它的权值和阈值
建立这样一个非线性映射关系
那么训练完之后
我就可以建立针对训练样本
它的输入到它的期望输出
这样一种非线性映射关系
BP神经网络
建立这个模型好不好用
我们可以把另外
比如说20个测试样本拿来进行测试
看BP神经网络的输出
和它的期望输出是不是一致的
这样可以测试它的算法的性能
所以第二步就是提供训练样本
当然训练样本还包括它的期望输出
因为它是BP神经网络
它是给定的期望输出
是一种有导师学习的方式
那么给定的输入向量就是x₁到xM
还有期望的目标输出向量d₁到dL
那么BP算法的第三步
就是进行定向计算
正向传播前馈计算
首先我给一个样本
给个样本
依次经过输入层、隐含层、输出层
加权求和
分别加权求和取函数
就能得到它的实际输出
那么那个pj表示是第p个
p个样本
j表示岩层的第j个节点
我们这里面把小p省略掉
就是(见公式)
i是从1到M
它有M个输入
Oi是表示隐含层的输入
实际上对应的就是输入层
Oi第i个输入
那么隐含层它的输入
经过激励函数f变换之后
得到它的输出Oj
那么这里面θj
表示的是它的阈值
隐含层第j个节点的阈值
正的θj的作用就是使激励函数
沿水平轴向右移
那么求导多大
(见公式)
这是一个结论
那么输出层第k个节点的总输入
那么这时候对输出层第k个节点来说
它就有q个输入
分别来自隐含层的这q个输出
Oj
j层1到q
那么加权求和之后
这个权值就是我们的j,k
得到了netk
再经过激励函数f变换
得到了输出层
第k个节点的实际网络输出Ok
等于f(netk)
那么得到了输出层
第k个节点的实际网络输出
其实也就得到了
基于样本
得到了当前各个输出层
各个节点的实际输出
我就可以对期望输出进行比较
这样的话就是BP神经网络第四步
BP网络的权值调整
也就是反向传播阶段
设每个样本p的输入输出模式对
的二次型误差函数定义为
(见公式)
也就是L个输出
分别对应的每一个输出的期望输出
和实际输出
它的偏差的平方和再除以二
除以二的目的就是为了
把平方求导之后把它抵消掉
这样得到了系统的平均误差
那么又有P个样本
所以p从1到P
求和就得到这样一个平均误差函数
那么其中P为样本模式对数
L为神经网络的输出层节点数
现在问题就是如何调整连接权值和阈值
使得这样代价函数误差E最小
为了简便省略了下标p
重写这个式子
这样就得到了误差函数E
它是关于期望输出dk和实际输出Ok的函数
那么BP神经网络的核心思想就是要
使得它的连接权值
我们的ij和我们的jk
按照误差函数
梯度变化的反方向进行调整
最终使得神经网络的实际输出
接近期望输出
那么输出层权值的修正公式定义为
(见公式)
这个负号表示是刚好跟它偏导数相反
也就是它梯度相反
η是个学习速率大于0的数
后面我们就可以定义误差函数
它是关于我们的jk的函数
但中间有中间变量
它是关于E
是关于netk的
再关于我们的jk的函数
这样的话E经过推导
最终就可以得出来
输出层的任意神经元权值的修正公式为
(见公式)
那么是后面这些参数都是知道的
我们都可以求出来
或者简称为Δpωjk
表示的是隐含层第j个节点
到输出层第k个节点
它们之间联系权值
我们的jk的增量
导入什么
(见公式)这样一个式子
实际上dk、Ok、η
这是事先都知道的
而隐含层节点权值的变化量
(见公式)
而这里面可以通过定义中间变量netj
可以把它求出来
而误差函数E首先是Oj的函数
然后Oj是netj的函数
通过这样中间变量定义
最终也可以得到
Δpωij
它实际上是等于
(见公式)
得到这样一个隐含层节点
还有输出层节点
Δpωjk的这样一个计算公式
这样最后就可以推导出
神经网络连接权值调整式子为
第t+1次训练的结果
ωij是在第t次迭代的基础上
我们在ij基础上叠加了
(见公式)
当前时刻的
就是第t次的权值减去上一次权值
这样偏差
这样的话是调整它的连接权值
那边t+1表示第t+1次迭代
α为平滑因子
是0到1之间的一个平滑因子
这样经过反向传播之后
它是基于梯度进行反向传播的
进入了第五步
我们要判断神经网络误差是否满足要求
当神经网络的误差
达到了预先设定的精度
或者是学习次数大于设定的最大次数
就结束算法
否则的话选取下一个样本
训练样本
以及对应的期望输出
返回到第二步
进入下一轮学习
继续调整权值和阈值
直到满足要求
-开篇
--开篇
-1.1课程考试方式
-1.2 数据、信息、知识与智能
-1.3传统控制面临的挑战
-1.4 控制科学发展过程
-1.5 智能控制的多元论
--1.5
-1.6 控制策略的渗透与融合
--1.6
-1.7 智能控制与传统控制的联系与区别
--1.7
-1.8 智能控制的类型之分级递阶智能控制系统
--1.8
-1.9 智能控制的类型之专家控制系统
--1.9
-1.10 智能控制的类型之模糊控制系统
--1.10
-1.11 智能控制的类型之神经网络控制系统,智能控制的类型之基于规则的仿人智能控制系统,集成智能控制系统,组合智能控制
--1.11
-1.12智能控制系统的类型之基于规则的仿人智能控制系统,集成智能控制系统,组合智能控制
--1.12
-1.13本章小结
--1.13
-第一章测试
-2.1基于搜索的问题求解
-- 2.1.7 均一代价搜索
-- 2.1.10 A星算法
-2.2 专家系统简介
- 2.3 专家PID
-第二章测试
-3.1 模糊控制概述
-3.2 模糊集合
-3.3 隶属函数
--3.3隶属函数.
-3.4 模糊关系及其运算
-第三章测试
- 4.1 模糊自适应整定PID控制原理
-4.2 基于FF的模糊PID控制试验验证
-第四章测试
- 5.1 神经网络简介
- 5.2 神经网络的发展简史
-5.3 神经网络的基本概念
- 5.4 神经网络的分类
-5.5 神经网络的学习算法、基本特征和研究领域
-第五章测试
-6.1 感知器
--6.1.2.1 感知器应用实例分析(实现逻辑运算与或非)
- 6.2 BP神经网络
--6.2.2.1 BP神经网络应用实例分析之一:逻辑运算异或实现
--6.2.2.2 BP神经网络应用实例分析之二:非线性函数拟合
-第六章测试
- 7.1 什么是遗传算法
-7.2 遗传算法的特点
-7.3 遗传算法的基本操作之复制
-7.4 遗传算法的基本操作之交叉与变异
-第七章测试
-8.1 遗传编程工作原理
-8.2 遗传编程基本操作之复制
-8.3 遗传编程基本操作之交换和突变
- 8.4 遗传编程的工作步骤及实例分析
-第八章测试
-期末测试




