数学建模 —— 人工神经网络(6)

目录

一、人工神经网络

[1.1 人工神经网络结构](#1.1 人工神经网络结构)

[1.2 神经元/感知器](#1.2 神经元/感知器)

[1.3 激活函数](#1.3 激活函数)

[1.3.1 sign函数](#1.3.1 sign函数)

[1.3.2 sigmoid函数(Logistic函数)](#1.3.2 sigmoid函数(Logistic函数))

[1.3.3 tanh双曲正切函数](#1.3.3 tanh双曲正切函数)

[1.3.4 ReLU函数](#1.3.4 ReLU函数)

[1.4 分类](#1.4 分类)

二、BP人工神经网络

[2.1 概述](#2.1 概述)

[2.2 处理过程](#2.2 处理过程)

[2.3 例题](#2.3 例题)

[2.4 Matlab实现](#2.4 Matlab实现)

[2.4.1 一个简单程序](#2.4.1 一个简单程序)

[2.4.2 newff------BP神经网络参数设置函数](#2.4.2 newff——BP神经网络参数设置函数)

[2.4.3 train------BP神经网络训练函数](#2.4.3 train——BP神经网络训练函数)


一、人工神经网络

1.1 人工神经网络结构

1.2 神经元/感知器

1.3 激活函数

1.3.1 sign函数

1.3.2 sigmoid函数(Logistic函数)


1.输出映射在 ( 0 , 1 ) 之间,输出 范围 有限
2.单调连续,易于求导
3.优化 效果 稳定
4.适合用于输出层感知器的激活函数 。

1.因为 sigmoid 函数具有的饱和 性,容易 产生梯度 消失,导致 训练 失效
2.输出 并不是以 0 为 中心

可以看出,sigmoid函数的导数只有在x=0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,造成梯度弥散,无法完成深层网络的训练。

1.3.3 tanh双曲正切函数


1.取值 范围为 [- 1 , 1]
2.在 特征相差明显时的应用效果 较好,在循环 训练过程中会不断扩大特征 效果
3.是 0 均值 的
4.应用中比 sigmoid 函数有更强的 应用性
5.同样 具有饱和 性,也 会造成梯度 消失

1.3.4 ReLU函数


1.用于 某些算法(如随机梯度下降) 时,收敛速度较快
2.当 x <0 时, ReLU 硬 饱和;当 x > 0 时,则 不存在饱和 问题
3.在 x > 0 时保持梯度不 衰减,从而 缓解梯度消失 问题。但随着训练推进,部分 输入会落入硬饱和 区,导致 对应权重无法 更新,导致神经元死亡
4.输出 均值也大于 0
5.偏移 现象和神经元死亡会共同影响网络的收敛性。

1.4 分类

(1)拓扑结构划分

两层、三层、多层神经网络

(2)结点间的连接方式划分

层间连接、层内连接

(3)结点间的连接方向划分

前馈式神经网络BP(Back Propagation)、反馈式神经网络(Feedback)

二、BP人工神经网络

2.1 概述

BP人工神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一

BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程

2.2 处理过程

(1)初始化网络权值和处理单元的阈值

最简单的办法就是随机初始化,分别为w**ijw**jk,...,w**klb**ijb**jk,...,b**kl赋随机值。

(2)信号的前向传播,计算各处理单元的输出

按照网络连接以及组合函数和激活函数关系公式,逐层计算隐藏层处理单元和输出层处理单元的输入和输出。

(3)误差后向传播

对于训练数据x**i,输出应为y**l,与人工神经网络实际输出O**l存在差异。

定义系统的总输出误差为系统输出层各处理单元输出误差的平均值

(即各输出O**l与训练数据y**l的差异),

是输出与其期望值的均方差:

需要根据差异的情况对系统内各连接的权值进行调整,使二者相等或逼近 y**l

(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 | 学习速率 |

相关推荐
Jaly_W1 分钟前
用于航空发动机故障诊断的深度分层排序网络
人工智能·深度学习·故障诊断·航空发动机
小嗷犬3 分钟前
【论文笔记】Cross-lingual few-shot sign language recognition
论文阅读·人工智能·多模态·少样本·手语翻译
夜幕龙10 分钟前
iDP3复现代码数据预处理全流程(二)——vis_dataset.py
人工智能·python·机器人
吃个糖糖27 分钟前
36 Opencv SURF 关键点检测
人工智能·opencv·计算机视觉
AI慧聚堂40 分钟前
自动化 + 人工智能:投标行业的未来是什么样的?
运维·人工智能·自动化
盛世隐者40 分钟前
【pytorch】循环神经网络
人工智能·pytorch
游是水里的游41 分钟前
【算法day19】回溯:分割与子集问题
算法
不想当程序猿_41 分钟前
【蓝桥杯每日一题】分糖果——DFS
c++·算法·蓝桥杯·深度优先
cdut_suye1 小时前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
南城花随雪。1 小时前
单片机:实现FFT快速傅里叶变换算法(附带源码)
单片机·嵌入式硬件·算法