目录
一、人工神经网络
1.1 人工神经网络结构
1.2 神经元/感知器
1.3 激活函数
1.3.1 sign函数
1.3.2 sigmoid函数(Logistic函数)
可以看出,sigmoid函数的导数只有在x=0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,造成梯度弥散,无法完成深层网络的训练。
1.3.3 tanh双曲正切函数
1.3.4 ReLU函数
1.4 分类
(1)拓扑结构划分
两层、三层、多层神经网络
(2)结点间的连接方式划分
层间连接、层内连接
(3)结点间的连接方向划分
前馈式神经网络BP(Back Propagation)、反馈式神经网络(Feedback)
二、BP人工神经网络
2.1 概述
BP人工神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一
BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程
2.2 处理过程
(1)初始化网络权值和处理单元的阈值
最简单的办法就是随机初始化,分别为wij,wjk,…,wkl和bij,bjk,…,bkl赋随机值。
(2)信号的前向传播,计算各处理单元的输出
按照网络连接以及组合函数和激活函数关系公式,逐层计算隐藏层处理单元和输出层处理单元的输入和输出。
(3)误差后向传播
对于训练数据xi,输出应为yl,与人工神经网络实际输出Ol存在差异。
定义系统的总输出误差为系统输出层各处理单元输出误差的平均值
(即各输出Ol与训练数据yl的差异),
是输出与其期望值的均方差:
需要根据差异的情况对系统内各连接的权值进行调整,使二者相等或逼近 yl。
(4)模型评估
(5)模型应用
2.3 例题
2.4 Matlab实现
2.4.1 一个简单程序
P=[0 1 2 3 4 5 6 7 8 9 10]; %输入
T=[0 1 2 3 4 3 2 1 2 3 4]; %期望输出
ff=newff(P,T,20); %建立一个BP网络,包含20个节点的隐含层
ff.trainParam.epochs=50; %最大训练次数
ff=train(ff,P,T); %训练
Y1=sim(ff,P); %仿真
plot(P,T,'o-');
2.4.2 newff——BP神经网络参数设置函数
功能:构建一个BP神经网络
(1)net=newff(P, T, S)
P: R*Q1矩阵,表示创建的神经网络中,输入层有R个神经元。每行对应一
个神经元输入数据的典型值,实际应用中常取其最大最小值。
T: SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型
值。
S: 标量或向量,用于指定隐藏层神经元个数,若隐藏层多于一层,则写成
行向量的形式。
(2)net=newff(P, T, S, TF, BTF, BLF, PF, IPF, OPF, DDF)
TFi: 第i层节点的传递函数,包括线性传递函数purelin, 正切S型传递函数
tansig,对数S型传递函数logsig,默认为“tansig”;
BTF: 训练函数,用于网络权值和阈值的调整,默认为基于莱文贝格-马夸
特共轭梯度法的训练函数trainlm,其他参数见下表所示;
一般在使用过程中设置这2个参数,后面5个参数采用系统默认参数。
BP神经网络训练函数
训练函数的意义 | MATLAB中相应的函数 |
梯度下降法 | traingd |
动量反传的梯度下降法 | traingdm |
动态自适应学习率的梯度下降法 | traingda |
带动量动态自适应学习率的梯度下降法 | traingdx |
弹性梯度下降法 | trainrp |
量化共轭梯度法 | traincg |
莱文贝格-马夸特共轭梯度法 | trainlm |
弗莱彻-里夫斯共轭梯度法 | traingf |
波拉克-里比埃共轭梯度法 | traingp |
鲍威尔-比尔共轭梯度法 | traingb |
2.4.3 train——BP神经网络训练函数
功能:用训练函数训练BP神经网络
[net, tr]=train(NET, P, T)
NET: 待训练网络;
P: 输入数据矩阵;
T: 期望输出数据矩阵;
net: 训练好的网络;
tr: 训练过程记录。
BP神经网络训练函数
训练参数名称及默认值 | 属性 |
net.trainParam.epochs=100 | 最大训练次数 |
net.trainParam.goal=0 | 训练目标 |
net.trainParam.show=25 | 两次显示之间的训练次数(无显示时取NAN) |
net.trainParam.time=inf | 最大训练时间(秒) |
net.trainParam.max_fail=5 | 确认失败的最大次数 |
net.trainParam.min_grad=1e-6 | 最小性能梯度 |
net.trainParam.lr=0.2 | 学习速率 |